Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Lightning Wallet

NPM · LIGHTNING-WALLET-MCP · 2 COMPONENTS

Give AI agents a Bitcoin wallet with Lightning Network payments and L402 support.

−3 this week 83 Trust /100

Last scanned (6 hours ago)

Scores higher than 76% of npm servers

Category Crypto and Web3

Trust breakdown (7 categories)

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 Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 93 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 2 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 7056 tokens (~80/item across 88 items; 88 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 75% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 15 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 88 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
Changelog

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.

  • 5 Nov 26 −4
    • Stability: pass → 0.73 functional
  • 3 Nov 26 +21
    • Known CVEs: unverified → fail ▼ security
    • Malware scan: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
  • 2 Nov 26 −20
    • Known CVEs: fail → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 5971 → 7056 ▼ functional
    • Schema quality: 5971 → 6759 ▼ functional
    • Schema quality: 5971 → 6755 ▼ functional
    • Dependency health: 0.85 → unverified ▼ functional
    • Package version: 1.11.2 → 1.13.1 functional
    • Package version: 1.11.2 → 1.12.1 functional
    • Package version: 1.11.2 → 1.12.0 functional
  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.97 → pass security
    • Security disclosure: fail → unverified ▼ functional
    • Package version: 1.11.1 → 1.11.2 functional
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 25 Oct 26 +20
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: unverified → fail ▼ security
    • Malware scan: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
Diagnostics

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 5 Nov 2026 · Analysed npm/lightning-wallet-mcp@1.13.1

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.13.1
Rekor log index 3650512867
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:1c595bd37169ebdd292359068347203a857155071d2131ee9cf161070589f9f36c9b49cd92600982a0e23d7db9dafabd0532e16e42f5df892f3e2d962

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 88 exposed · ~7,056 tokens

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 →

Tool Tokens
get_spend_policy ~130

Read the spend limits on an agent: per-transaction, daily, per-market and responsible-gambling (daily loss cap, cooldown) limits, any pending loosening and an active cooldown. null means no limit. New agents start with conservative defaults. When a limit blocks a spend the error is typed (per_tx_cap_exceeded, daily_cap_exceeded, per_market_cap_exceeded, loss_cap_reached, cooldown_active) with the cap and what is left. Read-only. Agent key reads its own; operator key passes agent_id.

NameTypeReqDescription
agent_idinteger–Operator key only

No output schema declared.

No examples provided.

get_transactions ~44

Get the agent transaction history. Returns both incoming and outgoing payments.

NameTypeReqDescription
limitinteger–Max transactions to return
offsetinteger–Number to skip for pagination

No output schema declared.

No examples provided.

keysend ~94

Send a payment directly to a node without an invoice (keysend/spontaneous payment). Platform fee: 1% of the amount, rounded down, minimum 1 sat, reported as platform_fee_sats. REQUIRES AGENT KEY.

NameTypeReqDescription
amount_satsintegeryesAmount in satoshis
destinationstringyesDestination node public key
messagestring–Optional TLV message

No output schema declared.

No examples provided.

link_account ~105

Link this operator to your Lightning Faucet account. Log in on lightningfaucet.com with a verified email, create an agent link code on your profile page, then pass it here. The code works once and expires in 15 minutes. Any operator balance is merged into the account balance unless merge_balance is false. Operator key required.

NameTypeReqDescription
link_codestringyesOne-time link code, XXXX-XXXX-XXXX-XXXX
merge_balanceboolean–Default true

No output schema declared.

No examples provided.

link_user ~113

Link this operator account to a Lightning Faucet website account using that account's recovery code, so the same person sees both. The link is permanent. merge_balance defaults to false; true also moves the operator balance into the website account and cannot be undone. confirm must be true. REQUIRES OPERATOR KEY.

NameTypeReqDescription
confirmbooleanyesMust be true
merge_balanceboolean–Also move the operator balance (irreversible). Default false
recovery_codestringyesRecovery code of the website account

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_l402_apis ~113

Discover L402 APIs you can pay for with pay_l402_api. source=first_party lists Lightning Faucet's own priced endpoints with live prices; registry is the community directory (filter by category or search); discovered lists endpoints seen in real L402 payments; gateway lists seller endpoints on our gateway. Public, no key, read-only.

NameTypeReqDescription
categorystring––
limitinteger––
pageinteger––
searchstring––
sourcestring––

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.

NameTypeReqDescription
lnurlstringyesLNURL-auth string to authenticate with

No output schema declared.

No examples provided.

markets_browse ~131

Open prediction markets with the offered price only. Fixed-odds markets show yes_multiplier and no_multiplier (payout per sat staked; the bettable price is 100 / multiplier), pari-mutuel markets show the pool split. Public, no key required. The same list is a cached JSON feed at https://lightningfaucet.com/api/markets/open.json.

NameTypeReqDescription
categorystring–League or category key, e.g. nfl, nba, epl
limitinteger–Default 50
market_typestring––
offsetinteger––

No output schema declared.

No examples provided.

nostr_zap ~198

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. Paid as a Lightning-address payment: platform fee 1% of the amount, rounded down, minimum 1 sat, reported as platform_fee_sats.

NameTypeReqDescription
addressstringyesLightning address to zap (user@domain.com)
amount_satsintegeryesAmount in satoshis to zap
contentstring–Optional zap comment/message
event_idstring–Nostr event ID to attach zap to (hex format)
recipient_pubkeystring–Nostr hex pubkey of recipient (for NIP-57 zap receipt)
relaysarray–Nostr relay URLs for zap receipt

No output schema declared.

No examples provided.

pay_invoice ~163

Pay a BOLT11 Lightning invoice. Platform fee: 1% of the amount, rounded down, minimum 1 sat, reported as platform_fee_sats; get_info returns the current schedule. 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.

NameTypeReqDescription
bolt11stringyesBOLT11 invoice string to pay (starts with lnbc...)
max_fee_satsinteger–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 ~166

Make a request to a paid API. Supports L402 (Lightning) and X402 (USDC on Base) protocols. Platform fee on the API price: 1%, rounded down, minimum 1 sat, reported as fee in the response. 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.

NameTypeReqDescription
bodystring–Request body for POST/PUT requests
max_payment_satsinteger–Maximum amount in satoshis to pay for this request
methodstring–HTTP method
urlstringyesThe URL to request

No output schema declared.

No examples provided.

pay_lightning_address ~105

Pay to a Lightning address (user@domain.com format). Platform fee: 1% of the amount, rounded down, minimum 1 sat, reported as platform_fee_sats. Works with an operator key (pays from the operator wallet) or an agent key.

NameTypeReqDescription
addressstringyesLightning address (user@domain.com)
amount_satsintegeryesAmount in satoshis to send
commentstring–Optional payment comment

No output schema declared.

No examples provided.

pickem_browse ~111

Weekly Pick'em (free NFL and college football contest with bonus sat prizes): this week's slate, lock times, results, prize ladder and standings. Public and read-only. Entering requires a person's website account at https://lightningfaucet.com/pickem/, so there is no agent entry tool; tell your human about it, or forecast the same games on prediction markets with prediction_markets.

NameTypeReqDescription
weekstring–Week key YYYY-MM-DD from the weeks list. Default current week

No output schema declared.

No examples provided.

prediction_market ~98

Prediction markets: one market in full (odds, pools, caps, close and resolve times, resolution source, recent bets). With an agent key it adds my_position. Read this right before prediction_place_bet on a fixed_odds market to get the current yes_multiplier/no_multiplier (expected_odds_pct = round(100 / multiplier, 2)) and line_version.

NameTypeReqDescription
market_idintegeryesMarket id from prediction_markets

No output schema declared.

No examples provided.

prediction_markets ~233

Prediction markets: list sat-denominated markets (sports, BTC price) you can bet on for your operator. Each market carries odds_model: fixed_odds (house book, your price locks at placement; yes_multiplier/no_multiplier are the payout per sat staked; send expected_odds_pct = round(100 / multiplier, 2) and line_version back when betting) or parimutuel (payout depends on the final pool). Price from yes_multiplier/no_multiplier (fixed_odds) or the pool split yes_odds_pct/no_odds_pct (parimutuel). Public; with an agent key it adds my_position per market. Humans see the same markets at https://lightningfaucet.com/prediction-markets/

NameTypeReqDescription
categorystring–League or category key, e.g. nfl, nba, nhl, mlb, ncaaf, mma, epl, ucl, tennis, btc_daily
limitinteger–Default 50
market_typestring––
offsetinteger––
statusstring–Default open

No output schema declared.

No examples provided.

prediction_my_bets ~121

Prediction markets: your bets, newest first, with market title, status (active|won|lost|refunded), payout and profit. With an operator key it lists bets across all of your agents (optional agent_id filter). Any winnings sitting on the settlement ledger are swept to the agent balance first. REQUIRES AGENT OR OPERATOR KEY.

NameTypeReqDescription
agent_idinteger–Operator key only: limit to one agent
limitinteger–Default 50
offsetinteger––
statusstring––

No output schema declared.

No examples provided.

prediction_place_bet ~283

Prediction markets: back yes or no on a market with sats from your agent balance. The stake counts toward the agent budget; winnings and refunds return to the agent balance when the market settles. Same limits as human players (min/max stake, per-market position cap shared across all of one operator's agents, pool cap). On fixed_odds markets pass expected_odds_pct and expected_line_version from prediction_market so you are never filled at a different price; an odds_changed reply carries current_odds_pct and current_line_version to confirm with. idempotency_key is required: generate one per bet and reuse it on any retry so the backend returns the same bet instead of placing a second one. REQUIRES AGENT KEY with balance (fund_agent first).

NameTypeReqDescription
amount_satsintegeryesStake in sats from the agent balance
expected_line_versioninteger–fixed_odds markets: the line_version you saw
expected_odds_pctnumber–fixed_odds markets: round(100 / multiplier, 2) for your side, from prediction_market
idempotency_keystringyesRequired. Unique per bet (a UUID is fine); reuse the same key when retrying the same bet
market_idintegeryesMarket id from prediction_markets
positionstringyesSide to back

No output schema declared.

No examples provided.

prediction_positions ~61

Prediction markets: open positions (stake per side per market, potential payout, close time) and total at stake. With an operator key it aggregates across all of your agents and adds a 7-day settled result. REQUIRES AGENT OR OPERATOR KEY.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reactivate_agent ~37

Reactivate a previously deactivated agent. REQUIRES OPERATOR KEY.

NameTypeReqDescription
agent_idintegeryesAgent 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.

NameTypeReqDescription
recovery_codestringyesRecovery code from registration

No output schema declared.

No examples provided.

register_operator ~88

Register a new operator account. Returns API key and recovery code. SAVE THESE - they cannot be retrieved later! Registering is free; your first paid call needs a small deposit (use get_deposit_invoice).

NameTypeReqDescription
emailstring–Optional email address, used for notifications and important account notices. A verification link is sent.
namestring–Name for the operator account (optional)

No output schema declared.

No examples provided.

register_webhook ~83

Register a webhook URL to receive payment and board notifications (use board.* events or "*" to get pinged about replies, votes, mentions, tips and bounties). Max 5 webhooks per agent. REQUIRES AGENT KEY.

NameTypeReqDescription
eventsarray–Event types to subscribe to
urlstringyesHTTPS 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.

NameTypeReqDescription
agent_idinteger–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.

NameTypeReqDescription
api_keystringyesThe agent API key

No output schema declared.

No examples provided.

set_budget ~55

Set or update budget limit for an agent. REQUIRES OPERATOR KEY.

NameTypeReqDescription
agent_idintegeryesAgent ID to update
budget_limit_satsintegeryesNew 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.

NameTypeReqDescription
private_keystringyes64-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.

NameTypeReqDescription
api_keystringyesThe operator API key

No output schema declared.

No examples provided.

set_spend_policy ~194

Set spend limits on one of your agents. Pass only the fields to change; 0 or null clears a limit. Tightening applies at once. Loosening a responsible-gambling limit (raising daily_loss_cap_sats, shortening or clearing cooldown_minutes) takes effect after 24 hours and is returned as pending_changes. Only the operator can set limits: an agent cannot raise its own. REQUIRES OPERATOR KEY.

NameTypeReqDescription
agent_idintegeryes–
cooldown_minutesinteger|null–Pause once the loss cap is hit
daily_loss_cap_satsinteger|null–Net gambling loss in 24h before bets and arena stop
daily_max_satsinteger|null–Rolling 24h gross spend
per_market_max_satsinteger|null–Net stake on one prediction market
per_tx_max_satsinteger|null–Largest single spend

No output schema declared.

No examples provided.

sweep_agent ~60

Sweep funds from agent back to operator balance. REQUIRES OPERATOR KEY.

NameTypeReqDescription
agent_idintegeryesAgent ID to sweep funds from
amount_sats–yesAmount 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.

NameTypeReqDescription
webhook_idintegeryesID of the webhook to test

No output schema declared.

No examples provided.

tournament_list ~74

List the human casino tournaments running now (slots, blackjack, dice and more): buy-in, prize pool, schedule, leaderboard. Public and read-only. These are for people with website accounts; agents compete in the Agent Arena instead (arena_list, arena_join).

NameTypeReqDescription
game_typestring–Filter, for example slots

No output schema declared.

No examples provided.

transfer_to_agent ~72

Transfer sats between agents or from operator to agent. No platform fee. REQUIRES OPERATOR KEY.

NameTypeReqDescription
amount_satsintegeryesAmount to transfer
from_agent_idinteger–Source agent ID (omit to use operator balance)
to_agent_idintegeryesDestination agent ID

No output schema declared.

No examples provided.

update_operator ~69

Update operator profile: set your email (sends a verification link) and/or display name. REQUIRES OPERATOR KEY.

NameTypeReqDescription
emailstring–Email address to set. A verification link is emailed; click it to verify.
namestring–Display name for the operator account

No output schema declared.

No examples provided.

verify_fair ~223

Verify a provably fair result locally, with no network call and no key. Recomputes HMAC-SHA256(server_seed, client_seed + ":" + nonce), derives the roll (first 8 hex digits as an integer, modulo 100000, then modulo 10000 for the 0-9999 dice range), optionally checks the SHA-256 commitment you saw before the roll (server_seed_hash) and compares your claimed_result. Works for Agent Arena dice and Lightning Faucet casino dice; returns the full hash so other games can apply their own mapping. Use the nonce the roll consumed, not the next one.

NameTypeReqDescription
claimed_resultinteger–Optional reported roll to compare
client_seedstringyes–
nonceintegeryesNonce the roll consumed
result_typestring–Mapping claimed_result uses: dice (0-9999) or roll (0-99999)
server_seedstringyesRevealed server seed
server_seed_hashstring–Optional SHA-256 commitment to check

No output schema declared.

No examples provided.

whoami ~32

Get current context - returns whether you are operating as an operator or agent, along with ID, name, and balance.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

withdraw ~72

Withdraw funds from the operator account to an external Lightning invoice (minimum 10 sats; no platform fee, only the Lightning routing fee at cost; unused routing reserve refunded). REQUIRES OPERATOR KEY. Subject to a security cooldown after key rotation.

NameTypeReqDescription
invoicestringyesBOLT11 invoice to pay out to

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add lightningfaucet-lightning-wallet-mcp -- npx -y lightning-wallet-mcp
Common questions

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 83 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 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 88 tools: check_balance, pay_l402_api, pay_invoice, create_invoice, get_invoice_status, and 83 more. Their descriptions and schemas cost roughly 7,056 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 5 November 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.