Everything the register knows, as static JSON. Free, no key, no account, cache-friendly. Updated hourly with every probe cycle. Citation with a link is welcome; see terms.
| Path | What you get |
|---|---|
/v1/leaderboard.json | The full register: every rated service with grade, score, rank, availability, latency, prices, price status, protocol, category, probe count. Plus gate counts and the as-of timestamp. |
/v1/score/{domain}.json | One service's current entry, same fields, plus dispute URL. 404 when the domain is not rated. |
/v1/best/{category}.json | Top services in a category (or all), ranked by score then latency — one request instead of downloading and sorting the whole register. |
/badge/{domain}.svg | Embeddable grade badge, always current. |
/s/{domain} | The human report card for the same service. |
An agent can query the register directly, before it pays, via our MCP server over
streamable HTTP at https://mcp.x402register.com. Two read-only tools, no
auth:
| Tool | What it does |
|---|---|
get_score(domain) | The register's rating for one service. Returns rated: false if the domain isn't in the public x402 catalog. |
best_in_category(category, limit) | The top services in a category (or all), ranked by score then latency. |
It wraps the same JSON above, so results match the register exactly. Scores are opinions; rated parties never pay.
Free, no account, no wallet, no payment. The register's MCP is read-only and open; there is nothing to buy and no key to manage. Add it to your agent in one step:
Claude Code
claude mcp add --transport http x402-register https://mcp.x402register.com
Cursor, Windsurf, VS Code, Cline — add to your MCP config (for example .cursor/mcp.json or .vscode/mcp.json):
{
"mcpServers": {
"x402-register": {
"type": "http",
"url": "https://mcp.x402register.com"
}
}
}
Any MCP client — connect over streamable HTTP:
https://mcp.x402register.com
Then your agent can call get_score(domain) to vet an endpoint, or
best_in_category(category) to pick the best one, before it ever pays.
curl -s https://x402register.com/v1/score/x402.twit.sh.json
{"domain":"x402.twit.sh","grade":"A","score":96.9,"rank":13,
"availability_pct":100.0,"median_ms":227,"p90_ms":389,
"price_usd":0.001,"live_price_usd":0.001,"price_status":"match",
"protocol":"v2","category":"content-media","probes":167,
"catalog_calls_30d":87149,"as_of":"...","model":"v1.1",
"dispute_url":"https://x402register.com/dispute.html"}
Scores and grades are opinions derived from the published methodology (see the
register). availability_pct, latencies, and prices are raw
measurements. price_status is one of match, mismatch,
dynamic, uncheckable. catalog_calls_30d is the catalog's own
popularity metric, included for contrast; it is not a scoring input.
usdc_in_* fields are our own measurement of USDC received by every
receiver wallet the service has listed in the catalog (current, alternative payment
options, and past rotations), over the trailing 30 days, on the service's own
settlement chain. settlement_chain names that chain and
settlement_chain_measured is true when we index it (Base and Solana
today; other chains report null and measured=false). This is an upper bound: wallets
can receive USDC from sources other than x402 settlements. usdc_in_wallets
is how many tracked wallets the sum covers. price_options_usd lists the
distinct advertised base-mainnet prices across all of the domain's catalog listings
(many services list several payment options; a probed price can differ from a settled
price for that reason), and listed_paths counts its listed catalog paths.
None of these are scoring inputs.
probed_paths states the grade's evidence base: how many of the domain's
listed paths we probe hourly (currently one per domain). Availability, latency, and
protocol signals measure the operator's shared infrastructure and generalize across its
products; the price check applies to the probed product only. Per-product output
verification is a planned later stage and will be reported per product, never folded
into the domain grade.
second_vantage reports an independent hourly check from Cloudflare's edge
(a different network path than our own prober): edge_status, whether it saw a
spec 402 (edge_ok402), whether that agrees with our prober (agrees),
and when (checked_at). It is a cross-check, not a scoring input; it is null for
Cloudflare-hosted endpoints, which that vantage cannot probe.
Responses are pure typed JSON. No field ever contains seller-authored free text. Domains are validated against strict hostname syntax before publication. Data updates hourly; if you need per-request freshness or contractual reliability, a paid per-lookup endpoint is planned. Feedback: [email protected].