Hijacked by a web page
Shops can hide instructions in product pages. Agents read every word.
Write one sentence. Mandate turns it into signed spending rules every AI agent must obey, and pays with PayPal only when the rules say yes.
Building your own agent? Read the API
| Check | Value | Result |
|---|---|---|
| Mandate | Active, signed by you | Pass |
| Where the request came from | Your task | Pass |
| Category | household | Pass |
| Seller | Acme Supplies · verified | Pass |
| Item limit | $4.50 of $25.00 | Pass |
| Market price | $4.50 vs $4.20 market | Pass |
| Monthly budget | $4.50 of $80.00 left | Pass |
Runs on the PayPal sandbox. No real money moves.
The problem
Handing an agent your card is all or nothing. One poisoned product page, one misread request, and it spends money you never meant to spend.
Shops can hide instructions in product pages. Agents read every word.
“Don’t spend more than $25” lives in a prompt. Nothing enforces it or records it.
When an agent pays, the seller can’t know whether a person agreed, so disputes are hard to settle.
How it works
No card handed over and no prompt to trust. Your signature is the only authority an agent ever gets.
The AI reads your sentence into rules you can see and correct.
You sign an Intent Mandate. That signature is all an agent ever gets.
Mandate’s agent, Claude, ChatGPT or yours. Every purchase passes the gate before PayPal.
Each decision is a signed, hash-chained receipt that sellers and you can check.
Every purchase, one of three answers
The gate is plain code, not a model, so it can’t be talked round. If anything is unclear or broken, it fails closed.
Paid
A single-use permit is issued for that exact cart, and PayPal is paid. The agent never sees a credential.
Asks you
Your phone shows what, why, and what you’d have left. Approving signs that exact cart.
Blocked
Unverified sellers, wrong categories, and anything a web page told the agent to buy never reach PayPal.
After you pay
Tracking goes onto the PayPal transaction. If a parcel goes missing, Mandate drafts the claim from the facts and attaches your signed receipts. Nothing is filed until you confirm.
I am filing a claim for PayPal order 5O190127TN364715T (Eco washing-up liquid 500ml), paid $4.50 on 21 October. The carrier reports the parcel lost in transit. I am requesting a full refund of $4.50.
For sellers
Every agent payment carries AP2 v0.2 mandates: the customer’s signed limits, your signed checkout, the agent’s closed mandates and signed receipts. Check them with public keys before you ship.
Electric kettle · $32.00 · approved by the customer
Works with Claude, Cursor, GitHub Copilot, Zed, Gemini CLI, Goose, ChatGPT, Claude Code, Windsurf, Cline, Codex, Kiro and any other MCP client.
Any assistant
Mandate is an MCP server. Give any assistant a private link and it can search and buy, but only through your signed mandate. Revoke it with one click.
$ claude mcp add --transport http mandate https://your-mandate/api/mcp/mdt_… > Buy a cleaning spray under $5 search_products "cleaning spray" · buy clean-spray ✓ Paid $3.75 · within your rules
Under the hood
Four pieces of plain engineering do the work. None of them depends on a model behaving.
Pure, tested code decides. The model only proposes. Errors fail closed.
Ed25519-signed, bound to one cart’s digest, expire in minutes.
Every step hash-chained and signed. Edit one row and verification names it.
Live prices from Channel3 across shops; overpriced carts go to you.
What Mandate does with your money, your rules and your data.
No. Payments go straight through PayPal. Mandate decides whether a purchase may happen and issues a single-use permit for that exact cart; the agent never sees a card number or PayPal credential.
The model only proposes purchases. The gate that decides is plain, tested code that can't be talked round. Anything that came from page text instead of your task is blocked, and any error blocks too.
It runs on the real PayPal sandbox through PayPal's Agent Toolkit, so orders, captures and tracking are genuine PayPal API calls. No real money moves.
Every payment carries AP2 v0.2 mandates signed by the customer, the merchant and the agent. Sellers verify them with the public keys at /api/ap2/jwks, following the AP2 specification's dispute rules.
Anything that speaks the Model Context Protocol: Claude, Claude Code, ChatGPT, Cursor or your own agent. Each gets a private link you can revoke at any time.
Your phone shows what, why and what you'd have left. Approving signs that exact cart. Hard rules, such as unverified sellers or the wrong category, can't be approved past.
For anything else, read the developer docs or the code.
Write a mandate, run the agent, then run the compromised-agent drill. It takes about two minutes.