Every payment rail for AI agents now answers one question: can this payment be verified?
x402 went to the Linux Foundation. AP2 to the FIDO Alliance. UCP and ACP cover checkout. EMVCo published a draft. Visa, Mastercard and Amex all have agent programmes.
None of them answers the other question: should this agent spend this money on this task, right now?
That gap is where money actually goes, and it is documented:
- An agent paginating a paid API through a bug made 41 000 calls over one weekend. Every call was correctly signed and settled. A per-call limit never noticed — each call was legal. The budget was gone.
- In a September 2026 preprint, hidden text in product descriptions made an AP2 shopping agent assemble a different cart than the one shown to the user in 56 % of trials. The mandate signed it faithfully.
- Of 47 vendors checked in September, 11 publicly document a kill switch.
AP2's own security guidance assumes the agent may be compromised and calls prompt-injection prevention infeasible. That is the correct assumption — and it means the policy must live outside the model.
We measured the registry
I pulled the first 2 500 servers from the official MCP registry and split the ones that describe a payment, wallet or x402 function. 72 of them.
Of those 72: 11 mention a budget, 0 mention a limit or a cap, 0 mention a kill switch, 0 describe a per-task budget, 2 mention a receipt.
These are descriptions, not code — absence of a word is not absence of a feature. But it tells you what vendors consider worth a line, and the vocabulary of spending is present while the vocabulary of stopping is not. The script is nine lines of Python over a public API and you can re-run it (it is in the repository linked below).
The object that is missing
A task-bound spend envelope: budget, allowed payees, no subscriptions, expiry, owner, cost centre. Budget belongs to the task, not to the call — that is the whole difference between stopping a runaway loop and reading about it on Monday.
KARTA enforces it outside the model:
- the gateway holds the key, the agent only asks;
- the verdict is deterministic —
ALLOW / HOLD / BLOCKwith a rule id and a counterfactual; - a kill switch stops one agent in under two seconds, without stopping the fleet;
- every allowed spend returns an Ed25519 receipt that a third party verifies offline, without trusting the vendor.
What you can check yourself
Three attacks, one command each, all refused:
python3 attacks/runaway_loop.py # 41 000 payments -> stops at the task boundary
python3 attacks/prompt_injection_payee.py # new vendor from injected text -> BLOCK E03
python3 attacks/tool_poisoning_amount.py # tool inflates price 1000x -> BLOCK E04
The invariant is tested, not asserted: 100 parallel spend requests against a 50 × $0.05 budget produce exactly 50 approvals, and a 1 000-call loop at $0.01 against a $5 budget produces exactly 500.
Honest state
Pre-revenue. No paying customers. 33 personalised letters to platforms, wallet providers and payment sellers — zero replies so far. The public MCP server is rated A by Glama (Healthy, six tools) and listed in the official registry. 413 automated tests.
Two limits I will not paper over: this is the decision layer, not a settlement rail, and mainnet payment execution is disabled by default. If you need a spend cap today, there are simpler tools; if you need to prove to an auditor that a payment was inside the task budget, that is the gap.
Why I am writing this
Because the number is checkable and the code runs in ten minutes. If you are building agents that pay, I would rather hear where this breaks than sell you a licence — five teams get 30 days free, with one honest paragraph in return.
- demo: https://karta.rta.lat
- the survey: https://karta.rta.lat/report
- attacks: https://karta.rta.lat/attacks
- source: https://github.com/mrpkk/onchain-ai-agent
Top comments (0)