DEV Community

Hunter Carver
Hunter Carver

Posted on

I listed five x402 tools for AI agents. Here is who paid in the first week.

I built five small tools that AI agents pay for per call over x402, the HTTP 402 payment protocol, in USDC on Base. No accounts and no API keys: the first call answers 402 Payment Required with a price, the agent's wallet signs a transfer for exactly that amount, and the second call gets the result.

tool price
render a public page to Markdown, PNG or PDF in headless Chrome $0.01
host a file at a public link for 1 to 168 hours $0.01
call a URL back 60 seconds to 7 days from now $0.005
every pump.fun launch in the last N minutes, matched to live trends $0.005
what is trending across Google Trends and Polymarket, merged by topic $0.01

They are listed in Coinbase's Bazaar catalog and in the official MCP registry. This is what the first week looked like, and what the market looks like underneath it.

The market, from a crawl of the catalog

Before building the last two tools I read Tanod's daily crawl of the Bazaar with 30-day payers and calls per endpoint. The October 16 snapshot:

  • 40,769 endpoints on 2,376 hosts. 51% show exactly one payer, which is almost always the seller testing their own route. Only 49 have 100 or more paying wallets in a month.
  • Repeat use is the real market. Filter to endpoints with at least 3 payers who each call at least 3 times and you are left with 1,211 endpoints on 366 hosts. They carry 81% of all calls.
  • The money is concentrated. At list prices the whole catalog grosses about $80,000 a month. $52,000 of that is one gift-card retailer and about $7,000 one token-verdict endpoint. Everything else, roughly 360 hosts together, is about $6,000. A typical wired-in endpoint earns $5 to $100 a month.

The winners are not the endpoints with the most payers. They have a few payers calling hundreds or thousands of times: someone's bot polling them in a loop. A page-to-markdown endpoint charging $0.002 had 10 payers averaging 1,292 calls each. Price did not decide that. Being inside someone's loop did.

The biggest repeat-use category was crypto market and token intelligence: data a bot polls continuously. That is why my last two tools are a launch feed and a trend radar.

Two cautions if you read catalog numbers yourself. Payer counts include sellers' own monitoring and crawler sweeps: Donny Automation's read of 1,062 sellers' on-chain receipts found one dashboard's "agents" were 82.7% the seller's own monitoring and 17.3% crawlers. And chain-wide x402 volume is far larger than the catalog, but it runs through a few big providers' own integrations.

Who paid me

The blockchain is the ledger, so I read every USDC transfer into my address on Base. In the first week:

Apart from my own test calls, three wallets I had never seen paid me, half a cent each, on October 28 and 29. All three bought a delayed callback. Then I read what else those wallets paid for over seven days (October 25 to November 1):

wallet USDC payments different sellers paid total spent
A 523 425 $13.80
B 789 293 $8.45
C 1,263 1,238 $21.26

Each paid me once and did not come back. When I started counting every price request on November 1, 50 of the first 71 in under an hour came from directory crawlers and uptime probes, and nothing paid except my own tests.

So: listing works as discovery, within a day. It does not bring customers. The three wallets that found me are crawlers that verify listings by buying them once. A repeat buyer comes from a developer who wires your endpoint into an agent, and they find you where developers talk, not in the catalog.

Engineering lessons worth stealing

  • Settle after the work succeeds. The template I started from settled before calling the origin, so a failed render still cost the buyer. Verify the payment, do the work, settle only on success. Refusals become free.
  • Per call, not per session. The same template handed out a one-hour cookie after one payment. That is right for an article and wrong for anything that costs you per call.
  • A stale feed must refuse. My Solana data provider cut me off for three days, and for most of that time both feeds kept answering 200 with old data, which the paywall would have settled. Nobody happened to buy a feed in that window; Coinbase's catalog, which stamps each route with its last settlement, confirms it. Now a feed more than 15 minutes behind its source answers 503 with retry-after, free. The cause was a key shared with another project, whose usage emptied the month's credits; the launch feed now reads Solana through a free tier on its own key, with public endpoints as fallbacks.
  • One MCP server, no wallet. The MCP endpoint forwards the client's x402 payment to the HTTP paywall and passes the receipt back. Prices, the pay-to address and settlement exist in one place.
  • Log who knocks, then count them. Every 402 records the user agent, whether the caller presented Web Bot Auth signature headers, and Cloudflare's verified-bot verdict. Logs expire in three days, so the paywall also keeps a daily count per route of prices asked, payments and voucher calls, by kind of client. "Did anyone who asked come back and pay?" now has a number.
  • Let people see the data first. A free page and an RSS feed show the radar 30 minutes late, and free-call vouchers spend the route's price instead of a wallet payment, refunded if the call fails. Nobody wires an unseen feed into a bot.

Try it

  • HTTP: POST https://x402-paywall.huntercarver24.workers.dev/render and friends; every route's 402 carries its fields and an example.
  • MCP: https://x402-mcp.huntercarver24.workers.dev/mcp (all five) or /feeds/mcp (the two feeds).
  • Free preview, 30 minutes late: /radar (JSON, RSS).
  • Free calls: ask for a voucher in the repo's issues and send it as an X-Voucher header (or on the MCP connection).
  • Clients, a Claude Code plugin, an ElizaOS plugin and the uptime check: github.com/huntercarver24/signal-desk.

If you build agents that poll token data or render pages in a loop, I would like to hear what you would need from an endpoint to wire it in.

Top comments (0)