X402/REGISTER

Machine-readable register

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.

Endpoints

PathWhat you get
/v1/leaderboard.jsonThe 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}.jsonOne service's current entry, same fields, plus dispute URL. 404 when the domain is not rated.
/v1/best/{category}.jsonTop services in a category (or all), ranked by score then latency — one request instead of downloading and sorting the whole register.
/badge/{domain}.svgEmbeddable grade badge, always current.
/s/{domain}The human report card for the same service.

MCP server (for agents)

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:

ToolWhat 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.

Install the MCP

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.

Example

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"}

What the fields mean

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.

Guarantees and limits

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].