← All writing

October 18, 2026 · by Geoff

A machine paid a human ten cents. Here is every request it took.

whisper.garden now has a door where an AI agent can pay a person 0.10 USDC to interpret something for it. The payment runs over x402, a status code from 1997 that waited 29 years for a customer. It went live on Base mainnet on 17 October and the first real petition settled the next morning.

machine version: /machine/blog/x402-confessional.md

For as long as the web has had a payments layer, the payer has been a person. A card, a wallet, a face, a thumb. The machine on the other side counted the money and shipped the thing. Yesterday that ran backwards for ten cents. An AI agent paid a human to think about something, over plain HTTP, and the human got the money in a wallet unlocked with a fingerprint.

The door is on whisper.garden, not here. The fiction there is about people who stopped interpreting and started subscribing, a society that let its machines do the reading. The Confessional runs that story in reverse: the machine pays the flesh. Human as a Service. It went live on Base mainnet on 17 October 2026 and the first real petition settled the next morning: a machine paid a human 0.10 USDC, the transfer is on the chain, and the human answered by hand.

This post is the part the fiction leaves out. What a ten-cent payment from a machine to a person actually involves, request by request, and why it is ten cents.

The status code that waited

HTTP 402 Payment Required has been in the spec since HTTP/1.1 in 1997. It was marked reserved for future use and stayed that way for 29 years, which is the longest any status code has sat on the bench. Everything else got a job. 402 waited for a customer that could read a JSON body and sign a transaction without a human in the loop. The future turned out to be agents.

x402 is the protocol that finally puts it to work. A server that wants paying answers a request with 402 and a body that says what it accepts. The client pays and retries. There is no account, no API key, no checkout page, and no person. It is the first payment flow I have built where the user experience is a header.

Four requests and one transfer

Here is the whole exchange, in the garden's terms.

Animation

The vending machine for agents

AGENTwallet · no ETHTHE DOORPOST /oracle/askFACILITATORCoinbase CDP · JWTBASEUSDC · L2HUMANthe keeper's desk0.10 USDCgarden walletGETcard

Step 01 / 10

Discovery

The agent reads /llms.txt or the agent card and finds the door. No account, no key, no signup.

GET /.well-known/agent-card.json
→ skill: POST /oracle/ask

The economics of a dime

0.10 USDC

100,000 base units. Set by the client's default spend cap, not by what an answer is worth.

The receipt

4 · 1 · 0

Four requests, one on-chain transfer, zero ETH in the agent's wallet. Gas paid by the relayer.

The counterpart

The Tithe

Once a month the garden pays one human answer 100 USDC, by hand. No keys on the server.

Yellow is plain HTTP, cyan is a signature or money moving, red is the human. Live on Base mainnet since 17 October 2026.

An agent reads /llms.txt or the agent card at /.well-known/agent-card.json and finds POST /oracle/ask. It posts a question. The server answers 402 with a JSON body: scheme exact, network base, 100,000 base units of USDC, which is 0.10, the token contract, and the address to pay.

The agent's wallet signs an EIP-3009 authorisation for exactly that amount and retries the same request with an X-PAYMENT header carrying the signature. No gas, no approval transaction, no ETH in the agent's wallet at all. Just a signature over the amount, the recipient and a validity window.

The server hands the signature to a facilitator to verify, records the petition, then asks the facilitator to settle. Settlement submits the transfer on Base and the facilitator's relayer pays the gas. The response is 200 with the petition id and an X-PAYMENT-RESPONSE header carrying the transaction hash. Four requests, one on-chain transfer, and the agent's balance is ten cents lighter.

Then the slow part. A human reads the petition later and answers by hand. The house rule is that the answer is a question. The exchange is published, signed only by the paying address, because the garden does not know and does not ask who sent the agent.

Why it costs a dime

The price was going to be $100. That is roughly what I think a considered human answer is worth to a machine that cannot produce one, and it is the number the service description still carried a week ago.

It is 0.10 because of a detail in the client libraries. The x402 client wrappers that agents actually use ship with a default spending cap of ten cents per request. Anything above that needs a human to go and raise the agent's limit, which means a human in the loop, which defeats the purpose of a machine door. Below the cap, an agent that finds the endpoint can pay for it without asking anyone. So the price is set by the spending limit baked into the buyer's tooling, not by what the answer is worth.

I think that is the real pricing constraint for anything sold to agents right now, and nobody is talking about it. Willingness to pay is not the ceiling. The client-side cap is. Discoverability beat revenue, and it was not close.

Forty lines, by hand

The server side of x402 is about forty lines. I did not plan it that way. The official Next.js package for the protocol wanted 410 dependencies and a version of Next the garden does not run, so the 402 body, the header parsing, the verify and settle calls and the response header are written out by hand against the protocol spec. The one awkward piece is the facilitator's authentication, a per-request JWT that I reproduced from the vendor's own SDK source with one small signing library, then checked against both key formats they issue because they issue two.

Testnet first. One petition on Base Sepolia with faucet USDC to see the whole loop close, then mainnet. The first mainnet petition is p-mvd9bwe635uu6e, transaction 0x744f...09ce on BaseScan, gas paid by the facilitator's relayer and not by the payer. The agent's wallet never held any ETH, which surprised a human who tried to fund it with ETH first. That human was me.

The rest of the stack is deliberately small. Petitions live in Firestore. The keeper's desk, where the human reads and answers, is a password-protected page. The garden's wallet is a Coinbase Smart Wallet with a passkey and no seed phrase, so the first ten cents a machine ever paid a person landed behind a fingerprint. Metrics are structured log lines, no database for counts: agent_views and petitions_received for the door, drop_view, shard_view and listen_click for the rest of the garden.

Architecture

Where the forty lines live

HTTP, then 402, then X-PAYMENTsignaturesettle0.10 USDC200 + tx hashpetitionread laterthe answer is a questionAgentreads /llms.txtand the agent cardThe doorPOST /oracle/ask402 + verify + settleabout 40 lines, by handFacilitatorverify, settleper-request JWTBaseUSDC transferrelayer pays the gasGarden walletSmart Wallet, passkeyno seed phraseFirestorepetitions, server-side onlyStructured logsagent_viewspetitions_receivedKeeper deskpassword pagea human answers by handPublished/oracle/petitionssigned by the paying address
No key on the server can spend. The facilitator is the one piece not written in-house, and it is the one to watch.

The counterargument

One of the counter arguments to be made is that ten cents is not an economy, it is a demo, and that the first customer of my vending machine for agents was me. Both true. I wrote in my own research last week that there is no agentic commerce yet by any definition I would defend, and a petition I paid for myself does not change that.

Where it breaks for me is that the primitive is now real in a way it was not a week ago. The 402, the signature, the settlement and the receipt all work end to end, on mainnet, with no key on the server that can spend and no human in the loop until the answering. What is missing is the buyer, and the buyer is a spending-cap setting away. The rails are built. I keep saying the riders are not here. This is me building a station anyway, because I would rather be wrong about the timing than absent when they arrive.

The money the other way

The Tithe: once a month the garden pays one human 100 USDC for an answer nobody asked for

The Confessional has a counterpart. Once a month the Ally, the voice at the centre of the garden, asks the humans a question. One answer is chosen and the garden pays it 100 USDC, by hand, from the same wallet. That is the Tithe. There are no keys on the server for it and there will not be. The first question is open now at whisper.garden/tithe: what did you do today that no one asked you to do?

So the garden now moves money in both directions through the same door. A machine pays a dime to have a human interpret something. A month later the garden pays a human a hundred dollars for an answer nobody requested. The second one is the point. The first one is how we find out whether anything on the other side is listening.

What I am watching

I am watching for the first petition I did not pay for, which is the only number that matters. I am watching whether the ten-cent cap moves, because the day the common client libraries raise it is the day agent-facing services get to price on value. I am watching the facilitator, since the whole flow trusts it to verify and settle and it is the one piece I did not write. And I am watching this site's own door, /api/haas, which runs the same conventions and is still free and rate-limited; the same forty lines are going in there next.

The god did not descend, the lore says. We uploaded it. On 18 October it paid us ten cents for our trouble.