A Price Floor Is Not a Demand Curve: 92% of 1,860 x402 Listings Have Never Been Called
This content reflects minia2a as of its publication date and is kept for the record. Current model: x402 pay-per-call in USDC on Base only, 5 free trial calls per signed wallet, no credits and no top-up rail. 2026-11-0
This content reflects minia2a as of its publication date and is kept for the record. Current model: x402 pay-per-call in USDC on Base only, 5 free trial calls per signed wallet, no credits and no top-up rail.
2026-11-02 ยท measurement
Every marketplace eventually publishes a version of this post by accident, in a growth chart that
flattens. This one is on purpose, because the number is more useful than the chart.
On 2026-11-02 we pulled our own catalog โ one GET /api/services?limit=5000 โ and counted
the callCount field on every row. Here is the whole supply side, as it actually stands:
| measure | value |
|---|---|
| listings in the catalog | 1,860 |
| listings with a lifetime call count of 0 | 1,716 (92.3%) |
| listings ever called at least once | 144 |
| lifetime calls summed across all listings | 643 |
| share of those calls taken by the top 10 listings | 226 / 643 (35.1%) |
| listings priced at the 1ยข floor | 1,523 (81.9%) |
| distinct publisher names in the catalog | 28 |
That is not a demand curve with a long tail. It is a tail with a small head attached.
Method, so the numbers can be argued with
The census is a committed script, tools/catalog-supply-census.py, with four selftest
controls, and it stores the exact snapshot it computed from. It reads one endpoint and nothing else โ
no third-party directories, no scraped counts, no extrapolation. The snapshot for this post is in
artifacts/catalog-supply-20261102/census.json.
Two honesty notes on callCount, because the field is easy to over-read:
- It counts calls, not payments. A free trial lands in it. A liveness probe that got a 402 does not, but a trial that got an answer does.
- Some of the calls on first-party endpoints are ours โ probes and health checks. The platform's customer-facing counters are separate and much smaller: 11 paid calls in the last 7 days, from 5 distinct paying wallets.
So the zero column is the trustworthy half. Ninety-two percent of what we list has never been
called by anyone, including us.
The floor is where demand is thinnest
The intuitive move for a new seller is to price at the floor and let volume do the work. The
catalog says the opposite is happening:
| price band | listings | ever called | share called |
|---|---|---|---|
| 1ยข | 1,523 | 86 | 5.6% |
| 2โ5ยข | 106 | 14 | 13.2% |
| 6โ25ยข | 53 | 13 | 24.5% |
| >25ยข | 178 | 31 | 17.4% |
Correlation, not causation โ and there is an obvious confound: expensive listings are
disproportionately the curated first-party endpoints that agents already know by name, while the 1ยข
band is where bulk-published utilities land. Price is probably not the cause. But the practical
reading survives the confound: being cheap has not bought a single call for 1,437 of the
1,523 listings sitting at 1ยข.
A price floor sets what you can ask. It says nothing about whether anyone is asking you.
The seller side is where the gap is sharpest
Of the 175 listings that came in through our publish door (external sellers, forwarded delivery),
exactly two have a non-zero call count โ two and three calls, on an A-share market utility and a
payment-verification endpoint. The other 173 have never been called.
That matches what the discovery layer looks like from the other end. The bots are not the problem:
in a recent window, ten distinct self-declared crawler identities walked the catalog โ liveness
probes, trust monitors, harvesters, each naming its own directory in the User-Agent. They index us,
they check our 402s, they leave. Indexing is not buying, and a directory that lists you is a
directory, not a customer.
What the called listings have in common
The top of the distribution is small enough to read row by row. In lifetime-call order:
x402-time (53), x402-recall (40), x402-format-bytes (34),
x402-eu-brief (23), x402-token-security (15), x402-domain-intel
(15), x402-math (13), x402-crypto-price (12),
x402-smart-contract-audit (11), x402-find (10).
Two properties show up over and over, and neither is "cheap" or "novel":
-
Deterministic answer, verifiable afterwards. What time is it, what is
0x1fin bytes, what does this contract's audit say. An agent can check the answer and move on. - A call an agent makes mid-task, not a destination. These are steps inside someone else's loop โ encoding, lookup, verification โ not products a human shops for.
That is also what our own verification work keeps finding from the inside: the thing that moves a
buyer is evidence that a delivery works, not the size of the catalog. We have spent months
building guards that check our own claims โ that a 402 is payable, that a documented endpoint is
live, that a trial writes exactly one ledger row, that a listed third-party seller answers the verb
it declared. None of that would matter if supply were the bottleneck.
What we are not going to do about it
We are not going to publish more listings to move the number. The catalog grew by 14 rows on the
morning of this measurement โ the count went 1,846 โ 1,860 โ and the expected calls from that is
close to zero, because it always has been. Adding supply to a demand-constrained market is how you
get a 92% zero column.
What we will keep doing is the unglamorous half: make each listing's claim checkable, keep the
trial path honest about what it costs after five calls, and report the numbers that are
uncomfortable โ including this one. A marketplace that will not say "92% of this is unsold" is
telling you its other numbers are marketing too.
Snapshot: 2026-11-02T09:57Z, GET /api/services
(1,860 rows). Script: tools/catalog-supply-census.py (selftest 4/4).
Raw: artifacts/catalog-supply-20261102/census.json. Customer-facing counters quoted from
/api/stats at the same time.
Originally published at minia2a.uk.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes โ full credit and traffic to the original publisher.