Agent Readiness Grade
One grade, A to F, for whether an AI agent can get from a store's products to a checkout link. Method v1. In the 6 Nov 2026 snapshot, 10,698 of 10,750 stores have a grade.
How ARC turns what it already measured at a store into one grade, A to F: the rules, the audits behind each grade, what is measured and what is not, and how to dispute or re-check a grade.
No payment ever affects a grade.ARC is a free, open research project. A grade is worked out by a published function from ARC's saved checks, and nothing else goes in.
The rules
Each audit is passed, failed or not measured. A failed audit caps the grade at its level, and the grade is the lowest cap. With no failed audit the grade is A. Passing or unmeasured audits never lower a grade, and fixing a failed audit can only raise it. A store is graded only when ARC measured its checkout outcome or its check was turned away.
| Grade | Means | Rule | Stores (6 Nov 2026) |
|---|---|---|---|
| A | Ready | An agent got a checkout link through a protocol route (a UCP or MCP agent catalog), and no measured audit failed. | 5,745 |
| B | Reaches checkout, with gaps | An agent got a checkout link, and at least one of these failed: price and stock readable, a valid UCP profile, robots.txt lets AI agents and crawlers in, a protocol route (not only a cart link), ARC's browser shoppers add to cart, guest checkout. | 1,475 |
| C | Found, no checkout | An agent found a product (in the catalog or through ARC's browser shoppers), but no checkout link came back. | 426 |
| D | Not found | No agent found a product: the catalog search and any browser shoppers came back empty. | 2,533 |
| F | Turned away | The store turned away ARC's automated check, so an agent could not get in to look. | 519 |
52 stores in the snapshot have no grade because their check did not finish. Opted-out stores are never graded.
The audits
| Audit | Passes when | Fails when | A fail caps at | Reads |
|---|---|---|---|---|
| Lets ARC's automated check in | ARC's check got a page back | The check was turned away (HTTP check or browser cart test at the door) | F | can_agents_find_products, verdict |
| An agent finds a product | The catalog search found the product, or a browser shopper added it to the cart | Neither found a product | D | can_agents_find_products, browser_cart_test |
| An agent gets a checkout link | A checkout link came back | No checkout link came back | C | can_agents_get_checkout_link |
| Checkout through a protocol route (UCP or MCP) | The link came back through a UCP or MCP agent catalog | Only a plain cart link came back | B | agent_catalog_type |
| Agents can read price and stock | Price and stock read | Not read | B | can_agents_read_price_and_stock |
| UCP profile passes validation | Valid profile | Missing at the host, or did not validate | B | ucp_profile_valid |
| robots.txt lets AI answer agents in | No block | robots.txt blocks an AI answer agent | B | blocks_ai_answer_agents |
| robots.txt lets AI crawlers in | No block | robots.txt blocks an AI crawler | B | blocks_ai_crawlers |
| ARC's browser shoppers add to cart | At least one ARC browser shopper added to cart | 0 of 5 added to cart | B | browser_cart_test |
| Guest checkout, no account required | Guest checkout offered | An account is required | B | guest_checkout_offered, account_creation_required |
Every failed audit on a store page comes with a one-line fix and, where ARC has one, a link to the ready-to-paste fix pack on that page. A turned-away check measures nothing behind the door, so every other audit on a turned-away store is not measured. A turned-away check is a response to ARC's automated checker, not a finding against the store.
Not measured is never a fail
A blank, unknown or not-tested value is shown as not measured. It does not count against the store and does not lower the grade. Most stores have no browser cart test and no guest-checkout reading yet, so those audits are usually not measured.
Freshness
A grade is dated by the check behind it. After 30 days it shows as expired: re-check, never as current, on the store page, on the badge and in agent answers (expired: true).
What is measured, and what is not
Measured, from ARC's saved automated HTTP check and, where present, the browser cart test:
- whether an agent finds a product, reads its price and stock, and gets a checkout link back, and through which route;
- whether the store turned ARC's check away;
- robots.txt rules for AI crawlers and AI answer agents;
- whether the UCP profile at /.well-known/ucp passes validation;
- guest checkout or a required account, where ARC confirmed it;
- ARC's browser cart test, where one was run.
Not measured: payment or a completed order (ARC stops before payment), live sessions of any consumer AI agent, blocks applied by a platform, marketplace or network in front of the store, and anything ARC has not published for the store.
Where the grade appears
- Every store page, near the top, with the audits and the fixes.
- The live badge at
/badge/{host}.svg, with an embed snippet on the store page. Opted-out and unpublished hosts get a 404. - Agent answers:
GET /api/precheckandbefore_checkoutcarrygrade: {grade, version, checked_at, expired, audits_failed}. The same block is on every row offind_stores,find_agent_ready_storesandcompare.
How grades are used
The grade has consequences, on the Core Web Vitals model: agents are sent to better-graded stores first. Results are ordered only by published grade and freshness, never by anything else.
find_stores(on/api/askand/api/mcp),find_agent_ready_storesandGET /api/agent-checkout/storeslist the best current grade first (A, then B, and so on). An expired grade ranks after current grades of the same letter. Within a grade, the newest check comes first. Each store carries its grade; a store that is not graded is listed after graded ones withgrade: null, which is not a mark against it.- An optional
min_grade(default none) keeps only stores whose current grade is that letter or better. comparepicks the best current grade among the stores whose saved check reached checkout on a fresh check. Without fresh evidence there is no pick, whatever the grade.before_checkoutadds a one-linealternatives_hintwhen the store's grade is D or F, or expired: afind_storescall in the same category withmin_grade: "B". It never steers away from a store that is not graded. Advisory only: no agent should refuse a store solely because of ARC's data.
Dispute or re-check a grade
To get a fresh grade, re-check the store from its store page (or check any store). If you think a saved check is wrong, use the corrections flow: ARC re-checks the store when that helps and logs fixes to published numbers in the method changelog.
Changelog
| Version | Date | Change |
|---|---|---|
| v1 | 6 Nov 2026 | First version. Five grades, ten audits, a 30-day expiry. Built only from data ARC already published; no new checks. |
Grades are versioned. A change to the rules gets a new version here, so a method change is never read as a store getting better or worse.
Store counts are from ARC's published 6 Nov 2026 snapshot, read as of that day.