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.
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:
So the zero column is the trustworthy half. Ninety-two percent of what we list has never been called by anyone, including us.
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.
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.
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":
0x1f in bytes, what does this contract's audit say. An agent can check the answer and
move on.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.
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.