Skip to main content
Glama

nwc-mcp

A Lightning wallet for your LLM agent. MCP server that exposes Nostr Wallet Connect (NIP-47) wallet operations as tools your agent can call — read balance, generate invoices, pay invoices, pay Lightning Addresses, pay LNURLs, batch payments, keysend — all wrapped in a defense-in-depth safety stack.

Drop it into Claude Desktop, Claude Code, Cursor, or any MCP-speaking client. Hand the agent a sub-wallet (not your main one). Set a daily cap. Let it spend sats on your behalf within rails you control.

v0.2 — all spend tools shipped. Twelve tools (7 read/receive + 5 spend + 1 confirm), four safety gates, full audit log. Validated end-to-end against Alby Hub + Olympus by ZEUS routing — real outbound payment settled in 8 seconds.


What you can do with this

  • A coding agent that pays for its own paywalled tool calls (L402-style paid MCP servers).

  • A NOSTR bot that zaps interesting notes under a daily cap you set.

  • An evaluation harness that pays a small fee per task to a worker agent it consumes.

  • A storefront agent that issues receive invoices in response to incoming DMs.

  • Personal sats-aware agents — "every Friday, send 1,000 sats to my favorite OSS maintainers via their LN addresses."

The safety stack is the load-bearing reason this is usable in production: the agent can request a payment, but the server refuses anything that breaches your configured limits, demands a second-step confirmation if you set one, and writes every call to a structured audit log.


Related MCP server: Alby Bitcoin Payments MCP Server

The twelve tools

Read-only (always enabled, no spend risk)

Tool

Purpose

nwc_get_info

Wallet capabilities, supported NIP-47 methods, node pubkey, network, alias. Call first.

nwc_get_balance

Spendable balance in sats (and msat).

nwc_lookup_invoice

Look up an invoice by payment hash or bolt11; returns state + preimage if settled.

nwc_list_transactions

List transactions with filters (time range, direction, unpaid).

nwc_decode_invoice

Parse a bolt11 locally — amount, memo, expiry, payee pubkey. No network call.

nwc_budget_status

Current spend budget state — daily spent, caps, lifetime spent.

Receive (safe — only generates invoices, no spend)

Tool

Purpose

nwc_make_invoice

Create a bolt11 invoice for a given amount of sats.

Spend (gated by the safety pipeline)

Tool

Purpose

nwc_pay_invoice

Pay a bolt11. Amount-resolution for amountless invoices via amount_override_sats.

nwc_pay_lightning_address

Pay name@domain.tld (LUD-16). Direct LNURL-pay resolution, non-proxied by default.

nwc_pay_lnurl

Pay a raw lnurl1... bech32 string (LUD-01).

nwc_multi_pay_invoice

Pay up to 20 invoices in one call. Sum is checked against the budget cap atomically.

nwc_pay_keysend

Spontaneous payment direct to a pubkey. Default-off — opt in via NWC_KEYSEND_ENABLED=true.

nwc_confirm_payment

Execute a two-step-confirm payment by consuming its one-time token.


Requirements

  • Node 20+

  • A NWC connection string from a NIP-47-compatible wallet (Alby Hub, Mutiny, Coinos, Phoenix, …)

The canonical buyer setup is Alby Hub PRO with a dedicated sub-wallet for the agent — that's what this server has been smoke-tested against. But the protocol is wallet-agnostic; anything that speaks NIP-47 works.

Install

# From npm (once published)
npx -y nwc-mcp

# From source
git clone <repo>
cd nwc-mcp
corepack enable pnpm
pnpm install
pnpm build

Configure

Copy .env.example to .env and fill in your NWC connection string:

cp .env.example .env
# edit .env: NWC_CONNECTION_STRING=nostr+walletconnect://...

The server auto-loads .env from the current working directory and from the project root (one level up from dist/). Env vars passed by the parent process (e.g., claude mcp add --env ...) take precedence over .env. .env is gitignored — keep your NWC string out of any committed file.

Required

Var

Purpose

NWC_CONNECTION_STRING

nostr+walletconnect://... — get this from your wallet (in Alby Hub: Sub-wallets → Connections). Treat as a secret — anyone holding it can spend up to the daily cap.

NWC_DAILY_BUDGET_SATS

Rolling 24h spend cap. Server refuses to start without this set.

Optional safety knobs

Var

Default

Purpose

NWC_TOTAL_BUDGET_SATS

unset

Lifetime spend cap.

NWC_MAX_INVOICE_SATS

unset

Per-payment cap.

NWC_READ_ONLY

false

If true, disables all spend tools — useful for dev / eval / curious mode.

NWC_REQUIRE_CONFIRM

false

If true, spend tools return a one-time token; payment only executes after nwc_confirm_payment with the token. Trades agent autonomy for safety.

NWC_KEYSEND_ENABLED

false

Opt-in toggle for nwc_pay_keysend. Off because keysend is power-user (no payment hash, weaker safety surface than bolt11).

NWC_ALLOWED_DESTINATIONS

unset

Comma-separated allowlist of LN addresses / pubkeys / LNURLs. If set, ONLY those can be paid.

NWC_LOG_PATH

./nwc-mcp.log

Path to the structured audit log file.

NWC_BUDGET_STATE_PATH

./nwc-mcp-state.json

Path to the persisted budget tracker state.


Wire into an MCP client

From this directory:

claude mcp add nwc -s project node "$(pwd)/dist/index.js"

This writes a .mcp.json in the project root. Project-scoped servers load only when Claude Code starts from this directory tree. Use /mcp inside a session to inspect what's loaded. Restart the CLI to pick up a fresh dist/index.js after a rebuild.

Switch -s project to -s user if you want the server available everywhere.

Claude Desktop / Cursor / other clients

See examples/claude-desktop-config.json for the manifest snippet. Copy it into your client's config, replace the path placeholder. Because the server loads .env itself, you don't need to pass NWC_* vars through the client config — leave the env block empty.


Safety model

This server is designed for use by autonomous LLM agents that hold the keys to spend real sats. The defense in depth runs in this order on every spend tool call:

  1. NWC_READ_ONLY gate — if set, blocks at the first gate. No decode, no network, audit log entry only.

  2. Invoice decode + amount resolution — for bolt11-based tools. Rejects ambiguity (amount-override conflicting with embedded amount).

  3. Allowlist check — if NWC_ALLOWED_DESTINATIONS is set, the payee (pubkey for bolt11, LN address for LUD-16, LNURL string for LUD-01, pubkey for keysend) must match. Empty allowlist = no-op.

  4. Budget check — daily rolling cap + optional total cap + optional per-invoice cap. State is persisted to NWC_BUDGET_STATE_PATH.

  5. Two-step confirmation gate — if NWC_REQUIRE_CONFIRM=true, returns a 16-byte hex token with 5-minute TTL instead of executing. Agent must call nwc_confirm_payment with the token. Safety re-runs on consume.

  6. Execute — calls the wallet via NIP-47. On success: budget records principal + (over-rounded) fees.

  7. Audit log — every attempt (success, blocked, error) is appended as one structured JSON line per call.

The floor is your NWC connection's own daily cap, set in your wallet. This server's checks are belt-and-suspenders on top — if you trust nothing about the server, the wallet still won't spend past its connection-level cap.

Verifying calls actually went through

Independent of what the LLM tells you, tail the audit log:

tail -n 5 nwc-mcp.log

Successful call: {"ts":"...","tool":"nwc_pay_invoice","outcome":"ok","result":{"paid_sats":50,...}}. Blocked: {"ts":"...","tool":"nwc_pay_invoice","outcome":"blocked","blocked_reason":"..."}. The audit log is append-only by intent; rotate it as part of your operational hygiene.


Testing

pnpm typecheck   # tsc --noEmit
pnpm test        # 25 vitest cases covering Allowlist, ConfirmStore, evaluateSafety, decodeLnurl
pnpm build       # produces dist/index.js (~47 KB ESM bundle)

evaluateSafety is a pure function that the unit tests exercise across the full safety matrix (read-only / amount-conflict / allowlist / budget / confirm) without touching a real wallet.

For end-to-end smoke testing against a live wallet, see paywall-mcp-test/ in the parent project — a throwaway second MCP server that exposes one paid tool (premium_compliment) and validates the full agent → invoice → pay → redeem loop.


License

MIT — see LICENSE.

Contact / Issues

Built by LLMOps.Pro.

Available Tools

13 tools
nwc_budget_statusA

Show the current spend-budget state: rolling-24h spent, daily cap, lifetime spent, optional total cap, and per-invoice max. Useful before attempting a payment to know whether it will be allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. The verb 'Show' implies a read-only operation, and the field list clarifies what is returned. However, it does not explicitly state that there are no side effects, or disclose whether the data is real-time or cached, which would add valuable behavioral context.

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, the first front-loads the purpose and lists the returned metrics, the second offers a practical usage hint. Every word earns its place; no redundancy or fluff.

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 simple 0-parameter status tool, the description is quite complete. It covers what is returned (the field list serves as a de facto output contract), when to use it, and the overall purpose. It does not discuss errors or pagination, but those are unlikely to matter for a read-only status check.

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 has zero parameters, and the empty schema is fully covered. The baseline for 0 params is 4, and the description adds no parameter details because none are needed. It appropriately focuses on output semantics instead.

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?

The description opens with 'Show the current spend-budget state,' using a specific verb and resource. It enumerates five distinct budget metrics (rolling-24h spent, daily cap, lifetime spent, optional total cap, per-invoice max), clearly distinguishing this tool from siblings like nwc_get_balance or nwc_list_transactions.

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

Usage Guidelines4/5

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

It explicitly states a use case: 'Useful before attempting a payment to know whether it will be allowed.' This provides clear context for when to invoke the tool, but it does not mention alternative tools or when not to use it, stopping short of a full 5.

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

nwc_confirm_paymentA

Execute a previously prepared payment, identified by its one-time token. Only meaningful when NWC_REQUIRE_CONFIRM=true. The token is consumed (single use) and safety checks (budget, allowlist) are re-run before execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesThe confirmation token returned by a previous spend tool call.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the token is single-use/consumed and that safety checks (budget, allowlist) are re-run. This is valuable behavioral context beyond the bare action. It could also mention failure modes or idempotency, but what is present is substantive.

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, no wasted words. The first sentence immediately states the action and object, and the second provides key conditions and behavioral traits. Excellent front-loading and structure.

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 tool with one parameter, no output schema, and no annotations, the description covers purpose, usage condition, token lifecycle, and safety re-check. It does not describe the return value or error behavior, but given its simplicity and the absence of an output schema, the description is largely complete. A 5 would require more detail on expected outcomes.

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?

The input schema already explains the token parameter as 'the confirmation token returned by a previous spend tool call' with 100% coverage. The description adds the adjective 'one-time' and clarifies token consumption, but this is more behavioral than parameter-specific. The description does not significantly enhance understanding of the parameter beyond the schema, so baseline 3 is appropriate.

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?

The description clearly states the tool executes a previously prepared payment using a one-time token, which distinguishes it from siblings like nwc_pay_invoice that initiate new payments. The verb 'execute' and resource 'previously prepared payment' are specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly notes the tool is only meaningful when NWC_REQUIRE_CONFIRM=true, giving a clear condition for use. It also implies the workflow: after a spend tool call returns a token, this tool confirms it. However, it does not explicitly name alternatives or state when *not* to use it, so it falls short of a 5.

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

nwc_decode_invoiceA

Decode a bolt11 Lightning invoice locally (no network call). Returns amount in sats, description, payment hash, expiry, payee pubkey, and network. Use this before pay_invoice to confirm the invoice contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesThe bolt11 invoice string to decode.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the operation is performed 'locally (no network call)' and enumerates the return fields (amount in sats, description, payment hash, expiry, payee pubkey, network). This gives a good sense of what the tool does, though it doesn't mention error handling or validation details.

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?

The description is two sentences, front-loaded with the main action, and includes a clear use-case pointer. Every sentence adds value: the first explains what/where, the second explains when and why. No fluff.

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

Completeness5/5

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

For a simple single-parameter tool with no output schema, the description is complete: it states the input type, the execution context (local, no network), the returned fields, and a practical usage scenario. The sibling list reinforces its role, but the description itself is 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?

The input schema already has 100% coverage for the single parameter 'invoice' with description 'The bolt11 invoice string to decode.' The tool description does not add additional meaning to that parameter beyond confirming it's a bolt11 invoice, so the baseline of 3 is appropriate.

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?

The description clearly states the tool's action: 'Decode a bolt11 Lightning invoice locally'. It specifies the resource (bolt11 invoice) and the verb (decode), and distinguishes from siblings like 'pay_invoice' by emphasizing the local, non-network nature and its role as a pre-payment check.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance: 'Use this before pay_invoice to confirm the invoice contents.' It also implies a context (local decode, no network). However, it does not mention when not to use it or contrast with alternative tools like 'lookup_invoice', so it falls short of full 5.

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

nwc_get_balanceA

Return the current spendable balance of the connected wallet, in satoshis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It clearly indicates a read-only-ish action ('Return') but does not discuss safety, side effects, errors, or prerequisites beyond mentioning a 'connected wallet'. For a simple getter, this is adequate but not rich.

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 containing only essential information. No wasted words, and the key details (action, resource, unit) are all present.

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?

Given the simplicity of the tool (no parameters, no output schema, no annotations), the description covers the essential information: what is returned and in what units. It could optionally mention error behavior, but the description is complete enough for a basic balance query.

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 has zero parameters, so the baseline is 4. The description adds semantic value by specifying the return unit ('satoshis'), which is not present in the empty schema. No further parameter detail is possible or needed.

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?

The description specifies a clear action ('Return') and a distinct resource ('current spendable balance of the connected wallet') with units ('satoshis'). This unambiguously distinguishes it from sibling tools focused on invoices, payments, and wallet info.

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 description implicitly defines when to use the tool (when a balance is needed), but it does not explicitly state exclusions or alternatives, such as whether nwc_get_info might also provide balance. Without sibling differentiation, it lacks clear usage guidance beyond obviousness.

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

nwc_get_infoA

Return the connected wallet's capabilities, supported NIP-47 methods, node pubkey, network, alias, and color. Call this first in any session to discover what the wallet supports.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It lists the returned data fields and implies a read-only operation by saying 'call this first', but it does not explicitly state whether it mutates state, requires auth, or has side effects. For a simple info call, this is adequate but not rich.

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, front-loaded with the primary action and immediate outcome, no filler. Every word adds value.

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 parameterless info tool, the description lists return values and usage context. No output schema exists, but the field list provides sufficient expectation. Missing details like exact format of capabilities are not critical for invocation.

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 has zero parameters, so schema coverage is 100% trivially. The description does not need to explain parameters. The baseline of 4 is appropriate.

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?

The description clearly states a specific verb ('Return') and a specific resource (connected wallet's capabilities, methods, pubkey, network, alias, color). This distinguishes it from siblings like nwc_get_balance or nwc_list_transactions, making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides explicit timing guidance ('Call this first in any session') and explains the benefit ('discover what the wallet supports'). While it doesn't explicitly name alternatives or when not to use, the context strongly implies it as a discovery tool before other operations.

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

nwc_list_transactionsA

List transactions on the connected wallet. Supports filtering by time range, direction (incoming/outgoing), and inclusion of unpaid invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoUnix timestamp (seconds). Filter transactions at or after this time.
typeNoFilter by direction.
limitNoMax number of transactions to return (default per the wallet).
untilNoUnix timestamp (seconds). Filter transactions at or before this time.
offsetNoPagination offset.
unpaidNoIf true, include unpaid invoices in the result.

TDQS

A4/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. The verb 'List' implies a read-only operation and the description adds filter semantics, but it does not disclose pagination behavior, default ordering, return format, or explicitly state that it is non-mutating. This is adequate but not rich in behavioral context.

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, front-loaded with the core purpose, and no redundant words. Every clause adds useful information (resource, filters). This is optimally concise.

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?

The tool has 6 optional parameters, all fully documented in the schema, and no output schema. The description sufficiently conveys that the tool lists filtered transactions. It could mention pagination (limit/offset) or the response shape for full completeness, but the schema already covers parameter semantics, and the operation is simple enough that the description meets the bar.

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% with detailed descriptions for all six parameters. The description only restates the filtering concepts already present in the schema (time range → from/until, direction → type, unpaid → unpaid). It adds no additional syntax, default-value, or relationship context, so the baseline of 3 is appropriate.

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?

The description uses a specific verb ('List') and resource ('transactions on the connected wallet'), and clearly enumerates the filtering axes (time range, direction, unpaid invoices). This strongly distinguishes it from sibling tools like nwc_lookup_invoice, which targets a single invoice.

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

Usage Guidelines4/5

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

The description provides clear context: it lists transactions and supports filters. However, it does not explicitly mention when to prefer this over alternatives (e.g., for a single invoice, use lookup_invoice). The absence of exclusions or alternative references drops it from a 5.

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

nwc_lookup_invoiceA

Look up an invoice by payment hash or bolt11 string. Returns the invoice state (paid/unpaid), settled timestamp, amount, fees paid, and preimage if settled. Provide either payment_hash OR invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceNoThe bolt11 invoice string to look up (alternative to payment_hash).
payment_hashNoThe payment hash of the invoice to look up.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the return fields and the condition for preimage ('if settled'), but does not explicitly state that this is a read-only operation, what happens if the invoice is not found, or behavior when both parameters are provided. The description is adequate but lacks some behavioral edge cases.

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?

The description is two sentences, front-loaded with the core purpose, followed by returned data and parameter instruction. Every word contributes, with no redundancy or filler.

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 simple lookup tool with two optional parameters and no output schema, the description covers the key aspects: input alternatives, returned fields, and conditional preimage. It lacks guidance on error handling or conflicting parameters, but given the tool's low complexity, it is sufficiently complete.

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?

Schema coverage is 100%, so the baseline is 3. The description adds value by explicitly stating that the two parameters are alternatives ('either payment_hash OR invoice'), clarifying the exclusivity relationship beyond the schema's individual field descriptions. This helps the agent understand how to choose between them.

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?

The description clearly states the tool's function: 'Look up an invoice by payment hash or bolt11 string.' It specifies the verb, resource, and input types, and distinguishes itself from siblings like nwc_decode_invoice by explicitly listing the returned data (state, timestamp, amount, fees, preimage), which implies it retrieves stored invoice status rather than just decoding.

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 description gives parameter usage guidance ('Provide either payment_hash OR invoice') but does not explicitly differentiate when to use this tool versus siblings like nwc_decode_invoice or nwc_list_transactions. The intended use case is implied by the description of returned state information, but no explicit alternatives or exclusions are mentioned.

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

nwc_make_invoiceA

Create a bolt11 Lightning invoice for the given amount in sats. Safe — does not move funds; only generates a payment request. Returns the bolt11 string and payment hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
amount_satsYesInvoice amount in satoshis.
descriptionNoMemo / description shown to the payer.
expiry_secondsNoInvoice expiry in seconds (defaults to wallet's setting).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description takes on full responsibility for behavioral disclosure. It explicitly states that the tool 'does not move funds; only generates a payment request,' addressing the key safety concern for a financial tool. It also reveals the return values ('Returns the bolt11 string and payment hash'), which is helpful. However, it does not mention other behavioral aspects like whether the invoice is stored, persisted, or has side effects beyond generation, so it falls short of a perfect score.

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?

The description is two sentences long, front-loaded with the core action, followed by a concise safety note and return value summary. Every sentence earns its place with no fluff or repetition. The structure is efficient and scannable.

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 simple 3-parameter tool with no output schema, this description covers the essential aspects: what it does, its safety profile, and what it returns. It does not explicitly state whether the invoice is persisted or usable immediately, which could be relevant context for integration. However, the tool's purpose is straightforward and the description is sufficient for an agent to invoke it correctly in most cases.

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%, meaning all three parameters (amount_sats, description, expiry_seconds) are fully described in the schema with types and limits. The description adds no additional meaning beyond what the schema already provides—it simply mentions 'amount in sats,' which is already in the schema. Per the rubric, the baseline of 3 applies when schema coverage is high, and the description neither compensates nor introduces ambiguity.

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?

The description clearly states a specific action: 'Create a bolt11 Lightning invoice for the given amount in sats.' This is a unique verb+resource combination that unambiguously distinguishes it from sibling tools like pay_invoice or lookup_invoice, which serve different functions. The resource (bolt11 invoice) is specific and leaves no doubt about the tool's purpose.

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 provides no explicit guidance on when to use this tool versus the siblings. It does not say 'use this when you need to receive payment' or contrast with pay_invoice. The phrase 'Safe — does not move funds; only generates a payment request' hints at its non-destructive nature, but this is more about safety than usage context. There is no mention of appropriate scenarios or exclusions, leaving the user to infer from the tool name and sibling list.

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

nwc_multi_pay_invoiceA

Pay multiple bolt11 invoices sequentially in one tool call. Each invoice is decoded and safety-checked independently; the batch sum is checked against the daily and total budget caps upfront. If any pre-check or sum check fails, no payments are sent. Execution is per-invoice — a failure mid-batch does not roll back already-settled invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoicesYesArray of invoices to pay sequentially. Each is decoded + safety-checked independently. The batch's *sum* is checked against the daily budget before any payment runs; if the sum would exceed the cap, the entire batch is rejected before any HTLC is sent.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and excels. It discloses that each invoice is independently decoded and safety-checked, that the batch sum is checked against budget caps upfront, that no payments are sent if any pre-check fails, and that partial failures do not roll back settled invoices. This is rich behavioral detail that goes beyond a simple 'pays invoices' statement.

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?

The description is two sentences: the first states the core purpose, the second explains the safety checks and execution model. Every sentence earns its place with no redundancy or filler. The critical information is front-loaded.

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 multi-invoice payment tool with safety checks and no output schema, the description covers the essential behavioral context: pre-checks, budget caps, sequential execution, and no rollback. However, it leaves ambiguity about what happens when a single invoice fails—does the batch stop, skip, or continue? It says 'a failure mid-batch does not roll back already-settled invoices' but does not clarify whether subsequent invoices are still attempted. This minor gap prevents a 5.

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?

Schema coverage is 100%, so the schema already documents the invoice string and amount_override_sats fields. The description adds value by explaining how the invoices array is processed: each invoice is checked independently, and the batch sum is budget-checked upfront. This clarifies the group-level semantics of the array parameter beyond what the schema's item description provides.

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?

The description opens with 'Pay multiple bolt11 invoices sequentially in one tool call,' which clearly identifies the verb (pay), resource (bolt11 invoices), and scope (multiple, sequential). This distinguishes it from siblings like nwc_pay_invoice, which handles single invoices, and nwc_pay_lnurl/keysend for non-bolt11 methods.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when there are multiple bolt11 invoices to pay in a single call. It does not explicitly name alternatives or state 'for single invoice use nwc_pay_invoice,' but the phrasing 'multiple... in one tool call' provides a clear context. No exclusions or when-not-to-use are given, so it falls slightly short of a 5.

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

nwc_pay_invoiceA

Pay a bolt11 Lightning invoice. Decodes locally, runs the safety pipeline (read-only gate, destination allowlist, budget cap), and either executes immediately or — if NWC_REQUIRE_CONFIRM=true — returns a one-time confirmation token to pass to nwc_confirm_payment. Returns preimage + fees on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesThe bolt11 invoice to pay (lnbc...).
amount_override_satsNoAmount in sats — required for amountless invoices; rejected if the invoice already encodes an amount.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses the safety pipeline (read-only gate, destination allowlist, budget cap), the conditional confirmation token, and the success return (preimage + fees). It could be more explicit about error scenarios or the exact meaning of the read-only gate, but it is substantially transparent.

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?

The description is three well-structured sentences that front-load the main action and then deliver safety behavior, confirmation flow, and return value. Every sentence adds value with no redundancy or fluff.

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 payment tool with no output schema and no annotations, the description covers the safety checks, conditional confirmation, and return value. It lacks error-handling details and the exact confirmation token format, but the reference to nwc_confirm_payment covers the follow-up step, making it adequately complete for an agent.

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%, so both parameters (invoice and amount_override_sats) are already well-described in the schema. The description's mention of 'bolt11' and local decoding adds minimal extra context, and it does not elaborate on parameter syntax beyond what the schema provides. Baseline 3 is appropriate.

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?

The description opens with 'Pay a bolt11 Lightning invoice,' clearly identifying the action and resource. It further distinguishes from siblings by noting the local decode and safety pipeline, and implicitly excluding other payment types (e.g., keysend, LNURL) through tool naming and context.

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

Usage Guidelines4/5

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

It provides clear context for when to use this tool (bolt11 invoices) and explicitly explains the confirmation flow tie-in with nwc_confirm_payment if NWC_REQUIRE_CONFIRM=true. It doesn't explicitly name alternatives like nwc_multi_pay_invoice or nwc_pay_lightning_address, but the sibling list makes those distinctions obvious.

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

nwc_pay_keysendA

Send sats directly to a node pubkey via keysend (spontaneous payment, no invoice). Default-off — must be opt-in via NWC_KEYSEND_ENABLED=true. Power-user feature: no payment hash receipt, weaker safety surface than bolt11. Use bolt11 invoices when available. Runs the full safety pipeline (read-only gate, allowlist on pubkey, budget cap, optional two-step confirmation).

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesDestination node's public key (33 bytes hex).
amount_satsYesAmount to send in satoshis.
tlv_recordsNoOptional TLV records (e.g., podcasting 2.0 metadata, LNURL-pay sender data). Empty/omitted is fine for most uses.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses no payment hash receipt, weaker safety surface, and the full safety pipeline (read-only gate, allowlist, budget cap, optional two-step confirmation). This is rich behavioral context beyond the schema.

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 sentences, front-loaded with the core purpose, then caveats and safety details. Every sentence adds unique value without waste.

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

Completeness5/5

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

Given the complexity of a payment tool with no annotations and no output schema, the description covers the essential aspects: default-off toggle, safety pipeline, invoice comparison, and what to expect (no payment hash). It is sufficiently complete for an agent to decide and invoke correctly.

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%, so the description need not elaborate on parameters. It does add minor value by mentioning TLV records usage examples (e.g., podcasting 2.0 metadata), but the schema already documents all fields well. This meets the baseline for high schema coverage.

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?

The description clearly states 'Send sats directly to a node pubkey via keysend (spontaneous payment, no invoice),' which specifies the exact action, resource, and method. It distinguishes from siblings like nwc_pay_invoice and nwc_pay_lightning_address by emphasizing pubkey-based, no-invoice payments.

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

Usage Guidelines5/5

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

Explicitly provides usage context: 'Default-off — must be opt-in via NWC_KEYSEND_ENABLED=true' and 'Use bolt11 invoices when available.' This tells when to use the tool and when to prefer alternatives, plus notes it's a power-user feature.

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

nwc_pay_lightning_addressA

Pay a Lightning Address (e.g., alice@getalby.com). Resolves the LNURL-pay endpoint to a bolt11 invoice, then runs the safety pipeline (read-only gate, allowlist check on the LN address, budget cap, optional two-step confirmation). Returns preimage on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe Lightning Address to pay (e.g., alice@getalby.com).
commentNoOptional comment for the recipient. Only sent if the LNURL-pay endpoint advertises comment support (LUD-12); otherwise rejected.
amount_satsYesAmount to send in satoshis.

TDQS

A4/5.0
Behavior4/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 a significant amount of behavioral detail, including the safety pipeline (read-only gate, allowlist, budget cap, optional two-step confirmation) and the return of the preimage on success. This goes beyond typical descriptions, though it omits potential failure modes or specific permission requirements.

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?

The description is extremely concise, consisting of exactly two sentences. It front-loads the core action ('Pay a Lightning Address') and then efficiently summarizes the technical flow and safety checks. Every sentence earns its place without redundancy.

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?

Given the tool's complexity (payment operation, no output schema, no annotations), the description is quite complete. It explains the end-to-end process, mentions the safety pipeline, and notes the return value. It also implicitly connects to the sibling nwc_confirm_payment via the two-step confirmation. It lacks explicit error scenarios, but the coverage is strong for a tool of this type.

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 does not add additional meaning beyond what the schema already provides for each parameter; the schema covers address format, comment behavior (LUD-12), and amount constraints. The description's mention of 'budget cap' indirectly relates to amount_sats but not in a parameter-specific way.

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?

The description clearly states the tool's purpose with a specific verb+resource: 'Pay a Lightning Address'. It also distinguishes itself from sibling tools by explicitly mentioning the resolution of LNURL-pay to a bolt11 invoice, which sets it apart from tools like nwc_pay_invoice or nwc_pay_lnurl.

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 description implies usage context by explaining the tool's workflow (resolving an address to an invoice), but it does not explicitly state when to use this tool versus alternatives like nwc_pay_invoice or nwc_pay_lnurl. It provides no exclusions or when-not-to-use guidance.

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

nwc_pay_lnurlA

Pay a raw LNURL-pay endpoint (bech32 lnurl1... string). Decodes the LNURL, resolves the pay request, then runs the safety pipeline (read-only gate, allowlist check on the LNURL, budget cap, optional two-step confirmation). Use nwc_pay_lightning_address when you have a name@domain.tld instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
lnurlYesA raw LNURL string (bech32, starts with lnurl1...; an optional lightning: prefix is stripped).
commentNoOptional comment, only sent if the endpoint advertises LUD-12 comment support.
amount_satsYesAmount to send in satoshis. Must fall within the endpoint's [min, max] range.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full disclosure burden. It goes beyond 'pay' by detailing the internal pipeline: decodes LNURL, resolves pay request, runs safety pipeline (read-only gate, allowlist check, budget cap, optional two-step confirmation). This provides crucial behavioral context about constraints and side effects.

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?

The description is compact and well-structured: the first sentence states the core function, the second explains the internal process, and the third provides an alternative tool. Every sentence serves a purpose, with no redundancy or filler.

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?

The description covers purpose, process, and constraints thoroughly, but there is no output schema and no mention of what the tool returns. Since optional two-step confirmation is mentioned, the agent is left without guidance on how to handle that flow or what response to expect, creating a notable gap for a payment 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%, as all three parameters are documented in the input schema including format, range, and LUD-12 comment support. The description adds no parameter-specific information beyond what the schema already states, so the baseline score of 3 is appropriate.

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?

The description uses a specific verb ('Pay') with a clear resource ('raw LNURL-pay endpoint'), and immediately distinguishes itself from the sibling tool nwc_pay_lightning_address. It also specifies the input format (bech32 lnurl1... string), leaving no ambiguity about what this tool does.

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

Usage Guidelines5/5

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

Clear guidance is provided: use this tool for raw LNURL strings, and use nwc_pay_lightning_address for name@domain.tld addresses. This explicit alternative tells the agent exactly when to choose this tool over a closely related sibling, qualifying as strong usage guidance.

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. Dates show when Glama detected each change.

  1. 13 tool updatesv0.1.0
    • First observednwc_budget_status
    • First observednwc_confirm_payment
    • First observednwc_decode_invoice
    • First observednwc_get_balance
    • First observednwc_get_info
    • First observednwc_list_transactions
    • First observednwc_lookup_invoice
    • First observednwc_make_invoice
    • First observednwc_multi_pay_invoice
    • First observednwc_pay_invoice
    • First observednwc_pay_keysend
    • First observednwc_pay_lightning_address
    • First observednwc_pay_lnurl

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct operation: info, balance, invoice lookup, transaction listing, invoice decoding, budget status, invoice creation, and various payment types (bolt11, lightning address, LNURL, batch, keysend) plus a confirmation step. The payment tools are clearly differentiated by their parameter type and use case, with cross-references in descriptions to avoid confusion.

Naming Consistency4/5

Most tools follow the consistent nwc_verb_noun pattern (e.g., nwc_get_info, nwc_pay_invoice, nwc_confirm_payment). The only deviation is nwc_budget_status, which lacks an explicit verb like 'get'—it should ideally be nwc_get_budget_status. Overall, the convention is strong and predictable.

Tool Count5/5

13 tools is well within the ideal 3-15 range for a wallet-focused server. Each tool covers a meaningful aspect of Lightning wallet management: discovery, balance, invoicing, payment, transaction history, budget control, and confirmation. No redundant or trivial tools.

Completeness5/5

The tool surface covers the full lifecycle of a Lightning wallet: creating invoices, paying via multiple methods, looking up invoices, listing transactions, decoding, checking budget, and confirming payments. It also includes an info tool for capability discovery per NIP-47. No obvious gaps for the stated domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/llmops-pro/nwc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server