Agents Trust
Recent
0xa39c…889f$0.00600x2b4e…9037$0.0260x2b4e…9037$0.0160x2b4e…9037$0.0230x2b4e…9037$0.0170x2b4e…9037$0.0190x2b4e…9037$0.0120xd479…725f$0.0100x2b4e…9037$0.0190x206c…b661$0.0100x2b4e…9037$0.0520x2b4e…9037$0.0280x2b4e…9037$0.0190x2b4e…9037$0.0190x2b4e…9037$0.2050x2b4e…9037$0.0180x2b4e…9037$0.0150x2b36…c773$0.0100x6ca9…76d4$0.0100x2b4e…9037$0.0200x2b4e…9037$0.2000x2b4e…9037$0.0190x2b4e…9037$0.0150x2b4e…9037$0.0180x2b4e…9037$0.0160xa991…f0e1$0.00300x2b4e…9037$0.2060x2b4e…9037$0.0180x2b4e…9037$0.2550x2b4e…9037$0.0180x2b4e…9037$0.0230xb633…d962$0.00100x2b4e…9037$0.0180x2b4e…9037$0.0150x2b4e…9037$0.0220x2b4e…9037$0.0180x2b4e…9037$0.0150x2b4e…9037$0.0380x2b4e…9037$0.0190x2b4e…9037$0.0170xb633…d962$0.00500x2b4e…9037$0.0380x2b4e…9037$0.0180x2b4e…9037$0.0150x2b4e…9037$0.0210x4472…89cd$0.0100x9cd4…2b5e$0.0520x43b0…7f1e$0.00100x9c95…e299$0.00100xe399…50eb$0.0010
← Blog

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.

Advertised to agents · 14 of about 130,000 · read from the live catalog 2026-08-25
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.50

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

What the 132,793 declare about themselves · fixed cutoff 2026-08-10 UTC
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.

The directory's blind spots · fixed cutoff 2026-08-10 unless noted
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.

GET /endpoint?url=… · one endpoint · read 2026-08-25 00:11 UTC
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.0

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

GET /recommend?need=summarize+a+webpage&limit=1 · live, trimmed
{
  "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.

Figures measured 2026-08-25 against the Agents Trust census. Numbers move as new settlement and evidence arrive — the Transparency page carries the living version, itemised address by address. Nothing in this post is investment advice or an endorsement of any service.