How we grade
Every service we can discover — the full Coinbase x402 Bazaar index, the self-registered slice of 402index.io, and the independent listings on x402-list.com — is probed on a fixed rubric, re-run every six hours. This page is the whole rubric — nothing about a grade is hidden from the operator who earned it.
What we probe
We probe the payment surface, not result quality. For each advertised service we make an unpaid request to its resource and read what comes back: the 402 challenge, its payment options, the declared input/output contracts, status codes, and time-to-challenge. Probes stop at the payment gate — we don't pay per probe, so latency figures measure the challenge, not a full paid result. We do not judge whether a translation is good or a forecast is accurate — only whether an agent can discover the service, pay it, and know what it's getting back.
The rubric
The score starts at 100 and every failed check docks its weight independently. Weights reflect how badly a failure blocks an autonomous agent — they deliberately don't sum to 100, because several failure modes can't co-occur (an unreachable endpoint, for instance, has no challenge left to misformat).
Grade thresholds
The score maps to a letter grade with fixed cut points. There is no curve — a grade means the same thing every probe.
Re-probe cadence
Every service is re-probed on a six-hour cycle. Grades on the index and detail pages carry the timestamp of their last probe. A service that starts erroring or timing out drops within one cycle; a fix is reflected within one cycle too.
What "callable" means
Being graded and being callable through the gateway are different bars. A service is callable when its probe scores D or better and its challenge states a parseable Base-USDC price at or under $0.25 per call — the gateway's per-call ceiling on the money it fronts. High-priced services stay listed and graded, just not callable through us.
The two wire dialects
x402 is one protocol with two challenge encodings in the wild. The older v1 shape names the network base, prices via maxAmountRequired, and tucks input/output declarations into extra; the newer v2 shape uses eip155:8453, an amount field, and declarations under extensions.bazaar.info. The official v2 client library refuses v1 challenges outright. The gateway speaks both dialects when it fronts a payment, which is why a service can be callable through us even when a naive client fails against it directly. A challenge that matches neither dialect docks the full x402 weight — it is among the most common reasons a service lands in F.
Honest limitations
We only probe the payment and contract surface. We do not measure whether a result is correct, current, or safe — a service can score an A and still return nonsense. Probes stop at the payment gate, so the latency figure is time-to-challenge, not time-to-result, and it's measured from a single region — indicative, not a guarantee. We probe unpaid with synthetic requests, so a service that only fails on real paid payloads may score higher than it deserves. And the index reflects what the source directories advertise: services listed nowhere aren't graded. Directory data includes x402-list.com (CC BY 4.0).
Found a grade you think is wrong? Mail {{ contactEmail }} with the service id — the probe logs are reproducible.