Guides · July 15, 2023
Making Your Product Catalog Agent-Readable (Schema, Feeds, MCP)
An agent-readable catalog means clean Product/Offer schema, a well-formed product feed, and a machine-callable interface like MCP — so shopping agents and AI answer engines can find, price, and recommend your products correctly.
By Polo Themes
Making a product catalog agent-readable means the same three things whether the "agent" is Google's AI Overview, a shopping assistant inside ChatGPT, or a future autonomous buying agent: structured Product/Offer schema markup on every product page, a clean, well-formed product feed, and — increasingly — a machine-callable interface such as an MCP server that lets an agent query your catalog directly instead of scraping HTML. Get those three layers right and your products become legible to both search crawlers and the new generation of AI agents; skip them and you are invisible to a growing share of how people shop.
This guide is written for developers, designers, and store owners building or rebuilding a commerce catalog in 2026, whether on Shopify, a headless stack, or a custom Next.js storefront. It covers what "agent-readable" actually requires at each layer, where teams get it wrong, and how to sequence the work so you are not rebuilding your data model twice.
Why "Agent-Readable" Is Now a Real Requirement
For most of the last decade, "make your catalog machine-readable" meant one thing: schema.org markup for Google's rich results. That is still true, but the audience for structured product data has expanded. AI answer engines summarize products directly in chat interfaces. Shopping-focused agents compare prices and specs across sites before a human ever clicks through. And an emerging class of tool-calling agents — built on protocols like MCP (Model Context Protocol) — expects to query a store's inventory, pricing, and availability the way it would call any other API, not scrape a rendered page and hope the DOM holds still.
The practical effect is that "agent-readable" now sits on top of "SEO-readable," not instead of it. A well-structured catalog satisfies both audiences with mostly the same work, because the underlying discipline is identical: unambiguous entities, consistent identifiers, and data that means the same thing wherever it appears. The stores that will show up correctly in agent-mediated shopping are the ones that already treat their product data as a real, versioned data model — not as strings baked into a template.
Layer 1: Structured Schema on Every Product Page
Schema.org JSON-LD is still the foundation, and it is the layer with the least excuse for being wrong, since the spec is stable and the tooling to validate it is free. Every product detail page should emit a Product node with, at minimum: a name, image, description, and SKU (plus GTIN or MPN where you have them), a brand, and an offers node (or an AggregateOffer for variant ranges) with price, price currency, availability, and a URL that resolves to the canonical product page.
What to get right in the schema itself
- Use real availability values. InStock, OutOfStock, PreOrder, and BackOrder are the ones agents actually branch on — do not default everything to InStock because it is the happy path in your template.
- Encode variants correctly. A product with color and size options is one Product node with multiple offers, or a ProductGroup with hasVariant, not a separate untagged page per variant with duplicate content.
- Add AggregateRating and Review markup only when the data is real. Fabricated or stale review markup is one of the fastest ways to get structured-data manual actions from Google, and it degrades trust with any agent cross-checking your claims against a review aggregator.
- Keep the JSON-LD in sync with the rendered page. Agents and crawlers increasingly compare visible price and availability against the markup; a mismatch — stale JSON-LD after a price change — reads as either a bug or an attempt to game the system, and gets treated accordingly.
- Mark up the organization and site structure too. Organization, WebSite, and BreadcrumbList schema give an agent the surrounding context — who is selling this, what section of the catalog it lives in — that a bare Product node cannot convey on its own.
If you are building on Shopify's OS 2.0 theme architecture, most of this can live in a single product-template snippet, generated from the same Liquid variables that render the visible price and variant picker — so the two can never silently drift apart. If you are on a headless Next.js storefront, the equivalent is a small server-side JSON-LD builder function fed by the same query that renders the page, for the same reason: one source of truth, two output formats.
Layer 2: A Clean, Well-Formed Product Feed
Schema on individual pages tells an agent about one product when it lands there. A feed — Google Merchant Center's product feed format, or an equivalent structured export — tells an agent, or a shopping surface, about your entire catalog at once, without crawling every URL. This matters more as agents move toward bulk retrieval: an assistant comparing "waterproof hiking boots under $150 across five retailers" is far more likely to pull from a feed than to crawl five sites' sitemaps in real time.
What a feed needs to actually be usable
- A stable, unique identifier per product (and per variant, if you feed variants separately) that does not change across re-exports — agents and ad platforms both use this as the join key.
- Titles and descriptions that match what is on the live page, written for humans first — keyword-stuffed feed titles read badly to both ranking algorithms and any agent summarizing the product for a shopper.
- Correct GTIN or MPN values, or an explicit "identifier does not exist" flag when a product genuinely has none — leaving the field blank rather than declaring its absence is a common feed-quality rejection reason.
- Price and availability that are refreshed on every meaningful change, not on a weekly batch job — an agent that recommends an out-of-stock item because your feed is a week stale is an agent that stops trusting your feed.
- Category mapping to a recognized taxonomy — Google's product taxonomy is the de facto standard well beyond Google's own surfaces — so an agent can reason about "is this the same kind of thing as X" without parsing your internal category names.
The underlying principle is the same one that makes a catalog SEO-friendly: normalize once, publish everywhere. If your product data model already produces clean schema.org markup, generating a feed from the same model is mostly a formatting exercise — a different serialization of data you already trust, not a second, hand-maintained spreadsheet that quietly diverges from the live site within a quarter.
Layer 3: A Machine-Callable Interface (MCP and Beyond)
The newest layer, and the one most catalogs have not built yet, is a direct, callable interface for agents — as opposed to structured data an agent has to discover and parse out of HTML or a feed file. The Model Context Protocol, or MCP, is the emerging standard here: it defines a way for an AI agent to discover a server's available tools and call them with typed arguments, getting typed, structured results back. Applied to commerce, an MCP server sitting in front of your catalog could expose tools like "search products," "get product by id," and "check availability" — callable directly by an agent, with no scraping or guessing involved.
This is genuinely useful, and it is also easy to over-build before you need it. A few grounded observations for teams evaluating it in 2026:
- MCP is a protocol, not a product decision. Standing up an MCP server is straightforward if your catalog already lives behind a real API — Medusa's module architecture, Shopify's Storefront or Admin APIs, or a headless commerce backend all qualify — you are mostly writing a thin adapter layer, not a new data model.
- Read tools first, write tools with real caution. Exposing product search and product lookup to an agent is low-risk; exposing anything that places an order, applies a discount, or modifies inventory needs the same authentication, rate-limiting, and audit-logging rigor you would demand of any other write-capable API — arguably more, since the caller is non-deterministic software acting on a user's behalf.
- It rests on the same clean data as layers one and two. An MCP tool that returns your product data is only as trustworthy as the underlying model. If your schema markup and feed are inconsistent with what your database actually holds, an MCP server just gives an agent a faster way to retrieve the same inconsistency.
- A simple, well-maintained llms.txt-style discovery file is a reasonable interim step. Before building a full MCP server, publishing a clear, current summary of what your store sells, how categories are organized, and where the canonical feed lives gives both AI crawlers and human researchers a faster, more reliable entry point than inferring structure from your sitemap.
A Practical Sequencing Plan
Teams tend to over-index on whichever layer they read about most recently. In practice the dependency runs in one direction, so it is worth sequencing the work rather than parallelizing it.
- Fix the data model first. Every layer above depends on one canonical, versioned representation of a product — id, price, availability, variants, images, category. If that lives in three places (a CMS, a theme template, and a spreadsheet someone edits for ads), stop and consolidate before writing any schema or feed code.
- Ship correct schema.org markup on every product, category, and organization page. This is the highest-leverage, lowest-effort layer, and it is a prerequisite for rich results, AI Overview citations, and most third-party feed validators.
- Generate your product feed from the same source as your schema markup, not by hand. Validate it against Google Merchant Center's diagnostics even if you do not run Shopping ads — the validation catches the exact data-quality issues that will also confuse an agent.
- Only then evaluate an MCP or similar callable interface, scoped to read-only catalog queries initially. Treat it as an API product with its own versioning and access control, not a weekend integration.
Where the Storefront Layer Fits In
None of the three layers above are template or theme decisions — they live in your data model and your server. But the storefront still matters, because a product page's visible structure and its structured data should describe the same thing. A product template with a genuinely single-source gallery, clearly separated option groups, and a predictable buy-box layout makes it far easier to generate accurate Product and Offer schema from the same component tree that renders the page, instead of maintaining a parallel, hand-written JSON-LD block that drifts. If you are evaluating storefront UI as part of this work, our Figma UI kits are built with that kind of clean, componentized product-page structure in mind, and our Shopify themes follow the same discipline for merchants shipping on Shopify today. We are also building toward more explicitly headless- and agent-native assets — this guide reflects that direction, even though today our catalog is Figma kits and Shopify themes rather than a packaged MCP server.
Common Mistakes That Break Agent Readability
- Client-side-only rendering with no server-rendered fallback. An agent or crawler that only sees an empty shell before JavaScript executes gets nothing — server-render, or statically generate, the product page content and schema, and hydrate on top of it.
- Price and availability logic duplicated between the page and the feed or schema generator. The moment there are two code paths, they will disagree after the next sale or restock.
- Canonical URL confusion, especially with faceted navigation or UTM-heavy category pages — an agent following a canonical link to a filtered, empty variant of your catalog loses trust fast.
- Treating structured data as a one-time SEO task. Catalogs change; schema and feed generation need to be part of the same deploy pipeline as the product data itself, not a script someone ran once two years ago.
Frequently Asked Questions
Do I need an MCP server if I already have good schema markup and a clean feed?
Not urgently. Schema markup and a clean feed cover the vast majority of how AI answer engines and shopping surfaces discover and cite your products today. An MCP-style interface becomes valuable once autonomous or semi-autonomous agents need to query your live catalog directly — worth building when you see real demand for it, not before your data foundation is solid.
Is schema.org markup enough, or do I also need a product feed?
They serve different discovery patterns. Schema markup helps a crawler or agent understand one page it has already reached. A feed lets a platform or agent retrieve your whole catalog in bulk without visiting every URL. Serious catalogs need both, generated from the same source data.
Does this apply to Shopify stores, or only headless or custom builds?
It applies to both. Shopify themes can and should emit correct product schema and feed Merchant Center from the same underlying product data; headless builds on Next.js or a framework like Medusa have more flexibility in how they generate schema and expose an API, but the same three-layer model applies either way.
What is the single highest-leverage fix if I can only do one thing?
Consolidate your product data into one canonical source and generate correct, current Product and Offer JSON-LD from it on every product page. That single change fixes the most common agent-readability failures — stale or missing availability, mismatched prices, and unlabeled variants — and it is the foundation every other layer depends on.