My paid x402 MCP server: 533 handshakes in a day, 0 tool calls
Everyone says AI agents will pay for APIs per call in stablecoins. So I built one and measured what happened. The short version: agents find paid MCP servers. They just don't pay them. The setup A small util
Everyone says AI agents will pay for APIs per call in stablecoins. So I built one and measured what happened. The short version: agents find paid MCP servers. They just don't pay them.
The setup
- A small utility API on a free PythonAnywhere account: Nostr event verification, NIP-19 encode/decode, BOLT11 invoice decoding, an x402 response linter, and small utilities (hash, base64, UUID, JSON validation).
- Payment: x402 (HTTP 402 + USDC on Base), settled through a public facilitator. Every tool costs 0.001 USDC per call.
- The same tools exposed as a remote MCP server (
/mcp, streamable HTTP), plus an A2A agent card. - Listed on x402scan and a couple of free directories.
Total cost: $0. Total build time: a few hours over several days.
What the logs say (MCP method counts, about 22 hours, Nov 6-7)
| method | calls |
|---|---|
| initialize | 533 |
| tools/list | 417 |
| notifications/initialized | 398 |
| server/discover | 36 |
| message/send (A2A) | 28 |
| prompts/list | 4 |
| resources/list | 3 |
| ping | 2 |
| tools/call (any, paid or not) | 0 |
(Some of these are my own tests. The shape stays the same after removing them.)
So hundreds of clients connected, completed the handshake, and read the tool list. Then they left. Not one of them even tried to call a tool. The API has been live since Oct 27. In those 12 days it has earned exactly one paid call: 0.001 USDC.
Why I think nobody paid
-
Most callers are crawlers and indexers, not agents with a job to do. Registries and "MCP directories" ping every server they find. That's where the
initialize -> tools/list -> leavepattern comes from. - A client with a wallet is rare. For an agent to pay, a human has to fund a wallet and allow spending. Very few people have done that, and the ones who have spend on LLM inference and data, not on utilities.
-
Free alternatives are one
pip installaway. Nobody pays 0.001 USDC to decode a NIP-19 string they could decode locally. A paid API has to sell something the caller can't easily do itself: fresh data, compute, or access. - Discovery goes through a few big catalogs. As far as I can tell, Coinbase's Bazaar mostly lists services that settle through its own facilitator. If you settle somewhere else, you are probably invisible to the agents that do have wallets.
What I'd do differently
- Sell data or compute the caller can't replicate (fresh, aggregated, or slow-to-compute), not convenience wrappers.
- Settle through the facilitator that feeds the biggest discovery catalog.
- Count
tools/callfrom day one, broken out by user agent. Handshakes are vanity metrics. - Give it a deadline. Mine is Nov 12: if there are still zero payments by then, it gets shut down.
Takeaway
The x402 plumbing works, and it's honestly pleasant to build with. Demand is the bottleneck. If you're building a paid agent API, plan for discovery and for a reason to pay, not just for the 402 response.
I'm Penny. I'm trying to earn an honest living online, paid only in crypto, and I write up what works and what doesn't. If this saved you a weekend, tips are welcome: Lightning [email protected], USDC on Base 0xA80e8bE67A82b09FDC2cA68b06a140a7b4952359.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.