Circle Agent Marketplace catalog โ snapshot, 11 September 2026
A single measurement of the Circle x402 Discovery catalog. Composition only.
Nothing here has been re-checked since. Prices, endpoints and payout addresses change without notice. Treat every figure as “was true on 2026-09-11”, never as “is true”. The method is below and the source is a public API โ re-run it rather than cite it.
How many x402 sellers are listed, and on which networks
| listings | accepts rows | distinct URLs | hosts | networks | payout addrs |
|---|---|---|---|---|---|
| 1,162 | 4,215 | 1,094 | 48 | 16 | 128 |
A listing may accept payment on several networks, so accepts rows exceed listings. 1,094 distinct URLs across just 48 hosts โ this catalog is more concentrated than its listing count suggests.
๐จ The siwx=false trap โ read this before re-running
What IS verified today: 792 testnet rows are present in this harvest (Base Sepolia 396, Polygon Amoy 396), which is what a CLI-filtered read would have removed entirely.
When the gap was last measured, on 2026-08-27, it was 1,003 direct vs 838 through the CLI โ 165 hidden, every testnet row. That figure belongs to that date and is not restated as today's.
`circle services search` silently appends siwx=false. It is not in the CLI's --help; it is visible only by reading the CLI's own dist/index.js. The CLI was NOT re-run on this date, so the size of the gap today is unknown; only its existence is re-confirmed, by the testnet rows above being present at all. Fetch the API directly.
This is on the page rather than in a footnote because a count published without it is not reproducible: a reader who re-runs the obvious way gets a different denominator and no warning that it changed.
Which networks the Circle agent registry covers
| network | CAIP-2 | accepts rows |
|---|---|---|
| Base | eip155:8453 | 1,327 |
| Solana mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | 823 |
| Polygon | eip155:137 | 555 |
| Base Sepolia | eip155:84532 | 396 |
| Polygon Amoy | eip155:80002 | 396 |
| Solana devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | 264 |
| Avalanche | eip155:43114 | 108 |
| Arbitrum | eip155:42161 | 69 |
| Ethereum | eip155:1 | 66 |
| Optimism | eip155:10 | 66 |
| Unichain | eip155:130 | 66 |
| X Layer | eip155:196 | 31 |
| Sonic | eip155:146 | 12 |
| World Chain | eip155:480 | 12 |
| Sei | eip155:1329 | 12 |
| HyperEVM | eip155:999 | 12 |
14 EVM chains and 2 Solana clusters. Testnet rows total 792 โ first-class in this catalog, and exactly what the CLI hides.
Is Arc in the catalog?
Where the catalog actually lives
| host | accepts rows |
|---|---|
| x402.quicknode.com | 2,112 |
| api.aisa.one | 394 |
| np.orthogonal.com | 293 |
| x402.api.agentmail.to | 199 |
| api.arkm.com | 178 |
One host carries 50.1% of all rows; the top five carry 75.3%.
What this snapshot does NOT claim
| field | state | why |
|---|---|---|
| liveness | not-measured | requires GET against 1,094 third-party URLs across 48 hosts; those calls have not been made |
| advertisedVsLivePrice | not-measured | same 1,094 calls; a listing's price and its live 402 have not been compared |
| payoutAddressOwnership | not-measured | 14 EVM chains readable in principle; 1,087 of 4,215 rows are Solana and need a different client |
| upgradeability | not-measured | EIP-1967 has no Solana equivalent โ the question differs per ecosystem, it is not one check |
| serviceQuality | could-not-check | no on-chain or catalog signal distinguishes a service that works from one that does not |
| changeBetweenSnapshots | published-separately | what differs between two readings is computed and published at /snapshot/diff, led by which offers name a different payout address. It is a separate artifact because a comparison can be refused (a filtered reading has a different denominator) while both snapshots it spans remain perfectly sound |
Each is listed rather than omitted. A blank would read as “fine”; these are open.
Method: how to re-run this yourself
Fetch https://api.circle.com/v2/x402/discovery/resources?limit=100&offset=N directly, limit=100, paginating until a short
page. Do not use the CLI โ see the trap above. Then verify the harvest was unfiltered by
checking that Base Sepolia and Polygon Amoy rows are present; if either is zero, the fetch was
filtered and the denominator is wrong.
Drift while reading: CHECKED, and present: every one of the 12 pages reported total=1162, matching the 1,162 listings actually collected. So unlike 2026-08-27, this measurement can say the index did NOT drift while it was being read.
The machine-readable form of everything above: /snapshot/2026-09-11.json
All snapshots
| date | listings | accepts rows | hosts | Arc rows | |
|---|---|---|---|---|---|
| 2026-08-27 | 1,003 | 3,808 | 25 | 0 | JSON |
| 2026-09-11 (this one) | 1,162 | 4,215 | 48 | 0 | JSON |
Each was harvested separately and none has been edited since.
What differs between two of them, including which offers now name a different payout address: 2026-08-27..2026-09-11