Skip to content
Back to all articles
GEO
llms.txt
AI Search
Shopify
agents.md

llms.txt on Shopify Is Already Built: agents.md, UCP, and Being Citable by AI

Shopify now serves llms.txt, llms-full.txt and agents.md for every store. What each file is, how to override them, and what GEO work is actually left to do.

August 25, 2026 12 min readBy Matheus Abrahão

The advice changed under everyone's feet

Four months ago I wrote that you should hand-author an llms.txt for your Shopify store and put a longer version at /llms-full.txt. That was correct advice at the time and it is now mostly obsolete, because Shopify ships this natively.

If you run a Shopify store, open yourdomain.com/agents.md right now. There is a file there. You did not put it there.

This post is what those files are, what overrides what, and — the part that matters commercially — what GEO work is actually left once the platform has done the easy part.

Three URLs, one document

Shopify's canonical agent-facing document is /agents.md. It describes the store to AI agents and shopping assistants: how to discover the store's commerce capabilities, how to browse it read-only, what the published policies are, and how to transact.

/llms.txt and /llms-full.txt are alternate URLs for the same document. By default they mirror /agents.md, so an agent or crawler that requests either of the community-convention filenames still finds a usable description of the store.

Shopify manages all three by default, for every store, and keeps them aligned with the store's actual commerce configuration. No theme file exists for them unless you create one.

Three details that matter operationally:

  • These files are served at the bare primary domain, without a locale or Shopify Markets subfolder prefix. There is no localized counterpart. One store, one agent document.
  • The default content stays in sync as your commerce configuration changes. A hand-maintained file does not.
  • The Shopify-generated file deliberately omits merchant contact details, because it is broadly cached and served to every agent that asks.

The override chain, and why you probably should not use it

You can take control with theme templates, and the lookup order is specific:

For /agents.md: agents.md.liquid if present, otherwise the Shopify-generated default.

For /llms.txt: llms.txt.liquid, then agents.md.liquid, then the Shopify default.

For /llms-full.txt: llms-full.txt.liquid, then agents.md.liquid, then the Shopify default.

So agents.md.liquid is the lever that changes all three at once, and a dedicated llms.txt.liquid only diverges that one URL. None of these templates ship in any theme by default — you create them in the templates folder the same way you create robots.txt.liquid.

Shopify's own guidance is to use the managed default unless you have an advanced requirement, and I agree, for a reason that has nothing to do with laziness: the moment you add the template, you own keeping it current. The managed file tracks Shopify's agent-discovery capabilities as they ship. A hand-edited file is a snapshot of what was true on the day someone wrote it, and agent discovery is moving faster right now than any other part of the platform.

If you do override it, use the agents object rather than hardcoding URLs, so the values stay in sync:

# Agent Instructions — {{ agents.store_name }}

This document describes how AI agents can interact with the online store at {{ agents.store_url }}.

Commerce Protocol (UCP)

  • Discovery: GET {{ agents.ucp_discovery_url }}
  • MCP endpoint: POST {{ agents.mcp_endpoint_url }}

Read-only browsing

  • All products: GET /collections/all
  • Sitemap: {{ agents.sitemap_url }}

Pricing and availability are returned in {{ agents.currency }}. ```

And take Shopify's caution seriously: do not output private merchant data — contact emails, phone numbers — into that file. It is cached broadly and served to everybody.

What is actually behind those endpoints

The agent document is a pointer. What it points at is the interesting part.

UCP — the Universal Commerce Protocol — is the discovery and transaction layer. agents.ucp_discovery_url is where an agent learns what your store can do; agents.mcp_endpoint_url is where it acts.

Storefront Catalog MCP lets an agent search and discover products from a single merchant's catalogue. This is what a store-scoped shopping assistant uses. Global Catalog MCP does the same across the whole Shopify ecosystem, clustering offers from multiple merchants by a universal product ID — that is comparison shopping, and your product is either in that cluster with good data or it is in it with bad data.

WebMCP is the one people have not noticed yet. Shopify provides WebMCP tools on every Liquid storefront with nothing to install. When a shopper brings an agent to your store in their browser, the agent can call structured tools to search your catalogue, manage the cart and navigate, instead of scraping your HTML and simulating clicks. Cart tools go through the same standard storefront actions apps use, so if your theme opens a cart drawer on add-to-cart, the agent triggers that too. Agent support is currently limited to Chromium-based browsers, so this is early — but it is live, not announced.

There is also a sitemap_agentic_discovery.xml sitting inside the sitemap index on stores today, alongside the product, collection, page and blog sitemaps.

So what is left to do?

This is the honest part, and it is the reason GEO work is still worth paying for.

The platform now handles discovery. It publishes the files, the endpoints and the protocol. It cannot handle substance. Every one of those surfaces reads your product data, your policies and your content, and returns exactly what is in them.

The work that is left:

1. Make the catalogue answerable. An agent asked "does this brand ship to Canada, and what is the return window" reads your policy pages. An agent asked "which of these is waterproof" reads product metafields and body copy. If the attribute a customer would filter on does not exist as structured data on your product, no protocol invents it. This is the same catalogue hygiene work that feeds Google Shopping and on-site filtering — normalised product types, populated metafields, real body copy — which is why bulk catalogue operations is the unglamorous foundation of AI visibility.

2. Do not block the crawlers. Discovery protocols are for agents acting in a session. Being cited in a model's answer still depends on the model's training and retrieval crawlers being allowed in. Plenty of stores block them without knowing it, through an inherited robots.txt customisation. If you want to be cited, allow them explicitly, and do it inside the robots.txt.liquid template so you inherit Shopify's maintained default rules rather than freezing a snapshot:

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot Allow: /

User-agent: PerplexityBot Allow: /

User-agent: Google-Extended Allow: / ```

This does not make you appear. It removes a barrier to appearing. Also: this is a business decision, not only a technical one. Allowing training crawlers is a choice about whether your content contributes to models. Make it deliberately.

3. Keep prices and availability true at the source. Agents read /products/{handle}.json and the catalogue endpoints, which do not pass through your theme. A price your theme hides is still in the JSON. If you run trade pricing or logged-out price gating, test your storefront logged out, including the JSON endpoints, before you assume anything is private.

4. Structured data still matters. Merchant listing markup, ProductGroup for variants, Organization for the entity record. The protocol layer is for agents that already know where you are. Structured data is for the ones that do not.

5. Measure the only way you can. There is no click for a citation. What you can watch: branded query volume in Search Console as a leading indicator, no-referrer direct traffic, and a standing fortnightly test where you ask the major assistants the five questions your customers actually ask and read what comes back. If you are not cited, the fix is almost never the markup. It is that the answer is not on your site in plain language anywhere.

The reframe

For two years, "AI SEO" on Shopify meant writing a text file. Shopify has now written the text file. What it has not done, and cannot do, is make your catalogue worth quoting.

That was always the actual job. The file was just the part that was easy to sell.


Related services

Making a store legible to machines is Shopify SEO expert work plus catalog operations — structured product data is what every one of these surfaces reads. Theme-level implementation sits under Shopify expert development. Related reading: robots.txt and sitemap.xml on Shopify and the earlier, now partly superseded technical SEO for AI search.


I get Shopify stores structurally ready to be found and cited by machines, which is mostly a data problem. See [Shopify SEO expert services](/shopify-seo-expert) or [hire a Shopify developer](/hire-shopify-developer).

Direct: [WhatsApp +55 11 98851-2788](https://wa.me/5511988512788) · [contato.matheusabrahao@gmail.com](mailto:contato.matheusabrahao@gmail.com)

Need a senior engineer who thinks like an operator?

I take on a small number of Shopify operations and senior engineering engagements each quarter. If your store needs catalog hygiene, technical SEO, performance, or marketing automation done right — let's talk.

Continue reading

Vamos conversar