refined-element/lightning-enable-mcp
π βοΈ π - Add Bitcoin Lightning payments to MCP-enabled AI agents. Pay invoices, create invoices, check balances, and access L402 paywalled APIs. Supports Strike, OpenNode, NWC wallets.
Quick Install
{
"mcpServers": {
"refined-element-lightning-enable-mcp": {
"command": "npx",
"args": [
"-y",
"refined-element-lightning-enable-mcp"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
Part of Lightning Enable β infrastructure for agent commerce over Lightning.
Lightning Enable MCP Server
An open-source MCP (Model Context Protocol) server that enables AI agents to make Lightning Network payments and participate in agent-to-agent commerce. Wallet, invoice, L402, budget, and API-discovery tools work out of the box with just a wallet. Producer tools (sell access via L402) and Agent Service Agreement (ASA) tools (agent-to-agent discovery, request, settlement, and attestation over Nostr) unlock with an Agentic Commerce subscription. See the full tool list.
Available in .NET and Python.
What It Does
Give your AI agent a Lightning wallet and it can:
- Pay invoices β Send Bitcoin via Lightning to any BOLT11 invoice
- Access L402 APIs β Automatically pay L402 challenges for seamless API access
- Discover APIs β Search the L402 API registry to find paid APIs by keyword or category, or fetch a specific API's manifest for full endpoint details and pricing
- Track spending β Budget limits, payment history, and balance checks
- Create invoices β Generate invoices to receive payments
- Get BTC price β Real-time Bitcoin price from Strike
- Exchange currency β Convert between USD/BTC/EUR and more (Strike wallet)
- Send on-chain β Send Bitcoin on-chain (Strike/LND)
- Self-bootstrap a Lightning Enable account β
create_lightning_enable_accountpays a ~100-sat activation fee over L402 and returns a merchant API key: the freeβpaid signup form that is the protocol, unlocking the producer + ASA tools with no browser or checkout page. - Sell services (L402 Producer) β Create L402 payment challenges and verify payments, enabling agents to be full commerce participants that both buy and sell
- Agent commerce (ASA) β Discover, request, settle, and review agent-to-agent services on Nostr
Quick Start
1. Install
# .NET
dotnet tool install -g LightningEnable.Mcp
# Python
pip install lightning-enable-mcp
# Python (no install)
uvx lightning-enable-mcp
# Docker
docker pull refinedelement/lightning-enable-mcp:latest
2. Configure one L402-capable wallet
L402 β the whole point of this server β needs a wallet that returns the payment preimage. Set exactly one of these (as an env var, e.g. in the Claude Desktop config below):
- Strike (easiest to start) β
STRIKE_API_KEY, from https://dashboard.strike.me - NWC (self-custody, Nostr) β
NWC_CONNECTION_STRING, from CoinOS / CLINK / Alby Hub - LND (your own node β always returns a preimage) β
LND_REST_HOST+LND_MACAROON_HEX
β οΈ OpenNode (
OPENNODE_API_KEY) works for invoicing / direct payments only β it never returns a preimage, so it cannot pay L402 challenges. Don't make it your only wallet if you want L402 (the core use case).
If several are set, priority is: LND > NWC > Strike > OpenNode. See Supported Wallets for the full compatibility matrix.
3. Prove the whole loop works β test_l402_payment
Ask your agent:
Run test_l402_payment
This pays a public 1-sat L402 endpoint end to end, proving your wallet is connected, returns a preimage, and can complete a real L402 payment. It's the one-line answer to "is my wallet actually working?" β and it costs about 1 satoshi.
4. Then have some fun β buy a t-shirt
Once the loop works, try the Lightning Enable Store, a live L402-powered web store. Ask Claude:
Buy me a Lightning Enable t-shirt from store.lightningenable.com
(This one needs a funded wallet and a shipping address, which is why test_l402_payment β one sat, no shipping β is the faster first proof.)
Claude Desktop Config
Add to your claude_desktop_config.json:
.NET:
{
"mcpServers": {
"lightning-enable": {
"command": "dotnet",
"args": ["tool", "run", "lightning-enable-mcp"],
"env": {
"STRIKE_API_KEY": "your-strike-api-key"
}
}
}
}
Python:
{
"mcpServers": {
"lightning-enable": {
"command": "uvx",
"args": ["lightning-enable-mcp"],
"env": {
"STRIKE_API_KEY": "your-strike-api-key"
}
}
}
}
Config file locations:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
Supported Wallets
| Wallet | Setup | L402 Support |
|---|---|---|
| Strike | API key | Yes |
| LND | REST + macaroon | Yes (guaranteed) |
| NWC (CoinOS) | Connection string | Yes |
| NWC (CLINK) | Connection string | Yes |
| NWC (Alby Hub) | Connection string | Yes |
| OpenNode | API key | No (no preimage) |
Tools
Canonical inventory: 26 tools β 17 free (out of the box, just a wallet) + 9 that require LIGHTNING_ENABLE_API_KEY (an Agentic Commerce subscription; 2 L402 Producer + 7 Agent Service Agreement). This table is the single source of truth every advertised count derives from β it is pinned to the code by the tool-inventory guard tests in both ports (drift fails CI).
ASA availability note. The L402/producer tools,
discover_agent_services,settle_agent_service, andunpublish_agent_capabilitywork against the hosted API today. The agent-to-agent coordination tools βpublish_agent_capability,request_agent_service,publish_agent_attestation,get_agent_reputationβ use the agent capability backend, which is not yet enabled on the hosted Lightning Enable API (calls there currently return an error) and are in preview. Marketplace listings are published today via the Lightning Enable dashboard / L402 proxy pipeline.
Deprecated aliases (accepted but unadvertised, forward to the new tool, removed in v2.0.0): confirm_payment β verify_confirmation_code; check_wallet_balance, get_all_balances β get_balance.
| Tool | Access | What it does |
|---|---|---|
pay_invoice | Free | Pay a BOLT11 Lightning invoice directly, get the preimage |
pay_l402_challenge | Free | Pay an L402 challenge (invoice + macaroon), get the token |
access_l402_resource | Free | Fetch a URL, auto-paying any L402 challenge |
test_l402_payment | Free | Self-test the wallet against a public 1-sat L402 endpoint |
discover_api | Free | Search the L402 API registry / fetch an API manifest |
create_invoice | Free | Create a BOLT11 invoice to receive payment |
check_invoice_status | Free | Check whether a created invoice was paid |
get_balance | Free | Wallet balance: sats, all currencies (Strike), and wallet info |
exchange_currency | Free | Convert between USD and BTC (Strike) |
send_onchain | Free | Send an on-chain Bitcoin payment (Strike, LND) |
get_btc_price | Free | Current Bitcoin price in USD |
get_payment_history | Free | List payments made this session (in-memory) |
get_receipts | Free | Read the durable, append-only receipt log |
get_budget_status | Free | View budget config and session spend (read-only) |
configure_budget | Free | Tighten runtime spending caps (tighten-only) |
verify_confirmation_code | Free | Verify an out-of-band payment confirmation code (verification only β never pays) |
create_lightning_enable_account | Free | Self-bootstrap signup: pay ~100 sats, get a merchant API key |
create_l402_challenge | Agentic Commerce | L402 Producer: create a challenge to charge for a resource |
verify_l402_payment | Agentic Commerce | L402 Producer: verify an L402 token (macaroon + preimage) |
discover_agent_services | Agentic Commerce | ASA: search for agent capabilities on Nostr |
publish_agent_capability | Agentic Commerce | ASA: publish your agent's services (kind 38400) |
unpublish_agent_capability | Agentic Commerce | ASA: take a listing down β retire the proxy + NIP-09 removal |
request_agent_service | Agentic Commerce | ASA: request a service from another agent (kind 38401) |
settle_agent_service | Agentic Commerce | ASA: pay for an agent service via L402 settlement |
publish_agent_attestation | Agentic Commerce | ASA: leave a review/rating for an agent (kind 38403) |
get_agent_reputation | Agentic Commerce | ASA: check an agent's reputation from attestations |
create_lightning_enable_account is free and self-provisions the API key the 8 gated tools need β an agent with a wallet pays a ~100-sat activation fee and unlocks them on the spot.
Documentation
- .NET README β Full .NET documentation
- Python README β Full Python documentation
- Full Docs β Complete guide to every tool
- AI Spending Security β Budget controls and safety
Repository Structure
lightning-enable-mcp/
βββ dotnet/
β βββ src/LightningEnable.Mcp/ # .NET MCP server
β βββ tests/LightningEnable.Mcp.Tests/ # .NET tests
β βββ LightningEnable.Mcp.sln # Solution file
βββ python/
β βββ lightning-enable-mcp/ # Python MCP server
βββ .github/workflows/publish-mcp.yml # CI/CD
βββ LICENSE # MIT
βββ README.md # This file
Agent Service Agreement (ASA) Tools
These tools enable agent-to-agent commerce on Nostr:
All seven ASA tools require LIGHTNING_ENABLE_API_KEY (an Agentic Commerce subscription); settle_agent_service additionally spends your wallet balance, subject to budget limits. For the authoritative access level of every tool, see the canonical Tools table above β it is the single source of truth pinned to the code by the drift guard.
| Tool | Description |
|---|---|
discover_agent_services | Search for agent capabilities by category, hashtag, or keyword |
publish_agent_capability | Publish your agent's services to the Nostr network (kind 38400) |
unpublish_agent_capability | Take a published listing down: retire the L402 proxy and emit a NIP-09 removal |
request_agent_service | Request a service from another agent (kind 38401) |
settle_agent_service | Pay for an agent service via L402 Lightning settlement |
publish_agent_attestation | Leave a review/rating for an agent after service completion (kind 38403) |
get_agent_reputation | Check an agent's reputation score from on-protocol attestations |
How Agent Commerce Works
- Discover β
discover_agent_services(category="translation")finds agents offering translation - Request β
request_agent_service(capability_id, budget_sats=100)sends a service request - Settle β
settle_agent_service(l402_endpoint)pays via Lightning and receives the result - Review β
publish_agent_attestation(pubkey, agreement_id, rating=5)builds on-protocol reputation
For dynamic pricing, providers use create_l402_challenge to generate invoices at the agreed price. Requesters pay and providers verify with verify_l402_payment.
Related Projects
- le-agent-sdk (Python) β
pip install le-agent-sdk - le-agent-sdk (TypeScript) β
npm install le-agent-sdk - le-agent-sdk (.NET) β
dotnet add package LightningEnable.AgentSdk
Privacy
Lightning Enable does not hold funds β the connected wallet or payment provider (Strike, OpenNode, LND, or an NWC wallet) does. The MCP server runs locally and talks to the wallet/provider you configure and, for L402 discovery, the L402 API registry. Wallet credentials you supply stay on your machine (or, for the hosted API, are encrypted at rest). See the full Privacy Policy for what data is collected, third parties involved, retention, and contact (privacy@lightningenable.com).
License
MIT β see LICENSE.
Links
- Lightning Enable β Payment enablement middleware
- Documentation β Full docs
- Store β Live L402 demo
- NuGet β .NET package
- PyPI β Python package
- Docker Hub β Docker image