Skip to content
VS Code

presign-guard wallet for VS Code

io.github.fizzl13/presign-guard-wallet

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

client:VS Code transport:stdio runtime:npm

Install presign-guard wallet in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "agent-key",
      "description": "AGENT_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "limit-usdc-per-tx",
      "description": "LIMIT_USDC_PER_TX",
      "password": true
    },
    {
      "type": "promptString",
      "id": "limit-usdc-per-day",
      "description": "LIMIT_USDC_PER_DAY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "telegram-bot-token",
      "description": "TELEGRAM_BOT_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "telegram-chat-id",
      "description": "TELEGRAM_CHAT_ID",
      "password": true
    },
    {
      "type": "promptString",
      "id": "wallet-server-url",
      "description": "WALLET_SERVER_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "wallet-server-key",
      "description": "WALLET_SERVER_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "chain",
      "description": "CHAIN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "max-payment-usd",
      "description": "MAX_PAYMENT_USD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "presign-credit-key",
      "description": "PRESIGN_CREDIT_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "rpc-url",
      "description": "RPC_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tempo",
      "description": "TEMPO",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tempo-chain",
      "description": "TEMPO_CHAIN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tempo-rpc-url",
      "description": "TEMPO_RPC_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mpp-session-deposit",
      "description": "MPP_SESSION_DEPOSIT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "algorand-mnemonic",
      "description": "ALGORAND_MNEMONIC",
      "password": true
    },
    {
      "type": "promptString",
      "id": "algorand-network",
      "description": "ALGORAND_NETWORK",
      "password": true
    },
    {
      "type": "promptString",
      "id": "xrpl-seed",
      "description": "XRPL_SEED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "xrpl-network",
      "description": "XRPL_NETWORK",
      "password": true
    },
    {
      "type": "promptString",
      "id": "xrpl-ws-url",
      "description": "XRPL_WS_URL",
      "password": true
    }
  ],
  "servers": {
    "presign-guard-wallet": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "presign-guard-wallet-mcp"
      ],
      "env": {
        "AGENT_KEY": "${input:agent-key}",
        "LIMIT_USDC_PER_TX": "${input:limit-usdc-per-tx}",
        "LIMIT_USDC_PER_DAY": "${input:limit-usdc-per-day}",
        "TELEGRAM_BOT_TOKEN": "${input:telegram-bot-token}",
        "TELEGRAM_CHAT_ID": "${input:telegram-chat-id}",
        "WALLET_SERVER_URL": "${input:wallet-server-url}",
        "WALLET_SERVER_KEY": "${input:wallet-server-key}",
        "CHAIN": "${input:chain}",
        "MAX_PAYMENT_USD": "${input:max-payment-usd}",
        "PRESIGN_CREDIT_KEY": "${input:presign-credit-key}",
        "RPC_URL": "${input:rpc-url}",
        "TEMPO": "${input:tempo}",
        "TEMPO_CHAIN": "${input:tempo-chain}",
        "TEMPO_RPC_URL": "${input:tempo-rpc-url}",
        "MPP_SESSION_DEPOSIT": "${input:mpp-session-deposit}",
        "ALGORAND_MNEMONIC": "${input:algorand-mnemonic}",
        "ALGORAND_NETWORK": "${input:algorand-network}",
        "XRPL_SEED": "${input:xrpl-seed}",
        "XRPL_NETWORK": "${input:xrpl-network}",
        "XRPL_WS_URL": "${input:xrpl-ws-url}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

presign-guard wallet in other clients