Shopify generates an agents.md for every store and serves it at yourstore.com/agents.md. The trouble is the default reads almost identically to every other store and points shopping agents at Shopify's own rails on shop.app instead of telling them what makes you worth picking. We covered why that matters in the agents.md pillar and why an identical file is invisible in agentic commerce.
This is the how-to. Two steps, about two minutes, and you never touch theme code again after the first paste.

Why it takes a connector and not just an app
Worth understanding before you start, because it explains the one paste. Shopify serves /agents.md natively from the root of your domain. An app can't redirect that path, and it can't serve the file through an app proxy. The only supported way to override the generated file is a theme template at templates/agents.md.liquid.
So a customization has to live in your theme. The usual approach is to write the whole file by hand into that template, which means every catalog change is another theme edit, and the moment you uninstall or switch themes the work is orphaned.
AgentReady splits the file from the content. You paste a small generic connector into the template once. It never changes. The actual brand content gets written into a shop metafield, agentready.agents_md, that the app keeps current. The template just reads that metafield. No content lives in your theme, so nothing drifts and nothing gets stranded.
Step 1: Paste the connector (once)
In your Shopify admin, go to Online Store > Themes > Edit code. Under Templates, click Add a new template and pick agents.md from the type list. Shopify creates templates/agents.md.liquid with some starter content.

Replace the starter content with this connector, then Save:
{%- assign agents_md = shop.metafields.agentready.agents_md.value -%}
{%- if agents_md != blank -%}
{{ agents_md }}
{%- else -%}
# Agent Instructions — {{ agents.store_name }}
This store supports the Universal Commerce Protocol (UCP) for AI shopping agents.
- UCP discovery: GET {{ agents.ucp_discovery_url }}
- MCP endpoint: POST {{ agents.mcp_endpoint_url }}
- Sitemap: {{ agents.sitemap_url }}
{%- endif -%}
That is the whole template, and it is the last time you edit theme code. The logic is simple: if AgentReady has published content to the metafield, serve it. If not, fall back to a safe default that still advertises your UCP and MCP endpoints so agents can transact either way.
You don't have to retype it. In AgentReady, open Settings > Agent instructions (agents.md) and copy the connector straight from the card with the Copy button.


Step 2: Publish your content from AgentReady
Back in AgentReady, in Settings > Agent instructions (agents.md), click Publish agents.md. It reads your live catalog, collections, policies, and FAQs, generates the brand content, and writes it to the agentready.agents_md metafield. The connector you pasted picks it up immediately.

Re-publish whenever your store changes. New flagship products, a revised return policy, a seasonal collection: click publish and the metafield updates. The theme template stays untouched because it only ever reads the metafield.
Verify it
Open https://yourstore.com/agents.md in a browser. You should see your brand content, not the generic default. Because a single template overrides all three paths, the same file now serves /llms.txt and /llms-full.txt too, so check one and you've confirmed all three.

If you'd rather see the state of your file before you start, the free AI-readiness checker fetches your store the way an agent does and reports whether your agents.md is Distinctive, Generic-default, or Missing.
Nothing of the app's stays in your theme
This is the part most customizations get wrong. When you hand-edit a theme template with your content, that content is permanent: it sits in your theme until you remember to remove it, and if you switch themes it doesn't come along. Uninstall the tool that helped you write it and the code just stays there, slowly going stale.
The connector approach is built to clean itself up. The only thing in your theme is six lines of generic Liquid that reference a metafield. The content lives in the metafield, and AgentReady's app/uninstalled webhook purges agentready.agents_md automatically the moment you remove the app. Your /agents.md falls back to the connector's built-in default, which still points agents at your UCP and MCP endpoints. No dead content, no orphaned brand copy, no manual cleanup.
You get a /agents.md that describes what makes your store the right answer instead of the generic default every store ships, the content stays current as your catalog moves, and if you ever walk away, the app takes its content with it.
Run the checker to see which state your file is in, then open AgentReady and publish in two minutes.

Comments
Every comment here comes from a verified email. Write yours, confirm from your inbox, and it's live.
Loading comments…