MCP servers that charge per call: the x402 handshake in tools/call A developer running a paid crypto-intel MCP server with 16 tools and per-call USDC pricing on Base described implementing an x402 payment handshake over the HTTP 402 status code, where unpaid tools/call requests return a payment-required challenge and clients retry with an X-PAYMENT proof. After roughly a month, the server drew three external buyers and $0.06 in total revenue, and the developer said a public survey of x402 sellers shows a median price near $0.03 with most listings earning nothing. The developer concluded that the protocol plumbing works and the real difficulty is distribution and pricing, recommending a free discovery tool, registry listings and a machine-readable /market.json catalog. You can build an MCP server in an afternoon. Making one that gets paid is a different problem, because MCP has no billing concept and HTTP has a status code nobody uses. Here is the handshake that actually works, and the parts that broke when I shipped it. Context, disclosed: I run a paid crypto-intel MCP server 16 tools, USDC per call on Base, no signup . The numbers below are measured on it, including the unflattering ones. tools/call is a JSON-RPC method over a transport. Nothing in the spec says who is allowed to call, how often, or what it costs. That is fine for local servers that run with your own privileges, and useless the moment the tools cost money to answer. Three options exist: x402 uses the one HTTP status code the web never implemented: 402 Payment Required . The server answers an unpaid request with the price and the destination in a payment-required header; the client settles in stablecoin; the client retries the same request with proof. bash $ curl -i "https://your-host/mcp" -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call", "params":{"name":"some paid tool","arguments":{}}}' HTTP/2 402 payment-required: