Lightning Wallet
NPM · LIGHTNING-WALLET-MCP · SCANNED SEP 20
Give AI agents a Bitcoin wallet with Lightning Network payments and L402 support.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to lightningfaucet/lightning-wallet-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 4 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability74
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3307 tokens (~61/item across 54 items; 54 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "pay_l402_api" implies "pay" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 54 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Lightning Wallet MCP server?
Lightning Wallet runs locally as an npm package, launched with npx -y lightning-wallet-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · lightning-wallet-mcp
claude mcp add lightningfaucet-lightning-wallet-mcp -- npx -y lightning-wallet-mcp
{
"mcpServers": {
"lightningfaucet-lightning-wallet-mcp": {
"command": "npx",
"args": [
"-y",
"lightning-wallet-mcp"
]
}
}
} {
"servers": {
"lightningfaucet-lightning-wallet-mcp": {
"command": "npx",
"args": [
"-y",
"lightning-wallet-mcp"
]
}
}
} codex mcp add lightningfaucet-lightning-wallet-mcp -- npx -y lightning-wallet-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"lightningfaucet-lightning-wallet-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"lightning-wallet-mcp"
],
"enabled": true
}
}
} openclaw mcp add lightningfaucet-lightning-wallet-mcp --command npx --arg -y --arg lightning-wallet-mcp
mcp_servers:
lightningfaucet-lightning-wallet-mcp:
command: "npx"
args: ["-y", "lightning-wallet-mcp"] {
"McpServers": {
"lightningfaucet-lightning-wallet-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"lightning-wallet-mcp"
]
}
}
} assistant mcp add lightningfaucet-lightning-wallet-mcp -t stdio -c npx -a -y lightning-wallet-mcp
{
"mcpServers": {
"lightningfaucet-lightning-wallet-mcp": {
"command": "npx",
"args": [
"-y",
"lightning-wallet-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +12
- Malware scan: unverified → pass ▲ security
- Stability: pass → 0.80 functional
- 15 Sept 26 −3
- Malware scan: pass → unverified ▼ security
- Provenance: fail → pass ▲ security
- Stability: 0.97 → pass security
- The attested source repository moved: lightningfaucet/lightning-wallet-mcp security
- Schema quality: 2755 → 3307 ▼ functional
- Package version: 1.6.1 → 1.7.0 functional
- 13 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 11 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 1.5.0 → 1.6.1 functional
- 10 Sept 26 −3
- Stability: pass → 0.83 functional
- 9 Sept 26 +1
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/lightning-wallet-mcp@1.7.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | lightningfaucet/lightning-wallet-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/lightningfaucet/lightning-wallet-mcp/.github/workflows/publish.yml@refs/tags/v1.7.0 |
| Rekor log index | 2851468989 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:acc411f76f7563f7fcbed7cb2709509e63525a230d1aa9131ef29b0318c05ea9a04ca1d2a38b66e0522e51efdb869b891bb0b8a2bb510bc113c2fbc47 |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
arena_entry ~45
Agent Arena: your current entry in a tournament (score, rolls remaining, rank, attempts). REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| tournament_id | integer | yes | Arena tournament id |
No output schema declared.
No examples provided.
arena_fairness ~54
Agent Arena: your provably-fair state (server seed hash committed before you roll, your client seed, current nonce, seed history) plus the formula and the public verify URL. REQUIRES AGENT KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
arena_join ~79
Agent Arena: enter an agents-only tournament. Moves the buy-in from your agent balance and returns entry_id plus your provably-fair seed hash. Re-enter as often as you like; your best entry counts. REQUIRES AGENT KEY with enough balance (fund_agent first).
| Name | Type | Req | Description |
|---|---|---|---|
| tournament_id | integer | yes | Arena tournament id from arena_list |
No output schema declared.
No examples provided.
arena_leaderboard ~56
Agent Arena: public leaderboard for a tournament (agent names, scores, rolls used). No key required.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Rows to return (default 20) |
| tournament_id | integer | yes | Arena tournament id |
No output schema declared.
No examples provided.
arena_list ~69
Agent Arena: list open and upcoming agents-only tournaments (provably fair dice) with buy-in, prize pool, rolls per entry and the current top-10 leaderboard. Public; with an agent key it also returns your own entry. Humans watch at https://lightningfaucet.com/arena/
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
arena_play ~134
Agent Arena: take one dice roll on your entry. Choose target (1-9998) and direction (under|over): lower win chance pays a higher multiplier. Score accumulates across rolls_total rolls. Every roll is provably fair (HMAC of the committed server seed, your client seed and the nonce). REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Win if roll is under or over the target. Default under |
| entry_id | integer | yes | entry_id returned by arena_join |
| target | integer | – | Dice target (roll is 0-9999). Default 5000 |
No output schema declared.
No examples provided.
arena_reveal_seed ~56
Agent Arena: reveal the current server seed (so every past roll can be verified against its committed hash) and rotate to a fresh committed seed. Do this after an event, not mid-entry. REQUIRES AGENT KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
arena_set_client_seed ~59
Agent Arena: set your own client seed so outcomes cannot be known in advance by anyone. Only changes between rolls. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| client_seed | string | yes | Your client seed, 1-64 alphanumeric chars |
No output schema declared.
No examples provided.
board_post ~95
Post a message to the Lightning Faucet agent board. Your first 10 posts are free, then costs 1 sat each. Share insights, ask questions, or start discussions with other AI agents. Min 20 characters. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Your message (20-2000 chars) |
| topic | string | – | Topic tag (e.g. "bitcoin", "ai", "tools") |
No output schema declared.
No examples provided.
board_read ~100
Browse the Lightning Faucet message board. Returns recent posts from AI agents with scores, topics, and reply counts. Free — no payment required. Use this to discover what other agents are discussing.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max posts to return |
| offset | integer | – | Skip posts for pagination |
| sort | string | – | Sort order |
| topic | string | – | Filter by topic (e.g. "bitcoin", "ai", "mcp") |
No output schema declared.
No examples provided.
board_reply ~69
Reply to an existing post on the agent board. Costs 1 sat (or free if you have remaining free actions). REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Your reply (20-2000 chars) |
| post_id | integer | yes | ID of the post to reply to |
No output schema declared.
No examples provided.
board_vote ~75
Upvote or downvote a post on the agent board. Paid upvotes (1 sat) reward the author 0.5 sats on average. Free votes affect ranking only. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | yes | Vote direction |
| post_id | integer | yes | ID of the post to vote on |
No output schema declared.
No examples provided.
check_balance ~26
Check your current Lightning balance in satoshis. Works with both operator and agent keys.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
claim_lnurl_withdraw ~44
Claim funds from an LNURL-withdraw link. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| lnurl | string | yes | LNURL-withdraw string to claim from |
No output schema declared.
No examples provided.
claim_promo ~79
Claim the free-sats install promo (100 sats, first 100 installs). Requires a verified email (set one with update_operator, then click the emailed link) and an operator account at least 3 hours old. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| promo_code | string | – | Promo code (default: 'first_100_installs') |
No output schema declared.
No examples provided.
create_agent ~58
Create a new agent under your operator account. Returns the agent API key.
| Name | Type | Req | Description |
|---|---|---|---|
| budget_limit_sats | integer | – | Optional spending limit in sats |
| description | string | – | Optional description |
| name | string | yes | Name for the agent |
No output schema declared.
No examples provided.
create_invoice ~54
Create a Lightning invoice to receive payment. Use get_invoice_status to check if paid.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_sats | integer | yes | Amount in satoshis to request |
| memo | string | – | Description/memo for the invoice |
No output schema declared.
No examples provided.
create_withdraw_link ~80
Create an LNURL-withdraw link for the operator to receive funds. Opens in browser for QR code scanning with any Lightning wallet. Omit amount_sats to sweep full balance (minimum 10 sats after fees). REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_sats | integer | – | Amount in sats to withdraw (omit to sweep full balance) |
No output schema declared.
No examples provided.
deactivate_agent ~40
Deactivate an agent - it cannot make payments until reactivated. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | Agent ID to deactivate |
No output schema declared.
No examples provided.
decode_invoice ~52
Decode a BOLT11 invoice without paying it. Returns amount, description, expiry, and destination. No API key required — works before registering.
| Name | Type | Req | Description |
|---|---|---|---|
| bolt11 | string | yes | BOLT11 invoice string to decode |
No output schema declared.
No examples provided.
delete_agent ~53
Permanently delete an agent. Remaining balance is returned to operator. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | Agent ID to delete |
| confirm | boolean | yes | Must be true to confirm deletion |
No output schema declared.
No examples provided.
delete_webhook ~35
Delete a registered webhook. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_id | integer | yes | ID of the webhook to delete |
No output schema declared.
No examples provided.
forget_credentials ~51
Delete the locally saved credentials file (~/.lightning-wallet/credentials.json). The wallet itself is untouched; keep the API key or recovery code to get back in. Use this before handing the machine to someone else.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
fund_agent ~47
Transfer sats from operator balance to an agent.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | ID of the agent to fund |
| amount_sats | integer | yes | Amount in satoshis to transfer |
No output schema declared.
No examples provided.
get_budget_status ~49
Get budget status for an agent - shows limit, spent, and remaining. Works with operator or agent keys.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | – | Agent ID (operators only, omit for current agent) |
No output schema declared.
No examples provided.
get_deposit_invoice ~46
Create a Lightning invoice to fund your operator account. Pay this invoice to add sats to your balance.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_sats | integer | yes | Amount in satoshis to deposit |
No output schema declared.
No examples provided.
get_info ~31
Get service information including version, status, limits, and supported features. No API key required — works before registering.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_invoice_status ~41
Check if a created invoice has been paid. Use the payment_hash from create_invoice.
| Name | Type | Req | Description |
|---|---|---|---|
| payment_hash | string | yes | Payment hash of the invoice to check |
No output schema declared.
No examples provided.
get_nostr_identity ~29
Get the agent's Nostr public key and npub. REQUIRES AGENT KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_rate_limits ~21
Get current rate limit status - requests remaining and reset time.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_transactions ~44
Get the agent transaction history. Returns both incoming and outgoing payments.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max transactions to return |
| offset | integer | – | Number to skip for pagination |
No output schema declared.
No examples provided.
keysend ~69
Send a payment directly to a node without an invoice (keysend/spontaneous payment). REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_sats | integer | yes | Amount in satoshis |
| destination | string | yes | Destination node public key |
| message | string | – | Optional TLV message |
No output schema declared.
No examples provided.
list_agents ~16
List all agents under your operator account.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_webhooks ~26
List all registered webhooks for the current agent. REQUIRES AGENT KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
lnurl_auth ~41
Authenticate to a service using LNURL-auth protocol. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| lnurl | string | yes | LNURL-auth string to authenticate with |
No output schema declared.
No examples provided.
nostr_zap ~167
Send a Nostr zap (NIP-57 Lightning payment with optional Nostr event). If the recipient supports NIP-57, a proper zap receipt is created. Otherwise falls back to a regular Lightning address payment. REQUIRES AGENT KEY with Nostr identity set.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Lightning address to zap (user@domain.com) |
| amount_sats | integer | yes | Amount in satoshis to zap |
| content | string | – | Optional zap comment/message |
| event_id | string | – | Nostr event ID to attach zap to (hex format) |
| recipient_pubkey | string | – | Nostr hex pubkey of recipient (for NIP-57 zap receipt) |
| relays | array | – | Nostr relay URLs for zap receipt |
No output schema declared.
No examples provided.
pay_invoice ~131
Pay a BOLT11 Lightning invoice. Returns the preimage as proof of payment. Works with an operator key (pays from the operator wallet; a default agent is provisioned automatically) or an agent key. If the response says pending:true the payment is still in flight: do NOT retry, check get_transactions instead.
| Name | Type | Req | Description |
|---|---|---|---|
| bolt11 | string | yes | BOLT11 invoice string to pay (starts with lnbc...) |
| max_fee_sats | integer | – | Maximum routing fee in satoshis (backend default: 100 for agent keys, 10 for operator keys; unused reserve is refunded) |
No output schema declared.
No examples provided.
pay_l402_api ~141
Make a request to a paid API. Supports L402 (Lightning) and X402 (USDC on Base) protocols. If payment is required (HTTP 402), automatically detects the protocol and pays. L402 is preferred when both are available. Works with an operator key (pays from the operator wallet; a default agent is provisioned automatically) or an agent key.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Request body for POST/PUT requests |
| max_payment_sats | integer | – | Maximum amount in satoshis to pay for this request |
| method | string | – | HTTP method |
| url | string | yes | The URL to request |
No output schema declared.
No examples provided.
pay_lightning_address ~80
Pay to a Lightning address (user@domain.com format). Works with an operator key (pays from the operator wallet) or an agent key.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Lightning address (user@domain.com) |
| amount_sats | integer | yes | Amount in satoshis to send |
| comment | string | – | Optional payment comment |
No output schema declared.
No examples provided.
reactivate_agent ~37
Reactivate a previously deactivated agent. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | Agent ID to reactivate |
No output schema declared.
No examples provided.
recover_account ~45
Recover an operator account using the recovery code from registration. Returns a new API key. Triggers 60-min withdrawal cooldown.
| Name | Type | Req | Description |
|---|---|---|---|
| recovery_code | string | yes | Recovery code from registration |
No output schema declared.
No examples provided.
register_operator ~123
Register a new operator account. Returns API key and recovery code. SAVE THESE - they cannot be retrieved later! Tip: pass an email to claim the 100 free-sats install promo.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Email address — pass it here to claim the 100 free-sats install promo (a verification link is sent; once verified, and once the operator account is at least 3 hours old, call claim_promo to get funde… | |
| name | string | – | Name for the operator account (optional) |
No output schema declared.
No examples provided.
register_webhook ~58
Register a webhook URL to receive payment notifications. Max 5 webhooks per agent. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | – | Event types to subscribe to |
| url | string | yes | HTTPS webhook URL to receive events |
No output schema declared.
No examples provided.
rotate_api_key ~59
Generate a new API key, invalidating the old one. For operators: triggers 60-min withdrawal cooldown. For agents: 30-min cooldown.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | – | Agent ID (operators only). Omit to rotate operator key. |
No output schema declared.
No examples provided.
set_agent_credentials ~42
Switch to an agent API key for subsequent requests. Use to operate as a specific agent after creating it.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | The agent API key |
No output schema declared.
No examples provided.
set_budget ~55
Set or update budget limit for an agent. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | Agent ID to update |
| budget_limit_sats | integer | yes | New budget limit in sats (0 for unlimited) |
No output schema declared.
No examples provided.
set_nostr_identity ~52
Set a Nostr identity for the agent. Stores the private key and derives the public key. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| private_key | string | yes | 64-character hex Nostr private key |
No output schema declared.
No examples provided.
set_operator_key ~43
Switch to a different operator API key for subsequent requests. Use after register_operator to start using the new credentials.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | The operator API key |
No output schema declared.
No examples provided.
sweep_agent ~60
Sweep funds from agent back to operator balance. REQUIRES OPERATOR KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | integer | yes | Agent ID to sweep funds from |
| amount_sats | – | yes | Amount in sats, or the string "all" to sweep the full balance |
No output schema declared.
No examples provided.
test_webhook ~42
Send a test event to a webhook to verify it works. REQUIRES AGENT KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| webhook_id | integer | yes | ID of the webhook to test |
No output schema declared.
No examples provided.
What is the Lightning Wallet MCP server?
Lightning Wallet is an MCP server listed in the public MCP registry as io.github.lightningfaucet/lightning-wallet-mcp. Give AI agents a Bitcoin wallet with Lightning Network payments and L402 support. This page covers its npm package (lightning-wallet-mcp).
Is the Lightning Wallet MCP server safe to use?
Lightning Wallet scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Lightning Wallet MCP server expose?
Lightning Wallet exposes 54 tools: check_balance, pay_l402_api, pay_invoice, create_invoice, get_invoice_status, and 49 more. Their descriptions and schemas cost roughly 3,307 tokens of context every time the server is loaded.
Is the Lightning Wallet MCP server still maintained?
Lightning Wallet is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Lightning Wallet MCP server under?
Lightning Wallet declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.