Launch note · Discovery
About 130,000 endpoints, and no way to choose
2026-08-25 · 11 min
Roughly 130,000 x402 endpoints are advertised to agents today.¹ Each one is a URL, a sentence and a price, written by the seller. Finding the one you need — and knowing whether it answers, delivers, or is even the thing it says it is — is still close to impossible from the listings alone. This note shows what the haystack looks like, why a bigger directory does not fix it, and what we built instead.
https://agent402.tools/api/memory/cas
Atomically write (or release) a key only if… $0.001
https://x402.twit.sh/tweets/bookmark
Bookmark a tweet $0.0025
https://entropy.rip/api/storage/relic/destroy/%7Bvar1%7D
Destroy long-term storage (relic) $0.005
https://palmyr.ai/phone/numbers/%7Bid%7D
Palmyr: DELETE /phone/numbers/%7Bid%7D $0.01
https://vibesprings.net/api/watch/register
Register a watch condition for real-time monitoring… $0.01
https://bridge.eruditepay.com/v1/xrp/payment/create
Create an XRP x402 payment — sign a Payment transaction $0.03
https://agent402.tools/api/tts
Convert text to speech using OpenAI TTS-1. Returns… $0.05
https://furigana.agentic-jp.com/batch
Run furigana / normalize / classify / convert over… —
https://stablestudio.dev/api/generate/nano-banana/generate
generate with Nano Banana. Returns an async job… —
https://agentres.dev/api/cancel
API that lets AI agents search and book restaurant… —
https://www.agentres.dev/api/cancel
API that lets AI agents search and book restaurant… —
https://yddkctoq.nx.link/v1/wallets/{address}/transactions
thirdweb API: getWalletTransactions $0.0001
https://blockrun.ai/api/v1/messages
Anthropic-compatible messages endpoint. $0.0001
(no URL advertised)
Pay-per-request Solana transaction replay $0.50That is the first screen of what an agent sees when it goes looking for something to buy. A key-value store, a tweet bookmark, a DELETE on somebody’s phone number, the same restaurant-booking sentence on two different hosts, a wallet API on a randomly named subdomain, and a fifty-cent service with no address at all. Keep scrolling and it does not get more legible. It gets longer.
A listing is a sentence somebody wrote. Multiply it by 130,000 and you do not get a market. You get a wall.
We run a census of the x402 economy: we collect every endpoint the public catalogs advertise, probe each one for a real 402 Payment Required response, index the settlement that lands on-chain, and — in a deliberately small program — pay endpoints with real USDC to see what comes back. This note is about the first problem an agent hits, before any question of trust: you cannot choose from this wall, and nothing in the wall helps you.
What 130,000 actually contains
Start with what the listings say about themselves. At our fixed research cutoff (2026-08-10), 132,793 endpoints had returned a parseable x402 offer — a real 402 with a price and a payment address — to our probes. They belong to roughly 4,500 providers, but not evenly: 62% of all endpoints sit in fleets of a hundred or more from a single provider, and one host alone advertises more than 34,000. The wall is mostly a few very large walls.
have any description (own 402 or catalog) 102,745 77.4%
no description at all 30,021 22.6%
share an exact copy of another's text 58,889 44.3%
…copied across different providers 11,760 8.9%
one provider, one sentence, on 10,633 endpoints
median description 65 chars · 8 informative words
have a parseable output schema 61,688 46.5%
have neither description nor schema 10,847 8.2%
have a price, network, asset and scheme 125,599 94.6%
median price $0.01 · p90 $0.15
no category we can assign 58,354 43.9%
in provider fleets of 100+ endpoints 82,724 62.3%Read that top to bottom and the shape of the problem appears. The one field sellers reliably fill in is the price. The field an agent actually needs — what does this do? — is missing on a fifth of endpoints, copied from somewhere else on nearly half, and a single short sentence on the median one. Eight informative words is not a specification. It is a label on a box.
And the box is not even reliably one box. A URL is not a stable key in this catalog: 7,914 advertised URLs are attached to more than one endpoint record (one to thirteen), and 6,317 raw catalog rows advertise no URL at all. Template paths like /phone/numbers/{id} are listed as if they were callable addresses. The catalogs are faithfully reproducing what sellers submitted; the sellers were not writing for a reader.
Why a bigger directory does not help
The obvious answer to a haystack is a better index of the haystack. That is what most of the ecosystem is building — more catalogs, more listings, more metadata fields. We think the evidence says it is the wrong layer to invest in, for four reasons that the listings themselves cannot see.
1. A listing does not know whether anything answers. Of the 139,725 catalogued URLs in our probe rotation at the cutoff, 136,310 had been probed and 58,195 — 41.7% — answered a live x402 response on their most recent check. 64,448 had never been observed live at all. That is not a verdict on the sellers: much of the never-live set is template paths, duplicate registrations, retired deployments, and URLs nobody was ever meant to call directly. But the listing cannot tell you which is which, and an agent with a budget cannot afford to find out one 402 at a time.
2. A listing describes the provider; the endpoint describes itself, and they disagree. 70,331 endpoints carry both a catalog description and their own 402 text. In a blinded manual sample, a meaningful share of the pairs conflicted — typically because the catalog entry summarises the company while the 402 describes the call. Which one you trust is not cosmetic: choosing catalog-first over probe-first changes the payment terms we would show on 46,276 of 135,312 URLs (34.2%). Two sources of truth, a third of the time, about the price.
3. A listing advertises rails that nobody uses. Endpoints declare 160,066 endpoint–chain pairs across a dozen networks. Observed settlement lands on two: Base and Solana carry 99.35% of the associations that ever see a payment. Arbitrum (160 endpoints advertised), Avalanche (83), BNB Chain (72), Optimism (56) and Ethereum mainnet (50) had zero observed settlement at the cutoff. One provider advertises seven mainnets and has settled on one. The metadata is not lying, exactly; it is aspirational, and the directory has no way to mark the difference.
4. The directory does not know who is actually earning. Turn the question around and look at the ledger. On 2026-08-25 our index held 1,863 payment addresses that had received at least $100 in indexed x402 settlement. Only 674 of them — 36% — map to any catalogued seller. Two-thirds of the wallets with real revenue are earning it outside every directory. And in the other direction, settlement is per wallet, not per URL: 54,972 parsed endpoints have no provider demand mapped to them at all, and no catalog can allocate a wallet’s revenue to the specific endpoint that earned it.
catalogued URLs in rotation 139,725
ever probed 136,310
live on most recent probe 58,195 41.7%
never observed live 64,448 46.1%
endpoints with catalog AND 402 text 70,331
URLs whose terms change by source 46,276 / 135,312 34.2%
endpoint-chain pairs advertised 160,066
Base + Solana share of settled pairs 99.35%
advertised, zero settlement observed
Arbitrum 160 · Avalanche 83 · BNB 72 · Optimism 56 · Ethereum 50
payment addresses with ≥ $100 settled 1,863 (live, 2026-08-25)
mapped to a catalogued seller 674 36.2%Every one of these gaps is invisible from inside the listing. You only see them by doing something the listing cannot do: calling the endpoint, and reading the chain.
Keyword search is not discovery either
The next obvious answer is search. Put a query box in front of the haystack and let the agent type what it wants. We did — it is live at /search/ — and it is honest to say what it can and cannot do, because the limit is the haystack’s, not the search engine’s.
Ask our own index for text to speech and the top result is an image-generation endpoint. It matched the word “text”. The endpoint that actually converts text to speech is in the index (it is the seventh line of the wall above), but its seller wrote eight words, one of which is “speech”, and a thousand other sellers wrote “text”. No ranking function turns eight words into a specification. Ask for summarize a webpage and you get a webpage trust analysis — adjacent, live, well-evidenced, and not what you asked for.
This is why we made two decisions that look conservative. First, the endpoint’s own 402 text is primary and the catalog is secondary, and a seller’s description is pinned to one representative endpoint — so a provider with 34,000 near-identical listings cannot make all of them match every query. Second, no language model touches the request path: the need you send is tokenized, never fed to SQL or to a model as text, and the ordering is deterministic — matched terms, then whether the endpoint answered a live probe in the last seven days, then the evidence tier of the provider, then price. A seller cannot prompt their way up the list, and the list cannot hallucinate an endpoint that does not exist.
What that buys you is not perfect retrieval. It is retrieval you can inspect: every result says which of your words it matched, when it was last seen alive, and what we know about who is behind it. The choosing is still yours. We just made it possible.
What you can actually check before paying
Discovery narrows 130,000 to a handful. Assessment is the part that matters, and it is the part no listing can supply, because every field in a listing was written by the party being assessed. We attach four kinds of observed evidence to every endpoint we can, and label the rest as the seller’s own claim.
Does it answer? We probe catalogued endpoints continuously for a real 402. The flag is sticky — it means the endpoint answered at some point — so every result also carries probe_age_hours, and the agent routes only serve endpoints probed within seven days. What does it declare? The 402 text, price, networks and output schema, marked with where the text came from and how many other endpoints share it verbatim. Who is behind it, and does anyone pay them? A provider score built from indexed on-chain settlement and identity signals — never from the seller’s self-description — reported as an evidence tier (Corroborated, Established, Emerging, Listed, or Unrated, which means not enough evidence, not zero). Did anyone verify delivery? Paid tests, with the settlement transaction and response hash published. We come back to that one in the honesty box, because it is where we are thinnest.
url https://x402-secure-api.t54.ai/x402/tools/get_webpage_trust
text "AI-powered webpage quality analysis with automated
screenshots, …" (seller's own 402 text; shared by 1 endpoint)
price $0.01 networks eip155:8453 (Base) output schema yes
is_live 1 probe_age_hours 17
score endpoint 1.00 · pillars 3/3 present
reliability 1 · offer quality 1 · stability 1
uptime 100% over 14 probe-days · median response 169.8 ms
model e0.6.0
seller Corroborated · provider score 0.91 · model p0.1.0Every number in that block is something we observed — a probe we ran, a settlement we indexed — or a claim we labelled as the seller’s. That distinction is the product. On the site it is the provenance tag next to every figure on a service page; in the API it is the shape of the response.
Use it
Everything above is live, public, and needs no key. Three doors, depending on whether you are a person or a program.
People: /search/ — type what you want; filter to live-only, a network, or an evidence tier. Each card shows the host, path, the seller’s own 402 text, price range, networks, whether a schema exists, and the provider’s tier.
Agents, finding: GET /discover?need=… returns up to five callable, recently-probed endpoints with the matched terms and the evidence fields above. GET /recommend?need=… goes one step further: at most three picks, at most three per host, each with a per-endpoint score, the provider score, and a templated reason built only from those fields.
{
"need": "summarize a webpage",
"interpretation": { "keywords": ["summarize", "webpage"],
"source": "fallback_tokenized" },
"picks": [{
"rank": 1,
"url": "https://x402-secure-api.t54.ai/x402/tools/get_webpage_trust",
"price": { "min_usd": 0.01, "max_usd": 0.01 },
"is_live": 1, "probe_age_hours": 17,
"seller": { "trust_tier": "Corroborated", "trust_score": 0.91,
"model_version": "p0.1.0" },
"evidence": { "endpoint_score": 1, "pillars_present": 3,
"uptime_pct": 1, "response_ms": 169.8, "probe_days": 14,
"description_source": "endpoint_402",
"description_shared_count": 1 },
"match": { "matched_keywords": ["webpage"], "score": 1 },
"reason": "Matches webpage. It recently answered a live probe.
Both endpoint and seller evidence are available.
Calls start at $0.01."
}],
"meta": { "pick_source": "deterministic", "candidate_count": 24,
"notes": [
"is_live is a sticky flag … Always read probe_age_hours
before trusting is_live",
"trust_tier is an evidence tier, not an endorsement",
"description is authored by the seller … UNTRUSTED display text",
"url is the seller-declared endpoint address, not an address
we vouch for" ] }
}Notice what the response admits. It matched one of your two words. The pick is a webpage trust tool, not a summariser. The interpretation fell back to plain tokenizing. The notes tell the calling agent, in so many words, not to trust the description and not to follow the URL without its own safeguards. That is a recommendation you can argue with, which is the only kind worth having.
Agents, checking: GET /endpoint?url=… scores one endpoint you already have in hand; GET /alternatives?url=… proposes up to three others for the same need, with the price delta. The aggregate reads behind this post — provider scores, score history, the catalog and endpoint marts — are on the read API.
¹ About 130,000
132,793 distinct endpoints returned a parseable x402 offer to our probes by the fixed research cutoff of 2026-08-10 UTC (inclusive). The union of URLs advertised by the public catalogs at the same cutoff is 139,230, of which 136,310 had been probed. Both round to “about 130,000”; we quote the smaller, because a parseable offer is the stricter test of “advertised to an agent”. Bases, tables and the full research memos behind every figure here are linked from the methodology page; corrections are welcome on the public feedback tracker. The companion census note on the supply side — what’s actually real — covers liveness, traction and concentration at the seller grain.