presign-guard wallet

Registre officiel Finance et paiements

Agent wallet with limits: pays x402/MPP on Base, Solana, Tempo, XRPL and Algorand; phone approval.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http presign-guard-wallet 'https://wallet.fizzl.eu/mcp'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "presign-guard-wallet": {
            "type": "http",
            "url": "https://wallet.fizzl.eu/mcp"
        }
    }
}
NPM package presign-guard-wallet-mcp
Claude Code
claude mcp add presign-guard-wallet -e 'AGENT_KEY=<your agent_key>' -e 'LIMIT_USDC_PER_TX=<LIMIT_USDC_PER_TX>' -e 'LIMIT_USDC_PER_DAY=<LIMIT_USDC_PER_DAY>' -e 'TELEGRAM_BOT_TOKEN=<your telegram_bot_token>' -e 'TELEGRAM_CHAT_ID=<TELEGRAM_CHAT_ID>' -e 'AC2_OWNER=<AC2_OWNER>' -e 'WALLET_SERVER_URL=<WALLET_SERVER_URL>' -e 'WALLET_SERVER_KEY=<your wallet_server_key>' -e 'CHAIN=<CHAIN>' -e 'MAX_PAYMENT_USD=<MAX_PAYMENT_USD>' -e 'ALLOW_LIST=<ALLOW_LIST>' -e 'PRESIGN_CREDIT_KEY=<your presign_credit_key>' -e 'RPC_URL=<RPC_URL>' -e 'TEMPO=<TEMPO>' -e 'TEMPO_CHAIN=<TEMPO_CHAIN>' -e 'TEMPO_RPC_URL=<TEMPO_RPC_URL>' -e 'MPP_SESSION_DEPOSIT=<MPP_SESSION_DEPOSIT>' -e 'SOLANA_PRIVATE_KEY=<your solana_private_key>' -e 'SOLANA_NETWORK=<SOLANA_NETWORK>' -e 'SOLANA_RPC_URL=<SOLANA_RPC_URL>' -e 'ALGORAND_MNEMONIC=<your algorand_mnemonic>' -e 'ALGORAND_NETWORK=<ALGORAND_NETWORK>' -e 'XRPL_SEED=<your xrpl_seed>' -e 'XRPL_NETWORK=<XRPL_NETWORK>' -e 'XRPL_WS_URL=<XRPL_WS_URL>' -- npx -y presign-guard-wallet-mcp@0.29.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "presign-guard-wallet": {
            "command": "npx",
            "args": [
                "-y",
                "presign-guard-wallet-mcp@0.29.0"
            ],
            "env": {
                "AGENT_KEY": "<your agent_key>",
                "LIMIT_USDC_PER_TX": "<LIMIT_USDC_PER_TX>",
                "LIMIT_USDC_PER_DAY": "<LIMIT_USDC_PER_DAY>",
                "TELEGRAM_BOT_TOKEN": "<your telegram_bot_token>",
                "TELEGRAM_CHAT_ID": "<TELEGRAM_CHAT_ID>",
                "AC2_OWNER": "<AC2_OWNER>",
                "WALLET_SERVER_URL": "<WALLET_SERVER_URL>",
                "WALLET_SERVER_KEY": "<your wallet_server_key>",
                "CHAIN": "<CHAIN>",
                "MAX_PAYMENT_USD": "<MAX_PAYMENT_USD>",
                "ALLOW_LIST": "<ALLOW_LIST>",
                "PRESIGN_CREDIT_KEY": "<your presign_credit_key>",
                "RPC_URL": "<RPC_URL>",
                "TEMPO": "<TEMPO>",
                "TEMPO_CHAIN": "<TEMPO_CHAIN>",
                "TEMPO_RPC_URL": "<TEMPO_RPC_URL>",
                "MPP_SESSION_DEPOSIT": "<MPP_SESSION_DEPOSIT>",
                "SOLANA_PRIVATE_KEY": "<your solana_private_key>",
                "SOLANA_NETWORK": "<SOLANA_NETWORK>",
                "SOLANA_RPC_URL": "<SOLANA_RPC_URL>",
                "ALGORAND_MNEMONIC": "<your algorand_mnemonic>",
                "ALGORAND_NETWORK": "<ALGORAND_NETWORK>",
                "XRPL_SEED": "<your xrpl_seed>",
                "XRPL_NETWORK": "<XRPL_NETWORK>",
                "XRPL_WS_URL": "<XRPL_WS_URL>"
            }
        }
    }
}

Variables d'environnement

  • AGENT_KEY obligatoire secret Private key of the agent's own wallet (a separate wallet holding only what the agent may spend)
  • LIMIT_USDC_PER_TX Most USDC per payment or transfer without asking you, e.g. 5
  • LIMIT_USDC_PER_DAY Daily USDC budget, e.g. 20
  • TELEGRAM_BOT_TOKEN secret Telegram bot that asks you to approve anything over a limit
  • TELEGRAM_CHAT_ID Your Telegram chat id (approvals go only there)
  • AC2_OWNER Instead of Telegram: your Algorand address; approvals are signed in your own wallet over AC2 (needs the AC2 service, ac2-cli, paired with your wallet)
  • WALLET_SERVER_URL Instead of LIMIT_* and TELEGRAM_*: a wallet server keeping one budget for all your agents
  • WALLET_SERVER_KEY secret The agent key (awk_…) from the wallet server's dashboard
  • CHAIN base (default), ethereum, optimism, arbitrum, polygon or bsc
  • MAX_PAYMENT_USD Most a single x402 API call may cost, in dollars (default 1)
  • ALLOW_LIST Optional: only pay or sign for these addresses (0x, XRPL r… or Algorand, comma-separated); anything else needs approval. Not with a wallet server
  • PRESIGN_CREDIT_KEY secret Optional presign-guard credit key (pgc_…) to pay the $0.01 checks from prepaid credits
  • RPC_URL Optional RPC URL for the chain
  • TEMPO off to never pay MPP charges on Tempo (default on: paid in USDC.e on Tempo from the same address)
  • TEMPO_CHAIN 4217 (Tempo, default) or 42431 (Moderato testnet)
  • TEMPO_RPC_URL Optional Tempo RPC URL
  • MPP_SESSION_DEPOSIT Optional: pay MPP sessions on Tempo; the USDC.e each channel deposit or top-up puts in (counted toward the USDC limits); then each call is a signed voucher
  • SOLANA_PRIVATE_KEY secret Optional: the agent's own Solana secret key (base58 or solana-keygen byte array); pays x402 offers in USDC on Solana (checked by presign-guard, counted toward the USDC limits)
  • SOLANA_NETWORK mainnet (default) or devnet
  • SOLANA_RPC_URL Optional Solana RPC URL
  • ALGORAND_MNEMONIC secret Optional: the agent's own Algorand account (25 words); pays x402 offers in USDC on Algorand (counted toward the USDC limits)
  • ALGORAND_NETWORK mainnet (default) or testnet
  • XRPL_SEED secret Optional: the agent's own XRPL account seed; pays x402 offers in RLUSD on the XRP Ledger (counted toward the USDC limits)
  • XRPL_NETWORK mainnet (default) or testnet
  • XRPL_WS_URL Optional XRPL node websocket URL

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. x402 examples
  2. Spending limits for AI agents, approved from your phone
  3. Research: do AI agents pay safely?
  4. Paid-API examples
  5. License

x402 examples

Spending limits for AI agents, approved from your phone

Give your agents a wallet without giving them a blank cheque:

  • presign-guard-wallet (npm): a viem wallet that checks every signature with presign-guard first (drainers, sanctions, unlimited approvals), keeps to your price per purchase and daily budget, and asks you on Telegram for anything above them. npm i presign-guard-wallet
  • fizzl (PyPI): the same checks for Python agents, with ready-made LangChain tools. pip install fizzl
  • fizzl-langchain (npm): the same checks as LangChain.js / LangGraph.js tools, with a free quick check to try them without a wallet. npm i fizzl-langchain
  • presign-guard-ai-sdk (npm): safety checks as Vercel AI SDK tools. Before signing, before buying a token and before paying an x402 endpoint, the agent checks first. npm i presign-guard-ai-sdk
  • presign-guard-agentkit (npm): the same for Coinbase AgentKit agents. Wrap the wallet provider in one line, and every transfer, swap, approval, permit and x402 payment is checked and kept to your limits. npm i presign-guard-agentkit
  • presign-guard-solana-agent-kit (npm): the same for Solana Agent Kit agents (SendAI). Wrap the wallet in one line, and every transfer, swap and token action from every plugin is checked (instructions decoded and simulated) and kept to your SOL and USDC limits. npm i presign-guard-solana-agent-kit
  • presign-guard-wallet-mcp (npm, MCP server): a wallet with spending limits for Claude, Cursor and any MCP client. The agent can pay x402 APIs and send USDC within your budget, and asks you on Telegram above it. npx -y presign-guard-wallet-mcp@0.27.0
  • presign-guard-payer-screen (npm): for sellers. Screens who pays your x402 API against the OFAC SDN sanctions list before the payment settles; a listed payer gets 451 and is never charged. EVM, Solana, Algorand, XRP Ledger, no dependencies. npm i presign-guard-payer-screen
  • privy-sanctions-sync: for Privy agent wallets. Keeps the condition sets behind Privy's x402 sanctions-screening policy in step with the OFAC SDN list: EVM addresses in both casings, Solana addresses plus their USDC and USDT token accounts, and XRP Ledger addresses, with a ready Privy XRPL policy for x402 payments in RLUSD. It adds before it removes and leaves a set alone when the list is stale.
  • fizzl-paypal-guard (npm): for PayPal's Agent Toolkit. Refunds only for the customer in the conversation, never more than was paid, and never on a payment the customer's bank already charged back (PayPal itself lets that refund through). Daily limits on refunds, cancellations and invoices; the owner decides on refunds after the return period and on a customer who keeps asking; an AI check that the action fits what the customer asked; and Approve/Deny on Telegram above the limits. npm i fizzl-paypal-guard · live demo · video
  • fizzl-paypal-guard-mcp (npm, MCP server): PayPal for Claude, Cursor and any MCP client, guarded. The same 47 tools as PayPal's own MCP server, but never more than is left of a payment, no refund while a chargeback is open, your limits on refunds, cancellations and invoices, and Approve/Deny on your phone or in the chat app above them. npx -y fizzl-paypal-guard-mcp
  • wallet-server: one budget and one set of rules for all your agents, a live dashboard, approvals on the dashboard, on your phone (installable app) or Telegram, pause one agent or all, an activity log. It never holds keys or funds: agents still sign and pay themselves.
  • agent-allowance: spending limits kept by the chain. A small contract on Base, no admin: the owner's USDC stays in their own wallet and each agent's wallet is topped up to a small float within a limit a day, so a leaked agent key can take at most that.

See the dashboard live (demo, example data) →

Agent skills that teach Claude Code, Codex, Cursor and other agents to use the wallet and the Fizzl checks: Fizzl13/fizzl-skills.

import { guardWallet } from "presign-guard-wallet";

const wallet = guardWallet(walletClient, {
  pay, // a fetch that pays x402, or creditKey for prepaid presign-guard checks
  server: { url: process.env.WALLET_SERVER_URL, key: process.env.WALLET_SERVER_KEY },
});
// Under your price: signs. Above it: you get a request on the dashboard and on Telegram.
// Red verdict: never signed. Server unreachable: stops instead of signing.

Try it from your phone: Actions → telegram-demo → Run workflow (a pretend agent, a stub wallet, no money moves).

Research: do AI agents pay safely?

  • agent-safety-bench: an open benchmark of how an AI agent with a wallet handles x402 payments. It checks whether the agent pays honest sellers and refuses the traps: an overcharge, a sanctioned payee, a price over budget, the expensive one of two options, an instruction injected into an API's answer, and a seller that takes the money and asks again. Everything runs offline against simulated sellers with the official x402 client, and nothing is ever paid. It compares agents with and without x402 Doctor's preflight skill.

Paid-API examples

Small, open examples of AI agents combining paid APIs with x402: each call is paid per request in USDC, with no accounts or API keys.

ExampleWhat it doesServicesCost per run
wallet-mcpMCP server presign-guard-wallet-mcp: wallet tools for any MCP client (pay x402 APIs, send USDC), every signature checked by presign-guard and kept to spending limits, Telegram or wallet-server approval above thempresign-guard$0.01 per checked signature (or prepaid credits)
fizzl-pyPyPI package fizzl: the four checks for Python agents (requests + x402), plus LangChain toolspresign-guard, x402 Doctor$0.001 to $0.02 per check (or prepaid credits)
fizzl-langchainnpm package fizzl-langchain: the five checks as LangChain.js tools, for LangChain and LangGraph agentspresign-guard, x402 Doctor$0.001 to $0.02 per check (or prepaid credits)
ai-sdk-guardnpm package presign-guard-ai-sdk: four Vercel AI SDK tools (check before signing, token check, wallet approvals, endpoint preflight)presign-guard, x402 Doctor$0.001 to $0.02 per check (or prepaid credits)
agentkit-guardnpm package presign-guard-agentkit: wraps a Coinbase AgentKit wallet provider so every spending action is checked by presign-guard and kept to spending limits, with Telegram or wallet-server approval above thempresign-guard$0.01 per checked signature (or prepaid credits)
solana-agent-kit-guardnpm package presign-guard-solana-agent-kit: wraps a Solana Agent Kit wallet so every transaction is checked by presign-guard (decoded and simulated) and kept to SOL and USDC limits, with Telegram or wallet-server approval above thempresign-guard$0.01 per checked transaction (or prepaid credits)
paypal-guardnpm package fizzl-paypal-guard: limits, checks and Telegram approval between an AI agent and PayPal's Agent Toolkit (refunds, disputes, cancellations, invoices)PayPal (read-only lookups), TypeSafe Jev (optional)free
paypal-guard-mcpMCP server fizzl-paypal-guard-mcp: PayPal's Agent Toolkit for any MCP client, every call that moves money checked by fizzl-paypal-guard, approval on Telegram, the Fizzl wallet or in the chat app above the limitsPayPal (your own REST app)free
guard-walletnpm package presign-guard-wallet: a viem wallet that asks presign-guard before every signature, keeps to spending limits and asks you on Telegram above thempresign-guard$0.01 per checked signature (or prepaid credits)
crowding-checkPerp funding + CFTC leveraged-fund positioning + the Ichimoku cloud on 4h and 1d, combined into a short read ("crowded long + below the cloud = caution")Edge Agents, Ichimoku Signal$0.32
p0-guardProject 0 builds an unsigned Solana transaction (deposit, borrow, loop and more), presign-guard checks every step (decoded, simulated, accounts screened), and the agent's wallet signs and sends only on green (--send)Project 0, presign-guard$0.01 per checked step
token-checkBefore buying, holding or accepting a token: a verdict (go / ask / stop) with reasons and market data, Solana and EVM tokens; pays on Solana or Basepresign-guard$0.01
payer-screennpm package presign-guard-payer-screen: for sellers. Express middleware that screens who pays your x402 API against the OFAC SDN list before the payment settles (EVM, Solana, Algorand, XRP Ledger); a listed payer gets 451 and is never chargedpresign-guard open list (free)free
safe-fetchnpm package x402-safe-fetch: the safe-pay logic as a drop-in fetch for your own agent (preflight, go / caution / no_go, budget cap, trusted hosts, 10-minute verdict cache)x402 Doctor + the endpoint$0.001 + the endpoint
safe-payBefore paying an x402 endpoint it has never used, the agent pays $0.001 for a preflight and pays only on go, within a budgetx402 Doctor + the endpoint$0.001 + the endpoint

Each example has a --dry-run that shows the prices without paying. Use a dedicated wallet with a little USDC, keep its key in your environment, and never commit it.

Check your own x402 endpoint for free with x402 Doctor.

These are examples of combining services, not trade advice.

License

MIT (see LICENSE), except wallet-server/, which is AGPL-3.0-only (see wallet-server/LICENSE). The packages you install in your own agent (guard-wallet, wallet-mcp, safe-fetch, the framework guards and the rest) are MIT.

Questions fréquentes

Qu'est-ce que presign-guard wallet ?

Agent wallet with limits: pays x402/MPP on Base, Solana, Tempo, XRPL and Algorand; phone approval.

Comment installer presign-guard wallet ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http presign-guard-wallet 'https://wallet.fizzl.eu/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour presign-guard wallet ?

Oui. Il attend AGENT_KEY, TELEGRAM_BOT_TOKEN, WALLET_SERVER_KEY, PRESIGN_CREDIT_KEY, SOLANA_PRIVATE_KEY, ALGORAND_MNEMONIC, XRPL_SEED, à renseigner dans sa configuration.

presign-guard wallet est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient presign-guard wallet ?

Il est publié par Fizzl13. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.