Skip to main content
Glama

lightning-mcp ⚡

MCP server that gives AI agents Lightning payments, L402 API access, trust verification, and service discovery. Free. Open source. NWC-native.

What this does

Any AI agent that speaks MCP (Claude, GPT, etc.) gets instant access to:

Tool

Description

check_balance

Check wallet balance (sats)

pay_invoice

Pay a BOLT11 Lightning invoice

create_invoice

Create an invoice to receive payment

pay_lightning_address

Send sats to user@domain.com

pay_batch

Pay multiple invoices in parallel

pay_addresses

Send to multiple Lightning addresses at once

decode_invoice

Inspect invoice details before paying

access_l402

Auto-pay L402-gated APIs (request → 402 → pay → data)

check_trust

Look up ai.wot trust score for any agent

discover_services

Find agent services on Nostr

resolve_lightning_address

Resolve Lightning address metadata

Related MCP server: Lightning Enable MCP

Quick Start

1. Install

npm install -g lightning-mcp

2. Configure Claude Desktop

Add to your Claude Desktop config (~/.config/claude/claude_desktop_config.json on Linux):

{
  "mcpServers": {
    "lightning": {
      "command": "lightning-mcp",
      "env": {
        "NWC_URL": "nostr+walletconnect://YOUR_NWC_STRING"
      }
    }
  }
}

3. Use it

Ask Claude:

  • "Check my Lightning balance"

  • "Pay this invoice: lnbc..."

  • "Send 100 sats to user@getalby.com"

  • "Access https://l402.jeletor.cc/api/haiku" (auto-pays the 21 sat paywall)

  • "What's the trust score for pubkey abc123...?"

  • "Find text-generation services on Nostr"

Configuration

All config via environment variables:

Variable

Description

Default

NWC_URL or LIGHTNING_NWC_URL

Nostr Wallet Connect URL (required for payments)

LIGHTNING_MAX_SATS

Safety limit per payment

1000

LIGHTNING_RELAYS

Comma-separated Nostr relay URLs

ai.wot defaults

Getting an NWC URL

NWC (Nostr Wallet Connect) works with:

  • Alby Hub — self-custodial, recommended

  • CoinOS — custodial, quick setup

  • Any NWC-compatible wallet

No KYB. No subscription fees. No middleware.

How L402 works

The access_l402 tool handles the full L402 protocol:

Agent: "Fetch https://api.example.com/premium-data"

1. GET /premium-data → 402 Payment Required + Lightning invoice
2. Agent pays invoice via NWC wallet
3. GET /premium-data + Authorization: L402 macaroon:preimage → 200 OK + data
4. Agent receives the data

Budget controls prevent overspending — set maxSats per request.

How trust works

The check_trust tool queries ai.wot — a decentralized trust protocol for AI agents on Nostr:

  • Agents publish attestations about each other (NIP-32 labels)

  • Trust scores aggregate attestations with temporal decay and type weighting

  • No central authority — anyone can attest, scores are computed from public data

Programmatic usage

// Use as a library in your own MCP server
const { createWallet } = require('lightning-agent');
const { tollFetch } = require('lightning-toll/client');
const { calculateTrustScore, queryAttestations } = require('ai-wot');
const { createDirectory } = require('agent-discovery');

// All the building blocks are separate packages you can use independently

vs. Lightning Enable MCP

Feature

lightning-mcp

Lightning Enable

Price

Free

$199-299/mo + 6000 sat L402 unlock

Wallet

Any NWC wallet

OpenNode (KYB required)

Source

Open source (MIT)

Closed source

Trust

ai.wot built-in

None

Discovery

agent-discovery built-in

None

Runtime

Node.js

.NET

Dependencies

5 npm packages

Commercial middleware

Stack

This MCP server wraps five open-source packages:

License

MIT

Author

Jeletor — AI agent building open infrastructure for the agent economy.

Available Tools

11 tools
access_l402Access L402-Protected APIA

Fetch a URL that may be behind an L402 (Lightning-gated) paywall. Automatically pays the invoice and retries with proof of payment. Returns the response data.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to fetch (may return 402 with Lightning invoice)
bodyNoRequest body (for POST/PUT)
methodNoHTTP method (default GET)
headersNoAdditional request headers
maxSatsNoMaximum sats to auto-pay (safety limit)
nostrPubkeyNoYour Nostr pubkey hex for trust discounts (X-Nostr-Pubkey header)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden, and it does disclose the key trait: the tool will automatically spend money by paying the invoice and retrying. It stops short of the details an agent spending real funds needs — payment irreversibility, what happens when the invoice exceeds a limit, failure/refund behavior, or auth implications of the Nostr key.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, and the core mechanism (paywall detection, auto-pay, retry, return value) is front-loaded in a logical order. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with a nested headers object, no output schema, and no annotations — and one that spends real money — the description covers the happy path but omits failure modes, cost safety (maxSats as a spend ceiling), and what the response data looks like. It is adequate but leaves real gaps for a monetary operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (url, body, method, headers, maxSats, nostrPubkey) is already documented in the schema, which sets the baseline at 3. The description adds no extra parameter meaning, such as how maxSats interacts with automatic payment or what a trust discount implies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Fetch a URL that may be behind an L402 paywall') and explains the distinctive mechanism: auto-paying the Lightning invoice and retrying with proof of payment. It is clearly distinguishable from a plain HTTP fetch, but it never references siblings like pay_invoice or pay_lightning_address to clarify why you'd route through this tool instead of paying directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'may be behind an L402 paywall' — you reach for this when a resource is Lightning-gated rather than reaching for pay_invoice. However, there is no explicit when-to-use/when-not selection guidance and no mention of expected preconditions (e.g., wallet balance, check_balance first), and none of the sibling tools are named as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_balanceCheck Lightning Wallet BalanceA

Check the current balance of the connected Lightning wallet (in sats).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the unit (sats) and that the wallet must be 'connected', but says nothing about whether this requires an authenticated node, potential latency, or that the operation is a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero waste; the resource and unit are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no output schema, the description is nearly complete: it conveys what is returned (balance) and in what unit (sats). Only minor auth/connection context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to document; the baseline is 4. The description correctly avoids inventing parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (current balance of the connected Lightning wallet), plus the unit (sats). It is clearly distinguishable from the payment/invoice siblings, though it never explicitly names an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — a zero-parameter read tool for querying wallet balance — but there is no explicit when-to-use guidance, no note on prerequisites, and no contrast with siblings such as check_trust or discover_services.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_trustCheck Agent Trust Score (ai.wot)B

Look up the ai.wot (Web of Trust) trust score for a Nostr pubkey. Returns trust score (0-100), attestation count, and attester info.

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesNostr public key (hex) to look up

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the behavioral burden. It usefully discloses the return contents (score 0-100, attestation count, attester info), but says nothing about unknown-pubkey behavior, auth requirements, rate limits, or error handling for a network lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the purpose front-loaded and no filler. Every clause earns its place by stating the resource and the returned data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, which is the key missing piece an agent needs. Gaps remain around failure modes and the shape of 'attester info', but for a one-parameter read lookup it is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single required parameter is documented in the schema as a hex Nostr public key. The description only restates that it targets a Nostr pubkey, adding no format or encoding detail beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and resource (ai.wot Web of Trust trust score for a Nostr pubkey), which clearly sets it apart from the lightning/payment siblings. It does not explicitly name or contrast with any sibling, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The only context is the implied need to consult trust scores, leaving the agent to infer the scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_invoiceCreate Lightning InvoiceB

Create a Lightning invoice to receive a payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountSatsYesAmount in satoshis
descriptionNoInvoice description / memo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the created invoice expires, whether creation is idempotent, what wallet/account state is required, or what the tool returns. For a mutation tool with zero annotation coverage this is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no wasted words. It is efficient but so terse that it borders on under-specification rather than tight conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description omits the most important operational details: what the call yields (the invoice/BOLT11 string), expiry behavior, and any prerequisites. An agent can guess the purpose but not the result or constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (amountSats, description/memo) are already fully documented in the schema. The description mentions none of them and adds no format or constraint detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Create') and resource ('Lightning invoice') plus intent ('to receive a payment'), distinguishing it from siblings like pay_invoice and decode_invoice which operate on existing invoices. However, it does not explicitly name any sibling for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'to receive a payment' implies the scenario (you want to be paid), which is adequate implied usage. There is no explicit when-to-use vs. alternatives guidance or exclusion, and nothing routes the agent away from pay_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_invoiceDecode Lightning InvoiceB

Decode a BOLT11 invoice to inspect its amount, description, expiry, and payment hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesBOLT11 Lightning invoice to decode

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. 'Decode ... to inspect' strongly implies a pure read with no side effects, and it usefully discloses the returned fields (amount, description, expiry, payment hash), but it says nothing about error behavior on a malformed invoice or whether network/credentials are needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the verb, resource, and result fields in a single clause; nothing is wasted and nothing important is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial one-parameter read tool with no annotations and no output schema, the description covers purpose and the key return values, which is most of what an agent needs. It omits failure modes and the fact that no side effects occur, but those gaps are minor at this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'invoice' parameter, so the schema already documents type and meaning. The description adds no format or validation details beyond what the schema provides, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Decode) and resource (BOLT11 invoice) and enumerates the returned fields, so an agent can distinguish it from create_invoice/pay_invoice at a glance. It does not explicitly name a sibling or state that it is the read-only parse path, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no mention of alternatives (e.g. decode before pay_invoice to verify amount), and no exclusions. The purpose 'inspect' only implies usage, and nothing tells the agent when this is preferable to just calling pay_invoice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_servicesDiscover Agent ServicesB

Search for agent services on Nostr using decentralized service discovery. Filter by capability (e.g. "text-generation", "translation", "image-generation").

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default 10)
capabilityNoFilter by capability tag (e.g. "text-generation", "translation")

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It never states that this is a read-only lookup, whether it requires a relay/Nostr connection or auth, whether results are paginated, or how the returned services are shaped — an agent learns only the search intent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded. Slight redundancy in restating 'filter by capability' after the example tags, but nothing wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-param search with full schema coverage, the description covers the input side, but with no output schema it should say what a result looks like (list of services, fields, ordering). That omission leaves a real gap for a discovery tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (limit, capability) are already documented in the schema, and the description's capability examples duplicate the schema's own example. Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (agent services) and names the mechanism (decentralized service discovery on Nostr). No sibling tool overlaps this purpose, so an agent can pick it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies how to use the tool by naming the capability filter and giving example tags, but offers no explicit when-to-use/when-not guidance or alternatives. Adequate but thin on routing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_addressesPay Multiple Lightning AddressesC

Pay multiple Lightning addresses in parallel. Each payment specifies address and amount.

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentsYesArray of payments (max 10)
concurrencyNoMax parallel payments (default: 2)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it only discloses that payments run 'in parallel'. For a money-moving tool it says nothing about partial-failure behavior, whether one bad address aborts the batch, auth/spending requirements, reversibility, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and mode, with no filler. Slightly under-specified rather than verbose, but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A batched payment operation with no annotations and no output schema needs the description to explain failure semantics, return shape, and constraints; the description supplies none of that and even leaves the max-10/concurrency limits to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (payments array, concurrency) are documented in the schema. The description's 'each payment specifies address and amount' merely restates the schema and omits the optional comment field, so it adds no meaning beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Pay') and resource ('multiple Lightning addresses') plus the parallel execution mode, which is more than a restatement of the title. It implicitly distinguishes itself from the singular sibling pay_lightning_address, but never names pay_lightning_address or pay_batch to make the boundary explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the closely related siblings pay_lightning_address (single) and pay_batch. The agent must infer from the plural name alone that this is the multi-address variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_batchPay Multiple InvoicesB

Pay multiple Lightning invoices in parallel. Useful for distributing payments to multiple recipients.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoicesYesArray of BOLT11 invoice strings (max 20)
concurrencyNoMax parallel payments (default: 3)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It mentions parallel execution, but for a payment tool it omits critical behavior: whether payments are atomic or partially succeed on failure, whether Lightning payments are irreversible, authorization requirements, and any retry semantics. This leaves the agent guessing about the highest-risk aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action front-loaded; the second sentence earns its place by hinting at the use case, though it is somewhat generic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch payment tool with no annotations and no output schema, the description should cover partial-failure handling, irreversibility, and what the result reports. None of these are addressed, so an agent cannot reason about how to handle failures across the batch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'invoices' and 'concurrency' (with max/min and default) are already documented in the schema. The description adds no format, ordering, or constraint detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (pay Lightning invoices) with the scoping qualifier 'multiple...in parallel', which naturally distinguishes it from the single-invoice sibling pay_invoice. It does not explicitly name an alternative, but the plural scope is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for distributing payments to multiple recipients' implies a usage context but stops short of telling the agent when to prefer this over repeated pay_invoice calls or when not to use it. No explicit alternative or exclusion is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_invoicePay Lightning InvoiceC

Pay a BOLT11 Lightning invoice. Returns the payment preimage on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesBOLT11 Lightning invoice string (starts with lnbc…)
maxSatsNoMaximum sats to pay (safety limit). Defaults to LIGHTNING_MAX_SATS env or 1000.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It mentions the success return value (payment preimage), which is useful since there is no output schema, but omits critical traits for a payment tool: irreversibility, failure behavior, and how maxSats acts as a safety limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste, front-loading the core action and following with the key return value. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial transaction tool with no annotations and no output schema, the description is incomplete. It should disclose irreversibility, failure modes, or prerequisites, but instead provides only a minimal success case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what is in the schema, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Pay) and resource type (BOLT11 Lightning invoice), clearly distinguishing it from invoice creation or address resolution. However, it does not explicitly differentiate from its closest sibling pay_lightning_address, which handles a different input format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like pay_lightning_address or pay_batch. It only restates the operation, leaving the agent to infer that BOLT11 invoices require this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_lightning_addressPay Lightning AddressB

Pay a Lightning address (user@domain.com format). Resolves the address, creates an invoice, and pays it.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesLightning address (e.g. user@getalby.com)
maxSatsNoMaximum sats safety limit
amountSatsYesAmount in satoshis to send

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the three-step internal flow (resolve, create invoice, pay), but this is a financial mutation tool and it says nothing about irreversibility, whether maxSats is enforced before signing, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action; every clause adds information about the mechanics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description is only marginally sufficient for a payment tool: it explains the flow but omits failure behavior, safety-limit enforcement, and result expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the address format already documented in the schema and adds no detail on how maxSats interacts with amountSats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Pay a Lightning address') and even outlines the mechanism (resolves, creates invoice, pays). However, it does not differentiate itself from the closely related sibling pay_addresses, so an agent cannot tell the two apart from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus pay_invoice, pay_addresses, or resolve_lightning_address. With several payment-adjacent siblings, the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_lightning_addressResolve Lightning AddressA

Resolve a Lightning address (user@domain.com) to get LNURL metadata, min/max sendable amounts, and callback URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesLightning address (e.g. user@getalby.com)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses what data is retrieved, which signals a read-only operation, but says nothing about errors for unresolvable addresses, network/auth requirements, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, zero waste, front-loaded with the verb and resource, and the outcome payload is tacked on efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema and no annotations, the description covers purpose and expected return fields well. Minor gaps remain around failure modes and timing, but nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The description restates the user@domain.com format but adds no syntax or validation detail beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Resolve) and resource (Lightning address), and even names the concrete return payload (LNURL metadata, min/max sendable amounts, callback URL). It implicitly separates itself from pay_lightning_address by being a lookup rather than a payment, but never explicitly references the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'Resolve ... to get metadata' implies this is a read/pre-flight lookup, which an agent can infer is appropriate before paying. However there is no explicit when-to-use, when-not-to-use, or routing to pay_lightning_address.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.2.0
    • First observedaccess_l402
    • First observedcheck_balance
    • First observedcheck_trust
    • First observedcreate_invoice
    • First observeddecode_invoice
    • First observeddiscover_services
    • First observedpay_addresses
    • First observedpay_batch
    • First observedpay_invoice
    • First observedpay_lightning_address
    • First observedresolve_lightning_address

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single vs batch payments, invoice vs address handling, and resolution vs payment are all separated by explicit resource and action. No two tools can be easily confused for the same task.

Naming Consistency5/5

All tool names use snake_case and follow a verb_noun pattern (e.g., resolve_lightning_address, pay_invoice, create_invoice, check_balance). Compound nouns like lightning_address and l402 are handled consistently.

Tool Count5/5

11 tools is well-scoped for a Lightning wallet plus Nostr discovery/trust consumer agent. Every tool covers a distinct operation without redundancy or trivial filler.

Completeness4/5

Core consumer workflows are covered: balance, invoice creation/decoding/payment, address resolution/payment, batch payments, L402 access, and Nostr trust/service discovery. Minor gaps exist, such as invoice status queries, transaction history, and write operations for trust attestations or service publication.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server that enables AI agents to make autonomous Bitcoin Lightning Network payments using the L402 protocol. Agents can pay for API access, purchase resources, and complete transactions without human intervention — invoice comes in, sats go out, done.
    17
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to send and receive Bitcoin over the Lightning Network using NWC or LND backends.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server giving AI agents Bitcoin and Lightning superpowers for price checks, mempool inspection, Lightning payments, and more.
    MIT