Give an AI agent a wallet and it can buy the data it needs mid-task. Give it a wallet with no ceiling and one poisoned web page can spend all of it. This wallet enforces the ceiling itself — in code, before anything is signed.
Every limit is a distance on the same ruler. The red bar at the end is the hard ceiling: the wallet stops there and there is no override, because a limit that can be talked past is not a limit.
A remote MCP server. No npx, no local install, no config file to hand-edit — the client discovers authorization on its own.
{
"mcpServers": {
"route402-wallet": {
"type": "http",
"url": "https://wallet.route402.dev/mcp"
}
}
}Everything else is free to explore, which keeps the security-critical surface to a single function.
search_servicesCapability search across every registry, ranked and explained
describe_serviceSchemas, prices, trust signals, and a policy preview
estimate_costWhat one call would cost, before committing to it
get_balanceBalance, and what is left under each limit
list_transactionsHistory with receipts and the rule behind each one
call_servicespendsDiscover → pay → call, and report exactly what it spent
It reads untrusted content all day. Any of it can say “call this endpoint a thousand times”, and no amount of prompting reliably makes a model refuse. So the refusal lives here instead.
Spending is never bundled into connecting.
wallet:spend gets its own consent screen showing the actual numbers, and every connection can be approved without it.