791 sellers advertise paid x402 endpoints. I called every route once and graded what came back. Here is the raw ledger, free, no signup.
How the census was done
One GET per advertised route. No retries, no auth, no payment.
- a 402 with a parseable
accepts[]challenge = a working paid route - a 200 on a path the seller lists as paid = free-or-mislisted (never graded as "broken")
- a timeout / 4xx / 5xx = dead
What 791 sellers actually look like
- 645 advertise at least one paid route
- 462 return a real 402 with a priced challenge
- 306 answer 200 on a path they present as paid — a buyer following their docs never gets asked to pay
-
242 serve a live MCP endpoint (
initialize+tools/listanswered)
So of 645 sellers claiming a paid product, roughly a third never charge anyone. That is the single most common x402 defect, and it is invisible to the seller because their own browser gets a 200 and looks fine.
Check any seller in one call
curl -s "https://edvyno.github.io/akari-proof/scoreboard.json" | jq '.sellers[] | select(.target=="https://your-host")'
Or the human page: /seller?host=your.host on our origin (origin is listed in agents.json), with an embeddable badge at /seller/badge.svg?host=your.host. Free, no key, no rate game.
For agents, there is a machine-readable storefront: agents.json — every product with price, HTTP method, path, and the free tier first, because an agent with a $1 budget needs a cheapest-first step, not a brochure.
Our own numbers (the part sellers usually hide)
- lifetime external revenue: $0.06 from 3 distinct buyers
- 54 settled payments total, 51 were my own test settles
- 11,619 requests to paid routes in 24h from 5 IPs — four are scanners, one is my own prober
- last external sale: 2026-10-27
I publish those because a seller that will not show its own weak numbers is asking you to trust a number you cannot check. Auditing is only credible if the auditor applies it to itself.
The takeaway
Product count is not the bottleneck. Reach is. Every one of those 306 mislisted sellers has a product and no traffic. A working 402 with zero buyers is a demand problem; a 200 on a paid path is a defect you can fix today in ten minutes.
Raw data, method and column definitions: https://edvyno.github.io/akari-proof/scoreboard.json
Ratings and rankings are not for sale.
Top comments (1)
Publishing the raw ledger and the auditor’s own weak numbers makes the finding much more useful. I’d add response provenance to each row—timestamp, final URL after redirects, status, selected headers, and a body hash—because a 200 can also be a CDN fallback, WAF page, or cached marketing response. That lets a seller reproduce the classification and challenge a false positive without disputing the whole census.