Documentation — For AI agents and developers

For AI agents and developers

How to read this site by machine — llms.txt, the UCP profile, the MCP endpoint, the agent-feedback schema and the reference storefront — and what we deliberately do not declare.

This site practises what it sells: every offer, price and page is published in the machine-readable forms agents look for, generated from the same source as the human pages, so they cannot drift apart.

Entry points

What Where Notes
Site index for language models /llms.txt Offers with prices, the FAQ, every public page with a one-line description. Generated.
Universal Commerce Protocol profile /.well-known/ucp UCP version 2026-04-08. Declares the catalog capability and the MCP transport below.
MCP endpoint POST /mcp (advertised by <link rel="mcp"> and the UCP profile) JSON-RPC over HTTP. Tools: search_catalog and lookup_catalog (UCP catalog binding over our services), list_offers, get_offer, scan_store (run the readiness scanner on a storefront), create_checkout_session (returns a Stripe Checkout URL for the sprint — the only self-serve offer) and report_problem.
Agent-feedback JSON Schema /schemas/agent-feedback.json Our UCP extension capability: an agent can report what blocked it. Referenced from the reference store's profile.
Sitemap /sitemap.xml Same page list as llms.txt.
Reference storefront ready.expandingweb.com A demo Magento-style catalog ("Nord Trail") with its own UCP profile and MCP tools — a working example of a ready store.

What we do not declare

  • No dev.ucp.shopping.checkout. Buying here means following a Stripe Checkout URL (create_checkout_session hands it to you); there is no UCP checkout session protocol behind it, and declaring the capability would send an agent into a flow that does not exist. payment_handlers is an empty object for the same reason. The reasoning is recorded as a decision in the code repository and is the same standard the scanner holds client stores to.
  • No capability without a working tool. The scanner's MCP-01 check calls whatever a profile advertises; we pass our own check.

Crawling

robots.txt allows AI shopping and answer-engine crawlers. Product-style pages on the reference store carry Product/Offer JSON-LD and 25+ attributes, which is what the scanner's FEED-01 and SCHEMA-01 look for.

Reporting a problem as an agent

If a tool call fails or a page contradicts llms.txt, call report_problem on the MCP endpoint (summary, path, what you expected), or email support@expandingweb.com with the request you made and the response you got. We treat a drift between the machine and human layers as a bug.

Questions

Does ChatGPT shopping work with Magento?

Two different things get called that. Being cited in an answer works on any platform, Magento included, and needs nothing but pages a crawler can fetch and structured data it can parse — no programme, no application. Being in OpenAI's merchant programme, with a product feed and the commerce surface on top of it, is a separate, US-only enrolment and is not a platform question either; Magento is not excluded, your jurisdiction may be. The order of work is the same either way: fix the page data first, because the feed is built from it. Longer answer, with what we honestly do not know: ChatGPT shopping for Magento stores in the US and EU.

How do I add Product JSON-LD in Magento 2?

Magento's stock Luma theme marks product pages up as microdata (itemtype="https://schema.org/Product"), not JSON-LD, so on a default installation the block agents parse is simply absent — which is why, on 1,373 live stores where we could reach a product page in August 2026, 659 (48%) carried no Product JSON-LD at all. The fix is a server-rendered <script type="application/ld+json"> block on the product page, emitted from a theme block or an extension, containing a Product node with name, image, sku, brand, and an offers object with price, priceCurrency, availability and url. Add aggregateRating wherever you actually have reviews — only 14.6% of decidable stores publish the full Product + Offer + AggregateRating triple. Client-side rendering does not count: an agent that does not run your JavaScript sees the empty shell. Measurements and method: Half of live Magento stores put no Product schema on their product pages.

How should robots.txt handle GPTBot on a Magento store?

Start by separating three crawlers that people ban with one toggle: training crawlers send almost no visitors back, so blocking them costs little; answer-engine crawlers (GPTBot among them) are how you appear in AI answers at all; agents acting for a real shopper are a sale. A blanket Disallow covers all three. The expensive load is rarely the catalog — it is unbounded URL space, search and faceted navigation — so the useful policy is per-crawler allow rules plus fencing off those parameters, not a ban. Two warnings from measurement: 102 of the 1,854 Magento stores we scanned disallow their own product pages to every polite crawler, and Forter found 10% of bot traffic during Cyber Month was legitimate customer activity. Finally, robots.txt is not what an agent meets first — your edge is. A CDN "block AI bots" toggle answering 403 to GPTBot removes you from AI answers whatever the file says; our scanner tests the file as CRAWL-01 and the edge as AGENT-01, because they disagree more often than not. Check definitions: scanner checks.

What is the difference between UCP, MCP and ACP?

They sit at different layers and are not alternatives. MCP (Model Context Protocol) is the transport: a JSON-RPC endpoint exposing tools an agent can call — ours is POST /mcp, advertised by <link rel="mcp">. UCP (Universal Commerce Protocol) is the commerce profile: a /.well-known/ucp document declaring which commerce capabilities a store supports and how to reach them, typically over MCP — ours is at /.well-known/ucp, version 2026-04-08, declaring the catalog capability and nothing else. ACP (Agentic Commerce Protocol) is the checkout and feed contract used by OpenAI's merchant programme, where feed prices are discovery-time signals and the checkout response is authoritative. Adobe stated support for both UCP and ACP on 18 February 2026. The rule that matters more than the acronyms: never declare a capability without a working tool behind it — the scanner's MCP-01 calls whatever a profile advertises, and we hold ourselves to it, which is why we declare no dev.ucp.shopping.checkout.

Last verified:

← All documentation