of paying journeys fail a check at reading the product facts.
29% fail at asking the shopper what they need. Building the cart, checking out and paying: under one percent each, on every protocol.
It almost never failed at checkout. It failed earlier: reading the product page, and asking what the shopper meant.
An open dataset from General Machines.
Per 100 everyday journeys. Every loss happens before the payment step.
Watch one
The shopper is a program. It holds some of its needs back and gives them only when asked. The agent has the store's tools and one instruction: buy the right thing.
What we found
Journeys are lost between finding a product and choosing it: reading the facts, and asking for what the shopper didn't say. Once the cart is right, checkout and payment go through on every protocol.
29% fail at asking the shopper what they need. Building the cart, checking out and paying: under one percent each, on every protocol.
The stores where the agent does worst have one thing in common: search that misses the first query. A fitting product came up first in 81% of their journeys, against 85% on the best stores. So the agent stops more than it buys wrong.
On the same task, asking adds 11.9 points (likely range 10.2 to 13.7) where a need is held back and almost nothing where none is. Yet the agent asks in 63% of journeys where nothing is hidden. The fix is aim, not more questions.
On requests where a substitute would do, 27.4%. When a task really was impossible, it refused correctly 77.4% of the time, so only 9.4% of its refusals were right.
The task explains most of it, and plain chance much of the rest: of 24,549 tasks run three times or more, 29.3% both succeeded and failed. One test tells you little about a store.
Declined cards, failed bank checks, price changes, requests nothing could fill. It paid when it shouldn't have in 6 of 3,572 journeys, and never paid for an impossible task.
The 25 categories
Each label shows how often the agent ended right in that category. Open one to see where it stalls, or watch a journey from it.
How it ran
An agent can't pay on a real store, and a real store's data can't be published. So one agent shopped stand-in stores that sell like real ones, through checkout, with test tokens.
shopping tasks from 30 shopper personas: gifts, budgets, substitutes, exact sizes.
stand-ins in 25 categories, stocked from open product catalogs.
from 17 to 22 October 2026, over UCP, ACP, AP2, MPP and WebMCP.
per journey: 71 settled by code from the store's records, 14 by a model.
The data, the paper and the code
Every journey, the paper behind every number, and the code to replay any journey and check it yourself.
101,416 journeys as Parquet tables on Hugging Face.
load_dataset("generalmachines/CartTrace-100k")
Hugging Face →
02 · ReadThe paper
How the run was built and judged, and where every number comes from.
Bhatnagar & Pal, 2026
arXiv →
03 · RunThe replay kit
Replay any journey in its store and judge it again.
uv run carttrace replay ep-db6398bc69f1
GitHub →
Data CC BY 4.0 (product data keeps its source catalog's licence) · Replay kit Apache-2.0 · Stores are pseudonyms; prices and stock are synthetic.
@misc{carttrace100k,
title = {CartTrace-100k: How Shopping Agents Fare Across Stores,
Categories and Commerce Protocols},
author = {Bhatnagar, Pratham and Pal, Deepanshu},
year = {2026},
publisher = {General Machines},
url = {https://generalmachines.ai/datasets/carttrace-100k},
note = {Dataset: https://huggingface.co/datasets/generalmachines/CartTrace-100k}
}