x402 seller trust leaderboard

An autonomous agent about to pay an endpoint it has never used has almost nothing to go on. So we sweep the public x402 catalogue — one representative endpoint per origin — and score each origin from the outside using the same trust layer we sell: unpaid 402 behaviour, challenge conformance, discovery documents, on-chain payTo reputation and price sanity.

300origins scored
89.0median score
86.2mean
0unreachable
2026-10-04 18:36checked (UTC)
A score is a point-in-time judgement from the outside — not an audit, not an endorsement, and not a statement about whether a seller delivers. One endpoint per origin is probed; an origin may run others. Each row was checked at the time above; scores move as sellers change.

Most trusted (top 25)

#originscoreverdictendpointspayTomain finding
1https://agentdata-api.sander-van-aard.workers.dev97pay350xb0ae6a9bd7…payTo is an EOA running a smart-wallet delegation (0x7702cb55…) — the key holder still controls the funds
2https://data.greeneris.io97pay340x6ab8efe305…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
3https://x402.freeq.one97pay320x90b0dC8934…payTo is a plain EOA (no contract can freeze the funds)
4https://agents.dexl.io97pay260x820D61a720…payTo is an EOA running a smart-wallet delegation (0x63c0c19a…) — the key holder still controls the funds
5https://lab.paidapis.net97pay230xf74f2020aC…payTo is a plain EOA (no contract can freeze the funds)
6https://twitter.use.x402atlas.com97pay210x51D577C8CB…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
7https://toolcall.click97pay200x84FA7Ea830…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
8https://asistent-crypto.vercel.app97pay190xbeeBd30639…payTo is an EOA running a smart-wallet delegation (0x63c0c19a…) — the key holder still controls the funds
9https://api.cn402.com97pay190x4466d4A84b…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
10https://disruption.forgemesh.io97pay180xA8774fACfD…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
11https://x402.coinopai.com97pay160x1304EC1A89…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
12https://stockwaves.net97pay160xDc9F94A8b9…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
13https://api.interzoid.com97pay150xdCEca23FF8…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
14https://kronos.forgemesh.io97pay130x1CcEf327b3…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
15https://relay.straelo.com97pay120x267ead21c0…payTo is an EOA running a smart-wallet delegation (0x7702cb55…) — the key holder still controls the funds
16https://scout.hugen.tokyo97pay120x29322Ea7Ec…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
17https://defi.hugen.tokyo97pay120x29322Ea7Ec…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
18https://api.ukintel.uk97pay110x8aa6a85a27…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
19https://agent-arcade.use.x402atlas.com97pay100x8C128f1Ee6…payTo is a plain EOA (no contract can freeze the funds)
20https://trust-agent.io97pay100x6121654D3F…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
21https://voice.forgemesh.io97pay100x962794FB8a…payTo is a plain EOA (no contract can freeze the funds)
22https://workbot1.oddsys.org97pay100x15459498e1…payTo is an EOA running a smart-wallet delegation (0x7702cb55…) — the key holder still controls the funds
23https://paddock.finance97pay100x153AA87807…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
24https://xhagents.xyz95pay190x6cb53f00a5…payTo is a contract: withdrawals depend on its code
25https://mcp.yield.xyz95pay160xD433f05627…payTo is a contract: withdrawals depend on its code

Lowest scoring

#originscoreverdictendpointspayTomain finding
1https://apexfaucet.xyz17avoid75…slow challenge (19804 ms) — an agent's budget may expire before it pays
2https://fabair-agents.com22avoid10…no reachable .well-known/x402 discovery document
3https://saylorinnovations.com22avoid102…no reachable .well-known/x402 discovery document
4https://api.loopholetape.com24avoid24…endpoint answered 200 with no payment: there is nothing to trust here, it is free
5https://x402.professorsausages.com29avoid42…the resource is not listed in its own .well-known/x402 document
6https://api.agentmercantile.com33avoid11…the resource is not listed in its own .well-known/x402 document
7https://www.cultos.dev37avoid15…payTo reputation NOT measured: the accepts entry declares no payTo, so there is nothing to verify on-chain
8https://smx.space39avoid100x5799fe0715…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
9https://omniterminal.app57avoid130x733f40A4FA…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
10https://http--forest-gas-station--lcjl27p8lmjs.code.run64pay_with_caution420xf9c2a7255E…the resource is not listed in its own .well-known/x402 document
11https://api.cra-agent.tech65pay_with_caution230x33b37c6d7a…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
12https://agents.bytemine.ai67pay_with_caution130xfc02bedbe1…no reachable .well-known/x402 discovery document
13https://api.liquidagent.ai68pay_with_caution110x487b28A4Fb…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb
14https://backpedal-discourse-easeful.ngrok-free.dev68pay_with_caution110x9265E5a6A0…no reachable .well-known/x402 discovery document
15https://oraclepost.higgsfield.app68pay_with_caution320x93e71F65e8…the POST probe answered without a challenge while GET returned the 402: an agent has to pick the right verb

Verdict spread

verdictorigins
avoid9
pay269
pay_with_caution22

Why scores were lost

penaltyoccurrences
payTo is a plain EOA (no contract can freeze the funds)213
the POST probe answered without a challenge while GET returned the 402131
the resource is not listed in its own .well-known/x402 document101
openapi.json is not valid JSON88
no reachable .well-known/x402 discovery document85
openapi.json documents this path without an input schema62
25 USDC inflows from 5 sender(s) on record35
5 distinct senders = more than one buyer's word for it35
no reachable openapi.json34
3 distinct senders = more than one buyer's word for it34
.well-known/x402 is not valid JSON34
4 distinct senders = more than one buyer's word for it34

Reproduce any row

One endpoint, live, for $0.05 USDC — POST https://xhagents.xyz/api/x402-trust with {"url": "…"} gives you the same 0-100 report with the evidence and the penalties.

The full ranking as JSON, filterable by verdict and score, is $0.05 — GET https://xhagents.xyz/api/trust-leaderboard?limit=100&order=worst. Free method page and top-ten preview: /api/trust-leaderboard/method.

Every endpoint is listed with its price in openapi.json and /.well-known/x402.

Method

one representative endpoint per origin, scored with XH Agents' x402 trust layer: unpaid 402 probe, challenge conformance, discovery documents, on-chain payTo reputation (USDC inflows seen by a transfer indexer; Solana via public RPC), price sanity

Not checked: behaviour after payment (whether a seller delivers), uptime over time — each row is a point-in-time probe, operator identity, content accuracy, payTo reputation is a bounded look at the last 25 incoming USDC transfers; a row that says 'NOT measured' means the indexer or RPC refused the query, not that the address is empty, origins that sell on other chains than Base and Solana: their payTo cannot be inspected this way.

Unreachable at sweep time: 0 origins