Quick Start
Add the BoltzPay server (Explore mode, no keys needed)
quote, discover, diagnose, budget, history, and wallet. No credentials required.Enable Payments
To let Claude actually pay for API data, add your credentials:Credential requirements
Not every tool needs keys. Onlyboltzpay_fetch requires credentials to make payments:
| Tool | Coinbase keys | NWC string | Tempo/Stripe key |
|---|---|---|---|
boltzpay_fetch | For x402 | For L402 | For MPP |
boltzpay_quote | — | — | — |
boltzpay_discover | — | — | — |
boltzpay_budget | — | — | — |
boltzpay_history | — | — | — |
boltzpay_wallet | — | — | — |
boltzpay_diagnose | — | — | — |
Budget Control
Set spending limits via environment variables in your config. When a limit is hit,boltzpay_fetch returns a structured error and Claude informs you.
| Variable | Description | Example |
|---|---|---|
BOLTZPAY_DAILY_BUDGET | Max spend per day | "5.00" |
BOLTZPAY_MONTHLY_BUDGET | Max spend per month | "50.00" |
BOLTZPAY_PER_TRANSACTION | Max per single request | "1.00" |
Tools
boltzpay_fetch
Fetch data from a paid API. Automatically detects the payment protocol (x402, L402, or MPP), pays the required amount, and returns the response.| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the paid API endpoint |
method | string | No | HTTP method (default: GET) |
headers | Record<string, string> | No | Additional HTTP headers |
body | string | No | Request body |
chain | "evm" | "svm" | No | Override chain selection |
Success
payment field is only present when a payment was made. Free endpoints omit it.
Error
boltzpay_quote
Check an endpoint’s cost without paying. Returns protocol, price, currency, and multi-chain alternatives when available.| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to check for pricing |
Paid endpoint
This endpoint does not require payment (free).
boltzpay_discover
Browse paid API endpoints from the BoltzPay registry with filtering by protocol, score, and category.| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | No | Filter by category |
protocol | string | No | Filter by protocol (x402, l402, mpp) |
minScore | number | No | Minimum trust score (0-100) |
query | string | No | Search by name or URL |
Output
boltzpay_budget
View current spending limits, amount spent, and remaining balance. No parameters.With budget configured
No budget limits configured when no limits are set.
boltzpay_history
List all payments made during the current session. No parameters.Output
No payments made yet when the session has no transactions.
boltzpay_diagnose
Run a full diagnostic on any API endpoint in under 2 seconds. Checks DNS resolution, HTTP reachability, protocol detection (x402/L402), format version, pricing, and latency. No credentials required.| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the endpoint to diagnose |
Output
health field classifies the endpoint into one of four states:
| Health | Meaning |
|---|---|
paid | Online and requiring payment (x402 or L402 detected) |
free_confirmed | Online but no payment protocol detected |
dead | Unreachable (DNS failure, timeout, or server error) |
ambiguous | Reachable but inconclusive protocol detection |
boltzpay_wallet
View wallet addresses, balances, network, supported protocols, and budget configuration. No parameters.Output
balances returns "Balance unavailable". Without budget config, budget returns "No limits configured".
Error Handling
All tools return structured errors withisError: true. The format is consistent:
| Error type | Trigger | Hint |
|---|---|---|
BUDGET_EXCEEDED | Exceeds a configured budget limit | Use boltzpay_budget to check limits |
INSUFFICIENT_FUNDS | Not enough USDC in wallet | Top up your USDC balance |
MISSING_CREDENTIALS | Coinbase credentials not set | Set the three COINBASE_* env vars |
PROTOCOL_ERROR | Payment protocol failure | Try boltzpay_quote first to verify |
NETWORK_ERROR | Endpoint unreachable or timeout | Verify the endpoint is reachable |
INTERNAL_ERROR | Unexpected server error | Check logs (BOLTZPAY_LOG_LEVEL=debug) |
Environment Variables
| Variable | Description | Default |
|---|---|---|
COINBASE_API_KEY_ID | CDP API key ID | — |
COINBASE_API_KEY_SECRET | CDP API key secret | — |
COINBASE_WALLET_SECRET | CDP wallet secret | — |
NWC_CONNECTION_STRING | Enables L402 protocol (Lightning) | — |
TEMPO_PRIVATE_KEY | Tempo wallet private key (enables MPP) | — |
STRIPE_SECRET_KEY | Stripe secret key (enables Stripe MPP) | — |
BOLTZPAY_DAILY_BUDGET | Daily spending cap in USD | No limit |
BOLTZPAY_MONTHLY_BUDGET | Monthly spending cap in USD | No limit |
BOLTZPAY_PER_TRANSACTION | Per-request spending cap in USD | No limit |
BOLTZPAY_NETWORK | base or base-sepolia | base |
BOLTZPAY_LOG_LEVEL | debug, info, warn, error, silent | warn |
MCP Transport (Outgoing Payments)
To pay other MCP servers that require payment, usewrapMcpClient() in your code. This is separate from the BoltzPay MCP server. See the MCP Transport guide.
Troubleshooting
”Tool not found” or no hammer icon
Claude Desktop didn’t load the MCP server. Check:- The JSON config is valid (no trailing commas, correct braces).
- The file is at the correct path for your OS.
- You restarted Claude Desktop after editing the config.
”npx fails” or “command not found”
Node.js is not in Claude Desktop’s PATH.- macOS: Install Node.js via the official installer (not just nvm). Or use the full path:
"command": "/usr/local/bin/npx". - Windows: Use the
cmdwrapper:"command": "cmd", "args": ["/c", "npx", "-y", "@boltzpay/mcp"].
”MISSING_CREDENTIALS” error
Theboltzpay_fetch tool requires Coinbase keys to make payments. Read-only tools (quote, discover, diagnose) work without credentials. To enable payments, add the three COINBASE_* env vars to your config.
”BUDGET_EXCEEDED” error
You’ve hit your configured spending limit. Ask Claude to runboltzpay_budget to see the current state, or increase the limit in your config and restart.
Payments work but responses are empty
Some endpoints only accept POST requests. Ask Claude to usemethod: "POST" with the appropriate body. Check the endpoint’s documentation for the correct method.