Stall library · Buy

The UCP checkout endpoint failed when an agent used it

A failed UCP checkout endpoint is a store whose Universal Commerce Protocol manifest offers checkout to AI agents, and whose endpoint then fails when an agent searches the catalogue or creates a checkout for a product in stock. The manifest promises a route to purchase that does not work, so an agent platform that relies on it cannot sell for the store over UCP.

Why the agent stops

An agent platform that supports UCP reads the manifest at /.well-known/ucp, finds the shopping service and its endpoint, and calls it directly: search the catalogue, then create a checkout with the item, the buyer and the delivery address. No web page is involved, so a storefront that works in a browser says nothing about whether this route works.

Ottom makes those same calls with a synthetic buyer, reads what the store answers, and cancels the checkout. It never completes one and never submits payment. A failure counts against the store only when the endpoint itself failed: an error that is about who is calling, such as a rate limit, or a checkout that asks for more buyer details, is the protocol working.

It is reported at medium severity. The storefront checkout is graded on its own by the browser journey, and this is one channel failing rather than the store being unable to sell.

How often we see this

Not stated here. A frequency means nothing without the cohort it was counted over, and this page is about one stall rather than one category. Where a category has enough stores measured at every stage, the share of them showing this stall is published on its benchmark page, with the methodology beside it.

See it for yourself

  1. Open https://yourstore.com/.well-known/ucp and find the endpoint under dev.ucp.shopping with transport mcp.
  2. Send it an MCP tools/list call and confirm search_catalog and create_checkout are listed.
  3. Call search_catalog with the name of a product you sell and check an available variant comes back.
  4. Call create_checkout for that variant with a test email and a delivery address, then cancel_checkout for the session it returns.

What to change

What Ottom looks at

Ottom calls search_catalog, then create_checkout, then cancel_checkout on the endpoint your manifest names, naming its own UCP profile on every call. The finding is raised for an HTTP server error, a JSON-RPC error that is not about the caller, or an answer the protocol does not allow. This check runs only where it has been switched on.

Questions

Does the UCP checkout test place an order?

No. It creates a checkout session with a synthetic buyer whose email ends in @agent.ottom.io, reads the answer, and cancels the session. It never completes a checkout and never submits payment.

Why did the UCP checkout fail if my store works?

Because the endpoint is a separate route to purchase from your storefront. Agents call it directly, without loading a page, so it can fail while every page on the site works. On Shopify the platform runs it for you, which is why the fix is usually a support request to the platform rather than a change to your theme.

Check your store for this