MCP server for the Blink Bitcoin/Lightning API — 52 tools for wallets, Lightning, on-chain, intraledger, webhooks, and L402
Blink MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with access to the Blink Bitcoin and Lightning Network API.
Features
- Lightning Network: Create and pay invoices, send to Lightning addresses
- On-Chain Bitcoin: Generate addresses, send transactions, estimate fees
- Stablesats (USD): Full support for USD-denominated wallets
- Intraledger Transfers: Free instant transfers between Blink users
- Webhooks: Register callbacks for payment notifications
- Real-time Subscriptions: Monitor invoice status and account updates
- Price Data: Get real-time and historical Bitcoin prices
Prerequisites
- Node.js 18+
- A Blink wallet account (dashboard.blink.sv)
- A Blink API key
Installation
From Source
git clone https://github.com/yourusername/blink-mcp.git
cd blink-mcp
npm install
npm run build
Getting an API Key
- Log in to your Blink wallet at dashboard.blink.sv
- Go to Settings > API Keys
- Click Create API Key
- Select the permissions you need:
- Read: View balances, transactions, and account info
- Receive: Create invoices and addresses to receive payments
- Write: Send payments and modify account settings
- Copy the generated API key
Configuration
Set the following environment variables:
# Required: Your Blink API key
export BLINK_API_KEY=blink_xxxxxxxxxxxxx
# Optional: Network to use (default: mainnet)
export BLINK_NETWORK=mainnet # or 'staging' for testnet
Usage with Claude Desktop
Add to your Claude Desktop configuration (~/.config/claude/claude_desktop_config.json on Linux/Mac or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"blink": {
"command": "node",
"args": ["/path/to/blink-mcp/dist/index.js"],
"env": {
"BLINK_API_KEY": "your_api_key_here"
}
}
}
}
Or if installed globally via npm:
{
"mcpServers": {
"blink": {
"command": "blink-mcp",
"env": {
"BLINK_API_KEY": "your_api_key_here"
}
}
}
}
Usage with Other MCP Clients
The server uses stdio transport. Run it with:
BLINK_API_KEY=your_key node dist/index.js
Available Tools
Wallet & Account (17 tools)
| Tool | Description |
| -------------------------- | ------------------------------------ |
| get_account_info | Get current user account information |
| get_wallets | List all wallets with balances |
| get_wallet_balance | Get balance of a specific wallet |
| get_transactions | Get transaction history (paginated) |
| get_transaction_by_id | Get specific transaction details |
| get_account_limits | View withdrawal and transfer limits |
| set_default_wallet | Set default wallet (BTC or USD) |
| set_display_currency | Set display currency preference |
| get_realtime_price | Get current Bitcoin price |
| get_price_history | Get historical price data |
| convert_currency | Convert between fiat and Bitcoin |
| get_supported_currencies | List supported currencies |
| lookup_user_wallet | Find wallet by Blink username |
| check_username_available | Check username availability |
| set_username | Set/update your username |
| get_authorization_scopes | View API key permissions |
| get_network_info | Get Lightning node info |
Lightning Network (12 tools)
| Tool | Description |
| ---------------------------------- | -------------------------------- |
| create_invoice | Create BTC Lightning invoice |
| create_invoice_usd | Create USD-denominated invoice |
| create_invoice_no_amount | Create open (any amount) invoice |
| cancel_invoice | Cancel unpaid invoice |
| get_invoice_status | Check invoice status by hash |
| get_invoice_status_by_request | Check status by bolt11 |
| pay_invoice | Pay a Lightning invoice |
| pay_invoice_with_amount | Pay open invoice with amount |
| pay_lightning_address | Send to Lightning address |
| pay_lnurl | Pay via LNURL |
| estimate_lightning_fee | Estimate payment fee |
| estimate_lightning_fee_no_amount | Estimate fee for open invoice |
On-Chain Bitcoin (7 tools)
| Tool | Description |
| ----------------------------- | ------------------------------ |
| create_onchain_address | Generate new receiving address |
| get_current_onchain_address | Get current address |
| send_onchain | Send BTC on-chain |
| send_onchain_all | Sweep entire balance |
| send_onchain_usd | Send from USD wallet on-chain |
| estimate_onchain_fee | Estimate BTC transaction fee |
| estimate_onchain_fee_usd | Estimate USD wallet fee |
Intraledger (Blink-to-Blink) (3 tools)
| Tool | Description |
| -------------------- | ------------------------------------- |
| send_to_wallet | Send BTC to wallet ID (free, instant) |
| send_to_wallet_usd | Send USD to wallet ID |
| send_to_username | Send to Blink username |
Webhooks & Subscriptions (9 tools)
| Tool | Description |
| ---------------------------------- | ------------------------------- |
| list_webhooks | List registered webhooks |
| add_webhook | Register webhook endpoint |
| remove_webhook | Remove webhook |
| subscribe_invoice_status | Subscribe to invoice updates |
| subscribe_invoice_status_by_hash | Subscribe by payment hash |
| subscribe_account_updates | Subscribe to all account events |
| subscribe_price_updates | Subscribe to price changes |
| list_subscriptions | List active subscriptions |
| cancel_subscription | Cancel a subscription |
| cancel_all_subscriptions | Cancel all subscriptions |
Example Conversations
Check Balance
User: What's my Bitcoin balance?
Assistant: [Uses get_wallets tool]
Your BTC wallet has 50,000 sats and your USD wallet has $12.50.
Create Invoice
User: Create an invoice for 10,000 sats
Assistant: [Uses create_invoice tool]
Here's your Lightning invoice for 10,000 sats:
lnbc100u1p...
Send Payment
User: Send 1000 sats to user@blink.sv
Assistant: [Uses pay_lightning_address tool]
Payment of 1,000 sats sent successfully to user@blink.sv!
Monitor Invoice
User: Let me know when invoice lnbc... is paid
Assistant: [Uses subscribe_invoice_status tool]
I'm now monitoring the invoice. I'll notify you when it's paid.
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run dev
# Type checking
npm run typecheck
# Linting
npm run lint
Architecture
src/
├── index.ts # MCP server entry point
├── client.ts # Blink GraphQL client
├── types.ts # TypeScript type definitions
├── graphql/
│ └── operations.ts # GraphQL queries, mutations, subscriptions
└── tools/
├── wallet.ts # Wallet and account tools
├── lightning.ts # Lightning Network tools
├── onchain.ts # On-chain Bitcoin tools
├── intraledger.ts # Blink-to-Blink transfer tools
└── webhooks.ts # Webhook and subscription tools
API Reference
This MCP server wraps the Blink GraphQL API. For detailed API documentation, visit:
- Blink Agent Playbook: Canonical AI agent API reference — order of operations, safety constraints, and verification checklist.
- Blink Developer Docs
- Blink API Playground
- llms.txt: Machine-readable discovery metadata for AI agents.
Security Considerations
- API Key Security: Never commit your API key to version control
- Permission Scoping: Use the minimum required permissions for your use case
- Write Operations: Be cautious with write permissions as they allow sending funds
- Environment Variables: Store API keys in environment variables, not in config files
Troubleshooting
"BLINK_API_KEY environment variable is required"
Make sure you've set the BLINK_API_KEY environment variable with your API key.
"GraphQL Error: Not authorized"
Your API key may not have the required permissions. Check your key's scopes in the Blink wallet settings.
WebSocket connection issues
Real-time subscriptions require a stable connection. Check your network and firewall settings.
License
MIT
Contributing
Contributions are welcome! Please open an issue or submit a pull request.