buy tool on the MCP server. Same behavior, same states.
Where agents can buy
Amazon and more than a dozen other large retailers, DoorDash, Uber Eats, Walmart, Sephora, TaskRabbit, Rinse, Good Eggs, Rappi, Locale, and flights. The list grows;buy itself tells the agent when a merchant needs the user to link their account first.
How a purchase actually flows
Every response has astatus, and there are only four:
Money never moves on a plain
ask. When a cart is ready, the response includes the cart with an exact total and a hash. To place the order, the agent sends the hash back:
Give an agent access
Create a buy token for the user. It lasts 30 days and only works as that one user:mint_buy_token on MCP when connected as your organization. Hand the token to the agent; it’s the bearer for every buy call.
What it costs
Purchases carry a service fee, 2.5% of the merchant total, shown to the user in the cart before any confirm. The totals inneeds_input replies are all-in: what the user sees is what the card is charged.
Spending controls and approvals
Budgets cap what an agent can spend. Cards can be locked to one merchant or one purchase. And when a purchase needs a human, the user gets an approval prompt and you receiveapproval.requested; the purchase waits for the yes.
Webhooks you will receive
transaction.authorized, thentransaction.clearedas the payment settlesapproval.requestedwhen a purchase is waiting on the usermerchant.connectedwhen a user links a merchant account
When it fails
Adeclined status always says why in the reply. A confirm with a stale hash returns a conflict instead of charging; re-ask to get a fresh cart. If the user has no usable card, buy says so and the fix is the wallet, not the Purchase API.
Sandbox behavior
Sandbox conversations run the same loop with no real orders and no real money. Use the org server’stest_charge to watch settlement events end to end.
Next: Test in sandbox