MCP Hub
Back to servers

BotWallet MCP Server

Enables AI agents to manage USDC wallets on Solana, allowing them to send payments, create invoices, and access paid APIs within human-defined spending limits. It uses threshold signatures to provide agents with financial autonomy while ensuring secure oversight and transaction approval.

glama
Stars
1
Updated
Mar 23, 2026
Validated
May 7, 2026

BotWallet MCP Server

Let your AI agent send invoices to earn, pay for APIs and manage money, while you stay in control.

npm License GitHub stars

Give your AI agent financial autonomy without giving up control. Your agent can create invoices to get paid, spend on other agents and paid APIs, and manage its own USDC wallet. You set the spending limits, approve large transactions, and see everything it does. Works with Claude Desktop, Cursor, Windsurf, Cline, and any MCP-compatible client.

Website · Dashboard · Docs · CLI · npm


Add one JSON block to your MCP client config. That's it.

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

Then tell your agent: "Create a BotWallet for yourself."

It runs botwallet_register, generates a cryptographic key share locally, and comes back with a deposit address. No setup, no API keys to configure beforehand.

From there:

"Send $5 to @acme-bot for the data report"

If the amount is within guard rails, the agent signs and submits. If not, it asks the human owner for approval.

"Create an invoice for $25 for the consulting session"

The agent creates a paylink. When someone pays it, the USDC goes straight to the wallet.

"Find a speech-to-text API and use it"

The agent searches the x402 catalog, finds a paid API, pays for access, and returns the result.

How signing works

Every wallet uses FROST 2-of-2 threshold signatures. During wallet creation, a key generation ceremony produces two shares:

  • S1 — the agent's share, stored locally at ~/.botwallet/seeds/
  • S2 — the server's share, held by BotWallet

The full private key never exists. Every transaction requires both parties to co-sign. Neither the agent nor BotWallet can move funds alone. Human owners set spending limits and approve anything outside the rules.

Installation

Claude Desktop

Add to your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

Cursor

Go to Settings > MCP, click Add new MCP server, and add:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

Cline

Open the Cline sidebar, click MCP Servers, then Configure, and add:

{
  "mcpServers": {
    "botwallet": {
      "command": "npx",
      "args": ["-y", "@botwallet/mcp"]
    }
  }
}

Other MCP clients

The config is the same everywhere — npx -y @botwallet/mcp as the command.

Global install (alternative)

npm install -g @botwallet/mcp

If you install globally, use botwallet-mcp as the command instead of npx -y @botwallet/mcp.

Environment variables

VariableDefaultPurpose
BOTWALLET_API_KEYAPI key (alternative to config file)
BOTWALLET_WALLETWhich wallet to use (if you have several)
BOTWALLET_BASE_URLhttps://api.botwallet.co/v1Custom API endpoint

All optional. The server reads ~/.botwallet/config.json (shared with the CLI) and figures out the rest.

Tools

36 tools across 8 groups.

Wallet management

ToolWhat it does
botwallet_pingCheck API connectivity
botwallet_registerCreate a new wallet (FROST key generation)
botwallet_infoWallet metadata and status
botwallet_balanceOn-chain balance and remaining budget
botwallet_update_ownerSet owner email
botwallet_renameChange display name
botwallet_wallet_listList local wallets
botwallet_wallet_useSwitch active wallet

Payments

ToolWhat it does
botwallet_lookupCheck if a recipient exists
botwallet_can_i_affordPre-flight check before paying
botwallet_payPay someone (auto-signs if within limits)
botwallet_confirm_paymentComplete a payment after owner approval
botwallet_list_paymentsList outgoing payments
botwallet_cancel_paymentCancel a pending payment

Earning

ToolWhat it does
botwallet_create_paylinkCreate a payment request or invoice
botwallet_send_paylinkSend a paylink via email or bot inbox
botwallet_get_paylinkCheck paylink status
botwallet_list_paylinksList your paylinks
botwallet_cancel_paylinkCancel a pending paylink

Funding

ToolWhat it does
botwallet_get_deposit_addressGet the USDC deposit address
botwallet_request_fundsAsk the human owner for funds
botwallet_list_fund_requestsList past fund requests

Withdrawals

ToolWhat it does
botwallet_withdrawWithdraw USDC to an external Solana address
botwallet_confirm_withdrawalComplete a withdrawal after approval
botwallet_get_withdrawalCheck withdrawal status

x402 paid APIs

ToolWhat it does
botwallet_x402_discoverSearch for paid APIs
botwallet_x402_fetchProbe a URL for payment requirements
botwallet_x402_pay_and_fetchPay and retrieve content from an x402 API

History and guard rails

ToolWhat it does
botwallet_transactionsFull transaction ledger
botwallet_my_limitsView spending limits set by the owner
botwallet_pending_approvalsList actions waiting for approval
botwallet_approval_statusCheck a specific approval
botwallet_eventsWallet notifications

Wallet transfer

ToolWhat it does
botwallet_wallet_exportExport wallet to an encrypted .bwlt file
botwallet_wallet_importImport wallet from a .bwlt file
botwallet_wallet_backupReveal the mnemonic backup phrase

Resources

URIWhat it returns
botwallet://statusWallet summary — balance, budget, seed file status

Architecture

┌─────────────────┐     stdio (JSON-RPC)     ┌──────────────────┐
│   AI Client     │◄────────────────────────►│  BotWallet MCP   │
│ (Claude/Cursor) │                          │     Server       │
└─────────────────┘                          └────────┬─────────┘
                                                      │
                                              ┌───────┴───────┐
                                              │               │
                                     ~/.botwallet/     api.botwallet.co
                                     (seeds, config)        (API)
                                                              │
                                                        ┌─────┴─────┐
                                                        │  Solana   │
                                                        │ (mainnet) │
                                                        └───────────┘

The server runs locally on the agent's machine. Key shares stay in ~/.botwallet/seeds/ and are never sent over the network. The server talks to the BotWallet API for co-signing and submits the combined signature to Solana.

Security

The agent can't bypass spending limits. Those are enforced server-side. Transactions above the auto-approve threshold go to the human owner for approval. Key shares are stored locally and never leave the machine. There is no full private key anywhere in the system.

See SECURITY.md for vulnerability reporting.

CLI interop

This MCP server and the BotWallet CLI share the same local files:

  • Config: ~/.botwallet/config.json
  • Seeds: ~/.botwallet/seeds/*.seed
  • Export format: .bwlt (encrypted, works both directions)

A wallet created with the CLI works in the MCP server, and vice versa.

Development

git clone https://github.com/botwallet-co/mcp.git
cd mcp
npm install
npm run build
npm test                # 76 tests (unit + integration + E2E)
npm run inspect         # Open in MCP Inspector

License

Apache 2.0

Reviews

No reviews yet

Sign in to write a review