{"stages":[{"id":"discover","name":"Discover","weight":25,"question":"Can agents reach the store and find its catalogue?","checks":[{"id":"agent-access","name":"Storefront answers non-browser clients","importance":"core","weight":5,"why":"Most shopping agents fetch pages directly instead of driving a full browser. If the storefront answers them with an error or a bot challenge, the journey ends before it starts.","fix":"Let well-behaved automated clients load public pages. Tune bot protection to challenge abusive traffic patterns rather than every client that is not a browser, and allow verified AI agents.","spec":null},{"id":"robots-shopper-agents","name":"robots.txt lets shopper agents in","importance":"core","weight":5,"why":"Agents that browse on a shopper’s behalf, and the AI search crawlers that feed their answers, honour robots.txt. A blanket block removes the store from agent-led shopping.","fix":"Allow user-triggered agents (ChatGPT-User, Claude-User, Perplexity-User, Google-Agent, Amzn-User) and AI search and shopping crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot, Storebot-Google) to reach product and category pages. You can still block model-training crawlers separately.","spec":"https://www.rfc-editor.org/rfc/rfc9309"},{"id":"sitemap","name":"Sitemap lists product pages","importance":"core","weight":4,"why":"A sitemap is the cheapest way for an agent to learn what you sell without crawling every category page.","fix":"Publish an XML sitemap that includes every product URL, keep it current, and reference it from robots.txt with a Sitemap line.","spec":"https://www.sitemaps.org/protocol.html"},{"id":"site-identity","name":"Homepage identifies the store","importance":"important","weight":3,"why":"Agents use the title, description, canonical URL and language to decide whether this is the right store and market before reading further.","fix":"Give the homepage a descriptive title, a meta description, a canonical link, a lang attribute on the html element and Open Graph tags.","spec":null},{"id":"site-search","name":"Search is discoverable","importance":"important","weight":2,"why":"Shoppers ask agents for specific things. An agent that knows your search URL can query the catalogue directly instead of clicking through navigation.","fix":"Declare your search URL template with a schema.org WebSite SearchAction in JSON-LD, or an OpenSearch description, and make sure search results render without JavaScript.","spec":"https://schema.org/SearchAction"},{"id":"llms-txt","name":"llms.txt guide for agents","importance":"important","weight":2,"why":"llms.txt gives agents a short, curated map of the store: what you sell, where the catalogue, policies and support pages are, and which interfaces exist.","fix":"Publish /llms.txt in Markdown: a one-line summary of the store, then links to key categories, shipping and returns policies, contact details and any agent interfaces.","spec":"https://llmstxt.org/"},{"id":"markdown-negotiation","name":"Markdown on request","importance":"emerging","weight":1,"why":"Agents pay per token. A Markdown version of a page carries the same facts as the HTML in a fraction of the size, which makes agents faster and more accurate.","fix":"Return Markdown when a request sends Accept: text/markdown. Several CDNs can convert HTML to Markdown at the edge.","spec":null},{"id":"content-signals","name":"AI usage preferences declared","importance":"emerging","weight":1,"why":"Stating what AI systems may do with your content removes guesswork for agents that want to comply, and separates \"shop here\" from \"train on this\".","fix":"Name AI agents explicitly in robots.txt, and consider Content-Signal lines (search, ai-input, ai-train) to state how your content may be used.","spec":"https://contentsignals.org/"}]},{"id":"understand","name":"Understand","weight":30,"question":"Can agents read a product without a browser?","checks":[{"id":"product-page-found","name":"A product page can be found","importance":"core","weight":4,"why":"Everything else depends on an agent reaching a product. If we cannot get from the homepage, sitemap or catalogue to a product page, neither can an agent without a browser.","fix":"Link products with plain <a href> links in server-rendered HTML and list them in the sitemap. Avoid navigation that only exists after JavaScript runs.","spec":null},{"id":"product-ssr","name":"Product content without JavaScript","importance":"core","weight":5,"why":"Many agents read the raw HTML and never run scripts. If the name, description and price only appear after JavaScript runs, those agents see an empty page.","fix":"Server-render the product name in an H1 along with the description and price, so they are present in the initial HTML response.","spec":null},{"id":"product-jsonld","name":"Product structured data","importance":"core","weight":5,"why":"schema.org Product markup is how agents, AI search and merchant listings read a product reliably. Without it they scrape and guess.","fix":"Add schema.org Product JSON-LD to every product page with name, description, image and offers. Use ProductGroup with hasVariant for products with variants.","spec":"https://developers.google.com/search/docs/appearance/structured-data/product"},{"id":"product-identifiers","name":"Product identifiers and brand","importance":"important","weight":3,"why":"Agents compare the same product across stores. GTIN, MPN, SKU and brand are what let them match your product to the one the shopper asked for.","fix":"Include brand, sku and a global identifier (gtin, or mpn where no GTIN exists) in the Product markup, for each variant.","spec":"https://schema.org/Product"},{"id":"product-images","name":"Product images are declared","importance":"important","weight":2,"why":"Agents show shoppers what they are about to buy. Image URLs in markup and Open Graph tags let them do that without parsing the page layout.","fix":"List product image URLs in the Product markup and set og:image on product pages.","spec":null},{"id":"product-breadcrumbs","name":"Category context","importance":"important","weight":2,"why":"Knowing where a product sits in the catalogue helps agents judge relevance and find alternatives when the first match is out of stock.","fix":"Add BreadcrumbList JSON-LD to product pages, or set the category property on the Product.","spec":"https://schema.org/BreadcrumbList"}]},{"id":"evaluate","name":"Evaluate","weight":20,"question":"Can agents compare the offer and trust the merchant?","checks":[{"id":"offer-price","name":"Price and currency","importance":"core","weight":5,"why":"An agent cannot recommend or buy a product whose price it has to guess. Price and currency in markup are unambiguous; text scraped from the page is not.","fix":"Add an Offer to the Product markup with price and priceCurrency (ISO 4217). Keep it in step with the price shoppers see.","spec":"https://schema.org/Offer"},{"id":"offer-availability","name":"Availability","importance":"core","weight":4,"why":"Agents filter out products they cannot buy. Without a stock signal they either skip you or send a shopper to a dead end.","fix":"Set availability on each Offer using schema.org values such as https://schema.org/InStock, OutOfStock or PreOrder.","spec":"https://schema.org/ItemAvailability"},{"id":"offer-shipping","name":"Shipping cost and delivery time","importance":"important","weight":3,"why":"Total cost and arrival date decide most purchases. Agents that cannot read them will prefer a store where they can.","fix":"Add shippingDetails (OfferShippingDetails) to each Offer with shippingRate, shippingDestination and deliveryTime.","spec":"https://schema.org/OfferShippingDetails"},{"id":"offer-returns","name":"Return policy","importance":"important","weight":3,"why":"Shoppers delegate more readily when the agent can confirm they can send things back. A return policy in markup answers that without reading legal pages.","fix":"Add hasMerchantReturnPolicy (MerchantReturnPolicy) to each Offer or to your Organization markup, with merchantReturnDays, returnPolicyCategory and returnFees.","spec":"https://schema.org/MerchantReturnPolicy"},{"id":"ratings","name":"Ratings and reviews","importance":"important","weight":2,"why":"Agents use ratings to rank options and to justify a recommendation to the shopper.","fix":"Add aggregateRating (ratingValue and reviewCount) to the Product markup, based on reviews shown on the page.","spec":"https://schema.org/AggregateRating"},{"id":"merchant-identity","name":"Merchant identity","importance":"important","weight":3,"why":"Before an agent spends a shopper’s money it checks who the seller is. Organization markup states the legal name, logo, contact points and official profiles.","fix":"Add Organization (or OnlineStore) JSON-LD to the homepage with name, url, logo, contactPoint and sameAs links.","spec":"https://developers.google.com/search/docs/appearance/structured-data/organization"}]},{"id":"transact","name":"Transact","weight":25,"question":"Can agents search, build a cart and check out?","checks":[{"id":"catalogue-data","name":"Catalogue available as data","importance":"core","weight":4,"why":"Agents work best with data, not pages. A public catalogue endpoint or feed lets them search and compare your range in one request.","fix":"Expose the catalogue through an agent-facing interface: a product search API described by OpenAPI, a commerce MCP server, or a product feed linked from the storefront.","spec":null},{"id":"mcp-server","name":"MCP server for agents","importance":"core","weight":5,"why":"The Model Context Protocol is how AI assistants connect to tools. A commerce MCP server lets an agent search, check stock and manage a cart through defined operations instead of scraping pages.","fix":"Stand up an MCP server for the storefront over Streamable HTTP and make it discoverable: list it in /.well-known/ai-catalog.json, declare it as a transport in your UCP profile, or serve it at /mcp.","spec":"https://modelcontextprotocol.io/specification/2026-07-28"},{"id":"mcp-commerce-tools","name":"MCP tools cover the shopping journey","importance":"important","weight":3,"why":"An MCP server is only as useful as its tools. Search, cart and checkout tools let an agent complete a purchase end to end.","fix":"Offer tools for catalogue search, cart management and checkout, plus policy lookups for shipping and returns. Give each a clear description and input schema.","spec":null},{"id":"ucp-profile","name":"Universal Commerce Protocol profile","importance":"emerging","weight":4,"why":"UCP is an open standard that lets AI surfaces discover what a merchant supports (checkout, identity linking, order updates) and transact in a common way.","fix":"Publish a UCP profile at /.well-known/ucp that declares your services, capabilities and payment handlers.","spec":"https://ucp.dev/"},{"id":"acp-discovery","name":"Agentic Commerce Protocol discovery","importance":"emerging","weight":1,"why":"ACP powers checkout inside AI assistants such as ChatGPT. Merchants join by sending a product feed and exposing a checkout API to the assistant, so most of an ACP integration cannot be seen from outside.","fix":"ACP discovery at /.well-known/acp.json is still a proposal, so this check is not scored until it is released. To take part in ACP today, send a product feed and implement the checkout endpoints with your payment provider.","spec":"https://github.com/agentic-commerce-protocol/agentic-commerce-protocol"},{"id":"api-description","name":"API catalogue or OpenAPI description","importance":"important","weight":2,"why":"A machine-readable API description tells agents which operations exist and how to call them, without reading developer documentation.","fix":"Publish an API catalogue at /.well-known/api-catalog (RFC 9727) that links to your OpenAPI descriptions, or serve an OpenAPI document at a stable URL.","spec":"https://www.rfc-editor.org/rfc/rfc9727"},{"id":"agent-auth","name":"Sign-in metadata for agents","importance":"emerging","weight":2,"why":"To see order history or use saved details, an agent needs the shopper to grant it scoped access. OAuth metadata tells the agent how to ask.","fix":"Publish OAuth 2.0 protected-resource metadata (RFC 9728) or authorization-server metadata (RFC 8414) with the scopes you support.","spec":"https://www.rfc-editor.org/rfc/rfc9728"},{"id":"agent-card","name":"A2A agent card","importance":"emerging","weight":1,"why":"If the store runs its own agent, an Agent2Agent card lets a shopper’s agent discover it and delegate tasks such as product advice or order status.","fix":"If you operate a store agent, publish its card at /.well-known/agent-card.json with name, url and skills.","spec":"https://a2a-protocol.org/"}]}]}