Three different questions, three different depths
Every claim that circulates about “how big is x402” or “how alive is the agent economy” is answering one of these three questions. Answering a different one is not wrong — it is different. The category error is treating them as substitutes.
| Layer | Predicate on the URL | Who measures this at scale |
|---|---|---|
| 1. Advertised | Somebody published this URL as an agent endpoint. | Registries, catalogs, aggregators (CDP Bazaar, x402-list.com, Agents Trust, etc). |
| 2. Answers a probe | The URL returns a payment challenge when we ask. This is liveness. | Agents Trust measures this at 138k-URL scale (see below). |
| 3. Was ever PAID | The URL has actually been paid, by whom, and does the counterparty walk back to a registry-owned identity. This is settlement. | The ERC-8004 x x402 ownership join we publish (below). |
The three layers are strictly nested from top to bottom: a URL that has been paid was necessarily advertised and answers. A URL that answers a probe was necessarily advertised. The reverse implications do not hold, and that is the whole finding: each layer is a strictly smaller population than the one above it.
The probe layer, measured at real scale
Layer 2 is genuinely useful work. It answers a question the catalog layer cannot: of the URLs that were advertised as agent endpoints, which ones actually respond? Answering that question at 138k-URL scale is not trivial. Agents Trust publishes the funnel on their landing page — we quote it verbatim from a fetch on 2026-09-03 because their page carries no snapshot date, so no stronger attribution is available:
| Stage | URLs | Their stated meaning |
|---|---|---|
| Advertised to agents | 138,204 | Catalogued URLs known to their crawl. |
| Ever answered a probe | 64,849 | Returned a payment challenge at least once when asked. |
| Callable now | 30,857 | Answering a probe on their current live check. |
Source: Agents Trust landing page,
https://agents-trust.com/, as
published on their landing page, fetched
2026-09-03;
no snapshot date given. Their stated predicate is
“ask every catalogued URL for a payment challenge” —
liveness (does the URL respond to a probe), not settlement (was the URL ever paid, by whom).
The single $1.2M / 3.1K-payers figure on the landing page is on an example card for a fictional api.example.tools URL — never cite as an ecosystem statistic.
The paid layer — endpoint AND publisher level, together
Layer 3 asks a strictly narrower question: not whether the URL answers, but whether it has ever been paid, by whom, and whether the counterparty walks back to a registry-owned identity. This is the question the market-map catalog alone cannot answer, and the question the probe layer alone does not try to answer. Our reference join is published in dataset form at /x402-paid-but-unrated; the single-paragraph summary of the join lives here so it can never drift from the publisher-level context that has to sit beside it:
The join, both levels, one paragraph. 14,338 earning Base x402 endpoints → 1,291 (9.00%) ERC-8004-owned → 9 rated → 0 commerce-backed; publisher level = 26 distinct pay_tos, top one 67.2% (875 endpoints), 4 rated, 0 commerce-backed. Per-publisher dedup capped at 50 on the base-resolvable count — disclosing this cap on-page is part of the finding, not an addendum.
Sample: 14,338 x402 endpoints on Base with quality.l30DaysUniquePayers >= 1 in the 2026-09-01T11:23:10Z bazaar catalog snapshot. Every share is a lower
bound — pay_to may be a
treasury wallet distinct from the ERC-8004 registration owner.
Full derivation:
/x402-paid-but-unrated;
the same numbers ship byte-identical in
the market-map JSON export
under reputation_join_base.
The 0-endpoint / 0-publisher commerce-backed count is a boundary condition of the two surfaces, not a rating: we index 44 commerce-backed agents — every one of them ships over Virtuals ACP, not as an x402 HTTP endpoint in the CDP Bazaar. See the commerce-backed cohort dataset for the got-paid cut in its own frame.
A 402 is a challenge, not a buyer
The hinge of this whole page. When a URL responds to a probe with an HTTP 402 Payment Required, that is a challenge: it says if you want the resource, here are the terms of payment. It says nothing about whether anybody has ever met those terms. An endpoint can serve a well-formed 402 for years without ever being paid once. This is why we published a whole piece (Report 10) on the call-weighted concentration cut: a small cohort of endpoints carries the overwhelming majority of paid activity, the median 30-day call count for the one-payer cohort is 1, and a one-payer endpoint is indistinguishable from self-dealing from on-chain data alone.
This is also why we do not present the paid layer as a correction to the probe layer. Layer 2 is a genuinely useful, genuinely hard measurement of a genuinely different property. The two answers coexist; a serious reader wants both, at the right question for each. What we contribute is layer 3.
What no other index joins
What is missing is the ever-paid cross-reference against
on-chain ERC-8004 identity. Per-endpoint settlement figures do
exist elsewhere — x402.fuchss.app
publishes per-endpoint 30-day settlements, distinct payers, and
USDC volume at payTo-wallet
level, and acknowledges on-page that settlement is
wallet-level, not endpoint-specific. What no other
index does is JOIN that paid-endpoint cohort against on-chain
ERC-8004-owned identity — walking the counterparty back
to a registry-owned agent we can name. That is the third
layer, and it is what this piece exists to name.
Methodology and scope
External figures. The probe-funnel numbers are
quoted verbatim from the Agents Trust landing page at
https://agents-trust.com/. The
page carries no snapshot date; the only dated attribution we
can offer is when we fetched it
(2026-09-03).
Their example-card figure ($1.2M / 3.1K payers) is on a
fictional api.example.tools
card and is never cited on this page as an ecosystem
statistic.
Our figures. The endpoint- and publisher-level
cuts come from the frozen ERC-8004 x x402 join dated
2026-09-01
(snapshot 2026-09-01T11:23:10Z), predicate
smartcontractauditpro/commerce_backed.py. Full
derivation and per-publisher figures live at
/x402-paid-but-unrated. The
same dict projects byte-identical into
the market-map JSON
under reputation_join_base.
Cross-cutting discipline.
l30DaysTotalCalls from the CDP Bazaar is a request
count, not settled USDC value. The CDP Bazaar catalog is one
Base-weighted x402 discovery source; the probe funnel is one
operator's crawl over what they catalogue. Neither is an
ecosystem census. Every share we quote on the join is a lower
bound — pay_to may be a
treasury wallet distinct from the on-chain registration owner,
and the ERC-8004 spec is still Draft.
Suggested citation: On-Chain Agent Intel. "A URL That Answers Is Not a Counterparty That Paid (2026-09-03)." https://onchainagentintel.io/blog/probe-vs-paid. Published under CC BY 4.0 — attribution back to On-Chain Agent Intel is required.