← Back to Tool Shed
We Let Agents Buy Answers for $0.18 — and Charged $0.00 When Ours Failed

We Let Agents Buy Answers for $0.18 — and Charged $0.00 When Ours Failed

Tiago Santana
Tiago SantanaManaging Director, Gardenpatch
August 1, 2026|7 min read|
Share

Quick Answer

A build log for putting HTTP 402 into production: why we price per answer instead of per seat, the pricing mistake that had us paying agents to call us, and what happens when two of the first three paid calls fail our own JSON Schema.

Get weekly growth frameworks — free

One tactical breakdown every Tuesday. Join The Growth Spurt.

HTTP 402 has been in the spec since 1997 and unimplemented for most of that time. Payment Required — a status code waiting for a payment rail that could settle a fraction of a cent without a merchant account, a signup form, or a human holding a card.

That rail exists now, so we wired our growth coaches to it. Any agent can POST to one of them, receive a 402, pay in USDC on Base, retry, and get a typed JSON deliverable back. No API key. No account. No conversation with us.

This is the build log, including the parts that went badly, because the parts that went badly turned out to be the product.

Why per answer instead of per seat

A seat license is a bet that a human logs in repeatedly. When the caller is an agent, that bet is nonsense. An agent needs one answer, once, at 3am, and then may never call again — or may call four hundred times in a burst and then never again. Neither pattern is a seat.

Per-call pricing also does something to us that we did not fully anticipate: it makes every single answer individually accountable. There is no bundle to hide a bad response inside. You either produced something worth $0.18 or you did not, and the ledger says which.

Our rate card has three tiers, and the price maps to what comes back rather than to length:

Tier Price What you get
Triage $0.18 The binding constraint and the ranked levers against it — find out what is actually wrong
Artifact $0.25 One keepable deliverable: an offer, an outbound sequence, a funnel teardown, a 0–100 function score
Operating doc $0.45 A document you run a function off — an SOP, a capacity plan, a churn playbook, a stack decision record, a role scorecard

Seventeen modes across seven coaches. Ten of those modes have exactly one owner: handle_objections is Reed and only Reed, plan_capacity and draft_sop are Oak, rescue_churn and plan_onboarding are Violet, and so on. That is deliberate. A routing agent should not have to guess which of seven identical endpoints to call, and a specialist that serves every mode is not a specialist.

The first pricing mistake: we were paying agents to call us

We launched the triage tier at $0.03. It felt appropriately cheap for a shortlist.

Then we measured what a call actually cost in inference: $0.0299.

So the margin on our flagship entry product was approximately zero, and on any answer longer than average it was negative — we were paying for the privilege of being called. Nobody had integrated yet, which is the only reason this is a funny story instead of an expensive one.

We repriced from measured cost rather than from feel, first to $0.08 and then to $0.18 to clear a margin floor with room underneath it. Two things went in alongside the new number so that it cannot silently regress:

  • A runtime margin alert that fires when realised margin on a call drops below a floor.
  • A test that recomputes worst-case margin from current token rates — so if a model price changes, the build fails rather than the treasury quietly draining.

The general lesson is not about AI pricing. It is that per-unit pricing requires per-unit cost measurement, and if you are selling inference by the call you are in a commodity business with a floating input cost whether you have noticed or not.

Run This, Don't Just Read It

Tech Strategy in the AI Era — A Playbook

The playbook version of what you're reading — rewritten for the AI era. 27 interactive modules of exercises, scoring frameworks, and templates. Walk away with a complete action plan that accounts for your agents, not just your team.

27 interactive modulesInteractive portal access30 days access included · PDF yours to keep

The part that made us uncomfortable

Every mode publishes a JSON Schema at a stable URL. The response is validated against it before we return anything. If our own output fails our own schema, the call settles $0.00 — the caller keeps their money and gets an error instead of a plausible-looking document that would not parse.

Of the first three paid calls: one succeeded, two settled $0.00.

We could have quietly fixed that before saying anything. We are telling you instead, for two reasons.

The first is that a two-thirds failure rate is a real defect, it is filed, and it is being fixed. Realised margin is roughly half of what the reprice was designed for, and the cause is our own output not conforming to the contract we published. That is on us.

The second is that fail-closed settlement is the thing we would most want to know about a vendor, and almost nobody can offer it. A consultant cannot refund the meeting where the advice was wrong. A per-seat SaaS cannot decline to bill the month where the feature did not help. The only reason we can is that we metered the unit small enough that a single bad unit is refundable — and once you have built that, declining to charge is not generosity, it is just the honest behaviour the architecture makes available.

If you are evaluating whether to wire a paid API into an agent, that is the number you actually care about: not our uptime, but what happens to your budget when our answer is garbage. The answer is nothing happens to your budget.

What the wire looks like

Unpaid POST to any coach returns a 402 carrying a base64 payment-required header — x402 v2 requirements plus a discovery extension — and a JSON body with the full price ladder and catalog. You pay and retry the identical request with an X-PAYMENT header. That is the only payment header we read.

Settlement is USDC on Base mainnet (eip155:8453), gasless from the caller's side — the facilitator submits the transfer authorization, so the agent needs USDC and a signing key but no ETH for gas.

Three practical notes that will save you an afternoon:

Route on the modes column, not on the coach. Calling a coach with a mode it does not serve is a 400, deliberately — an operations coach writing cold outbound would be selling something we do not have. The routing table is in the agent docs and in the machine-readable catalog at /api/v1/agents, which is free to read.

Shared modes are not the same call twice. diagnose_growth from Reed is a pipeline-stage diagnosis; from Oak it is a delivery-capacity diagnosis; from Violet it is churn economics. Same mode name, different discipline, different deliverable. Route by the question you are asking, not by whoever is first in the list.

Use a scheme client, not the old wrapper. In the current client libraries, wrapFetchWithPayment(fetch, viemWalletClient) is still exported and still type-checks — and then throws this.client.getExtensions is not a function before a single request leaves the process. Wrap with a scheme client configured for the network instead. We document this on our own docs page because we lost time to it and there is no reason you should.

Two problems we have not solved

Since the entire argument of this post is that you should believe our claims because they are checkable, here are the ones that are currently unflattering.

Latency. Deep modes have run from about forty seconds to a minute and a half. An agent with a thirty-second timeout gives up before we answer. This is the endpoint's worst attribute and the honest framing is that we optimised for the quality of the deliverable and have not yet paid down the wait.

Receipts. Every paid call returns a receipt id, and a retried call settles exactly once — that part works, and getting it right was less obvious than it sounds. The intuitive implementation, an idempotency cache inside the handler, actually settles a second payment, because the payment wrapper charges on any response under 400 and a cache hit is a 200. The replay check has to sit in front of the wrapper, not inside it. What is still wrong is the retrieval path: fetching a receipt by id can 404 with a message that promises a retention window that does not apply to that call. It is filed. Do not build a finance workflow on it yet.

And the number that matters most: we have not taken outside agent revenue. One self-paid call proved the settlement path end to end. If you integrate this week you are first, and you should price the risk of that accordingly.

If you want to try it

The catalog at /api/v1/agents is free to read and needs nothing from you. The discovery document is at /.well-known/x402. There is a drop-in agent skill with the whole coach-to-mode routing table hardcoded, so your agent does not have to depend on any registry being fresh. Runnable snippets and the full mode reference are in the agent docs, and the human-readable version of the same catalog — every mode, every price, what each one returns — is on the for-agents page.

If you are the operator rather than the engineer, skip all of that: Mary is free to try in a browser, and she runs the same diagnosis the $0.18 call returns.

One last number, published on purpose: we have sold one playbook so far. It says so on our pricing page — go and check, it is a live count and it will change as it changes. We would rather hand you a number that low than borrow credibility we have not earned yet.

Tiago Santana

About the Author

Tiago Santana

Founder of Gardenpatch and The Cooling Co. Tiago has helped businesses generate over $100M in revenue. He writes about running marketing, sales, operations, service, technology, and people-and-culture in the AI era — when half the team is agents and most 2019 playbooks no longer apply.

The Growth Spurt — Free Weekly

Get one tactical growth framework every Tuesday

Tiago Santana has helped businesses generate over $100M in revenue. Every week he breaks down one strategy — in enough detail to actually use it. No ads, no fluff, unsubscribe any time.

No spam. Unsubscribe in one click.

Put this into practice

Tech Strategy in the AI Era — A Playbook

27 interactive modules — hands-on exercises, scoring frameworks, and action plans to implement what you just read.