
presign-guard wallet
io.github.Fizzl13v0.3.0Updated Oct 2, 2026
A wallet with spending limits for agents: pay x402 APIs, send USDC, phone approval over the limit.
Overview
Gives an AI agent a spending-limited crypto wallet to pay x402 APIs and send USDC, with Telegram approval above set limits.
- What it does
- Runs a local wallet for an agent with tools to check status, pay x402 APIs that answer 402 Payment Required, send USDC, send native coins, and pause spending. Every signature is first checked by presign-guard for known drainers, sanctioned addresses and look-alike tokens; a red verdict is never signed. Payments above your per-transaction or daily limits require your approval over Telegram or a wallet server dashboard, and if the check, Telegram or the server cannot be reached, nothing is signed.
- When to use it
- Use it when an agent needs to pay for x402 APIs or send USDC on its own but you want hard budget caps and a human approval step above them. It fits agent workflows that spend small amounts on Base or another supported chain.
- Requirements
- Local process started via npx (Node.js). Requires AGENT_KEY, the private key of a separate agent wallet, plus limits or a wallet server. Optional: CHAIN, LIMIT_USDC_PER_DAY, LIMIT_USDC_PER_TX, MAX_PAYMENT_USD, RPC_URL, PRESIGN_CREDIT_KEY, and TELEGRAM_BOT_TOKEN with TELEGRAM_CHAT_ID for approvals, or WALLET_SERVER_URL with WALLET_SERVER_KEY. Network access needed.
Installation
In SourceWeft
- Open presign-guard wallet in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
presign-guard-wallet-mcp
A wallet with spending limits for AI agents, as an MCP server. Add it to Claude Desktop, Claude Code, Cursor or any other MCP client, and your agent can:
- pay for x402 APIs;
- send USDC.
It can only do that within the budget you set:
- You set the limits. For example: up to 5 USDC per payment and 20 USDC a day, and the agent is free to spend within them.
- Above a limit, you decide. You get a Telegram message with Approve / Deny, or the request shows up on your wallet server dashboard. No answer means no payment.
- Every signature is checked first by presign-guard. It checks for known drainers, sanctioned addresses and look-alike tokens. A red verdict is never signed.
- When in doubt, nothing is signed. If the check, Telegram or the server can't be reached, the wallet stops.
The key stays on your machine; the server only decides whether a signature is allowed. Each check costs $0.01, paid in USDC on Base from the same wallet, or from prepaid credits.
See the dashboard (demo data): https://wallet.fizzl.eu/demo
Tools
Set up
- Make a separate wallet for the agent. Put only what it may spend in it: a few dollars of USDC on Base, plus a little ETH for gas if it will send transfers. Never use your main wallet.
- Optional: phone approvals.
- Create a bot with @BotFather, send it
/start. - Get your chat id from @userinfobot.
- Create a bot with @BotFather, send it
- Add it to your MCP client. For Claude Desktop, put this in
claude_desktop_config.json:
For Claude Code:
Then ask your agent, for example: "Check my wallet, then get the BTC signal from https://ichimoku-signal.fizzl.eu/signal/BTC-USDT".
One budget for all your agents
Run the wallet server and make an agent key on its dashboard. It gives you:
- one price rule and one daily budget for all your agents;
- approvals on the dashboard and on Telegram;
- an activity log.
Then use these variables instead of LIMIT_* and TELEGRAM_*:
Configuration
One Telegram bot serves one running server at a time, and the bot must not have a webhook. To run several agents on one bot, use the wallet server.
Receipts
Every payment carries what it was for: the URL for pay_x402, and the agent's reason if it gives one. With a wallet server, that shows on the receipt for each payment, together with:
- the amount and recipient;
- presign-guard's signed verdict;
- the approval;
- the x402 settlement;
- what the agent got back: the API's answer (up to 16,000 characters), shown in plain form on the receipt.
Telegram approval requests say what the payment is for too. See a receipt in the demo: click a purchase under "Purchases".
When something is refused
The tool returns an error the agent can read and pass on to you. Examples:
Not done (over_limit): 8 USDC is over the limit of 5 per transaction (denied by the owner);Not done (red): not signed: red (known_drainer).
Also available
- presign-guard-wallet: the same guard for your own viem code.
- presign-guard-agentkit: for Coinbase AgentKit agents.
License
MIT
Source: wallet-mcp/README.md at commit 1c7a8ea
Tools
0Version history
1- v0.3.0LatestOct 2, 2026

