Phoenixd MCP Server
Provides tools for managing a Phoenixd Bitcoin Lightning wallet, including creating invoices, paying invoices, managing channels, and sending on-chain Bitcoin payments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Phoenixd MCP Servercreate a 1000 sat invoice for donation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Phoenixd MCP Server
Connect a phoenixd bitcoin lightning wallet to your LLM.
This MCP server uses MCP TypeScript SDK and Phoenixd API.
Prerequisites
You need a running phoenixd node. Phoenixd generates an HTTP password on first run and writes it to ~/.phoenix/phoenix.conf:
http-password=your_generated_passwordUse that value for HTTP_PASSWORD in the configuration below.
Node.js >= 18 is required.
Related MCP server: Alby Bitcoin Payments MCP Server
Configuration
Usage with Claude Desktop
Add this to your claude_desktop_config.json file:
{
"mcpServers": {
"phoenixd-mcp-server": {
"command": "npx",
"args": [
"-y",
"phoenixd-mcp-server"
],
"env": {
"HTTP_PROTOCOL": "http",
"HTTP_HOST": "127.0.0.1",
"HTTP_PORT": "9740",
"HTTP_PASSWORD": "<your_password_from_phoenix.conf>"
}
}
}
}Remote node (VPS / HTTPS)
If phoenixd runs on a remote server behind a reverse proxy with TLS:
{
"mcpServers": {
"phoenixd-mcp-server": {
"command": "npx",
"args": [
"-y",
"phoenixd-mcp-server"
],
"env": {
"HTTP_PROTOCOL": "https",
"HTTP_HOST": "your.server.com",
"HTTP_PORT": "9740",
"HTTP_PASSWORD": "<your_password_from_phoenix.conf>"
}
}
}
}Tools
Payments
create-invoiceCreate a bolt11 invoice with a specified amount and description.
Inputs:
description(string, optional): The description of the invoice (max. 128 characters). EitherdescriptionordescriptionHashmust be provided.descriptionHash(string, optional): SHA256 hash of the description. Use instead ofdescription.amountSat(number, optional): The amount requested by the invoice, in satoshi. If not set, the invoice can be paid by any amount.expirySeconds(number, optional): The invoice expiry in seconds, default 3600 (1 hour).externalId(string, optional): A custom identifier to link the invoice to an external system.webhookUrl(string, optional): A URL that phoenixd will POST to when this invoice is paid. The payload is a JSON object with the payment details as defined in the Phoenixd API docs.
create-offerCreate a bolt12 offer.
Inputs:
description(string): The description of the offer.amountSat(number, optional): The amount requested by the offer, in satoshi.expirySeconds(number, optional): The offer expiry in seconds.
pay-invoicePay a bolt11 invoice.
Inputs:
invoice(string): The bolt11 invoice to pay.amountSat(number, optional): Amount to pay in satoshis (only for zero-amount invoices). Mutually exclusive withsendAll.sendAll(boolean, optional): If true, empties the wallet. Mutually exclusive withamountSat.externalId(string, optional): A custom identifier to link the payment to an external system.
pay-offerPay a bolt12 offer.
Inputs:
offer(string): The bolt12 offer to pay.amountSat(number, optional): Amount to pay in satoshis. Mutually exclusive withsendAll.sendAll(boolean, optional): If true, empties the wallet. Mutually exclusive withamountSat.message(string, optional): A message for the recipient.externalId(string, optional): A custom identifier to link the payment to an external system.
pay-lightning-addressPay a Lightning Address.
Inputs:
address(string): The Lightning Address to pay (e.g., swamppawpaw18@phoenixwallet.me).amountSat(number, optional): Amount to pay in satoshis. Mutually exclusive withsendAll.sendAll(boolean, optional): If true, empties the wallet. Mutually exclusive withamountSat.message(string, optional): Optional message to include with the payment.
pay-on-chainSend an on-chain Bitcoin payment.
Inputs:
address(string): The Bitcoin address to send funds to.amountSat(number): Amount to send in satoshis.feerateSatByte(number, optional): Fee rate in satoshis per byte.
bump-feeBumps the fee rate of all unconfirmed on-chain transactions using CPFP. Returns the ID of the child transaction.
Inputs:
feerateSatByte(number): New fee rate in satoshis per byte.
list-incoming-paymentsList incoming payments (invoices).
Inputs:
from(string, optional): Start timestamp in millis from epoch, default 0.to(string, optional): End timestamp in millis from epoch, default now.limit(number, optional): Number of payments per page, default 20.offset(number, optional): Page offset, default 0.all(boolean, optional): Also return unpaid invoices, default false.externalId(string, optional): External id of the bolt11 invoice.
get-incoming-paymentGet details of a specific incoming payment (invoice).
Inputs:
paymentHash(string): The payment hash of the invoice.
list-outgoing-paymentsList outgoing payments.
Inputs:
from(string, optional): Start timestamp in millis from epoch, default 0.to(string, optional): End timestamp in millis from epoch, default now.limit(number, optional): Number of payments per page, default 20.offset(number, optional): Page offset, default 0.externalId(string, optional): External id of the payment.
get-outgoing-paymentGet details of a specific outgoing payment.
Inputs:
paymentHash(string): The payment hash of the outgoing payment.
Node management
get-node-infoGet the node info.
Inputs: none
get-balanceGet the balance of the node.
Inputs: none
list-channelsList the node channels.
Inputs: none
close-channelClose a channel by ID, sending the funds to a specified address on chain, with a specified fee rate.
Inputs:
channelId(string): The ID of the channel to close.address(string): The Bitcoin on chain address to send the funds to.feerateSatByte(number): The fee rate in satoshis per byte.
decode-invoiceDecode a bolt11 invoice, the output amount is in millisatoshis.
Inputs:
invoice(string): The bolt11 invoice to decode.
decode-offerDecode a bolt12 offer, the output amount is in millisatoshis.
Inputs:
offer(string): The bolt12 offer to decode.
Troubleshooting
Authentication failed / 401 — Check that HTTP_PASSWORD matches the value in ~/.phoenix/phoenix.conf.
Connection refused — Phoenixd is not running or is listening on a different host/port. Verify with curl http://127.0.0.1:9740/getinfo -u :your_password.
Node.js version error — This package requires Node.js >= 18. Run node --version to check.
Available Tools
17 toolsbump-feeA
Makes all your unconfirmed transactions use a higher fee rate, using CPFP. Returns the ID of the child transaction
| Name | Required | Description | Default |
|---|---|---|---|
| feerateSatByte | Yes | The fee rate in satoshis per byte |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description discloses the CPFP mechanism and that it affects all unconfirmed transactions, returning the child transaction ID. It lacks mention of prerequisites like sufficient balance, but is fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no redundant information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the action, method, and return value. It could mention potential limitations (e.g., required available balance) but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the only parameter (feerateSatByte). The tool description adds minimal extra meaning beyond 'higher fee rate', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (makes unconfirmed transactions use a higher fee rate), the method (CPFP), and the resource (unconfirmed transactions). It distinguishes itself from sibling tools that handle payments, invoices, channels, and other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when there are unconfirmed transactions that need a higher fee rate, but does not provide explicit guidance on when to use it versus alternatives (e.g., RBF) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close-channelB
Close a channel by ID, sending the funds to a specified address on chain, with a specified fee rate
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | The ID of the channel to close | |
| address | Yes | The Bitcoin on chain address to send the funds to | |
| feerateSatByte | Yes | The fee rate in satoshis per byte |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must convey behavioral traits. It lacks information about irreversibility, confirmation requirements, or potential risks. The action is financial and permanent, warranting more detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently communicates the core purpose without any extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three straightforward parameters and no output schema, the description is minimally complete. However, it lacks behavioral context and usage boundaries, which a user would need for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all three parameters (100% coverage). The description restates them coherently but adds no new semantic value beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (close channel), the resource (channel by ID), and key parameters (address, fee rate). It distinguishes from sibling tools like listing or payment ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like on-chain transactions or channel rebalancing. The description assumes the user already knows when closing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-invoiceC
Create a bolt11 invoice with a specified amount and description
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | The description of the invoice (max. 128 characters). Either description or descriptionHash must be provided. | |
| descriptionHash | No | SHA256 hash of the description. Use instead of description. | |
| amountSat | No | The amount requested by the invoice, in satoshi. If not set, the invoice can be paid by any amount. | |
| expirySeconds | No | The invoice expiry in seconds, by default 3600 (1 hour). | |
| externalId | No | A custom identifier. Use that to link the invoice to an external system. | |
| webhookUrl | No | A webhook url that will be notified when this specific payment has been received. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only implies mutation (create) without specifying persistence, authentication needs, rate limits, or return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no extraneous information. It is clear and front-loaded, but could be slightly expanded for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain what the tool returns and any side effects. It lacks this context, making it incomplete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 6 parameters. The tool description adds no additional value beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a bolt11 invoice with amount and description. It is distinct from sibling tools like pay-invoice or decode-invoice, though not explicitly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites or context provided. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-offerB
Create a bolt12 offer with an optional description and amount
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | The description of the offer (max. 128 characters). | |
| amountSat | No | The amount requested by the offer, in satoshi. If not set, the offer can be paid by any amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, constraints, error behavior, or what happens after creation (e.g., whether the offer is returned). Only the positional optionality of parameters is mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and resource. No wasted words, but it could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 optional params, no output schema, no annotations), the description covers the basic purpose. However, it omits useful context like the fact that a bolt12 offer string is returned, which would help the agent use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds 'optional' context but does not provide additional meaning beyond what the schema already states (max 128 characters, amount optional). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool action (create), the specific resource (bolt12 offer), and the optional parameters (description and amount). It distinguishes from siblings like 'decode-offer' or 'pay-offer'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'pay-offer' or 'decode-offer'. No prerequisites or usage context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode-invoiceB
Decode an bolt11 invoice, the output amount is in milisatoshis
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | The bolt11 invoice to decode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only discloses that output amount is in milisatoshis. No mention of read-only nature, potential errors, or other behavioral traits. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with verb, object, and a key output detail. No wasted words, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description only mentions one output field (amount). Decoded invoices contain many fields (signature, timestamps, description, etc.) that are not hinted at. Incomplete for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the parameter description is generic ('The bolt11 invoice to decode'). The description adds the bolt11 mention (already in name) and output unit, but does not clarify parameter format, length, or examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Decode a bolt11 invoice' with a specific verb and resource. It also adds the output amount unit, which is valuable. The tool name itself distinguishes from sibling decode-offer, and the description reinforces that by specifying 'bolt11 invoice'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like decode-offer. The usage is implied by the tool name and description, but no exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode-offerC
Decode an bolt12 offer the output amount is in milisatoshis
| Name | Required | Description | Default |
|---|---|---|---|
| offer | Yes | The bolt12 offer to decode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must carry full burden. It only mentions output unit but fails to disclose that the tool is read-only, does not modify state, or what happens on invalid offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it lacks structure and is too minimal. Could benefit from a second sentence on return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one param and no output schema, the description provides the core action but omits the full return structure and read-only nature. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single parameter. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool decodes a bolt12 offer, distinguishing it from sibling decode-invoice. The mention of output amount unit adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 decode-invoice or other alternatives. No prerequisites or use cases provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-balanceA
Get the balance of the node
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description indicates a read operation ('Get'), which is safe. However, it does not disclose additional behavioral traits such as what balance (e.g., total, available) or whether it covers on-chain and lightning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise and front-loaded. Every word is necessary with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters and no output schema, the description is nearly complete. It could be enhanced by specifying the type of balance returned, but is adequate as is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so description does not need to add parameter meaning. The baseline score of 4 is appropriate as the description adds no further context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the balance of the node', specifying the verb and resource. It distinguishes from sibling tools which focus on payments, invoices, channels, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives, but the tool is straightforward and usage is implied. Does not provide when-not or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-incoming-paymentC
Get the incoming payment by payment hash
| Name | Required | Description | Default |
|---|---|---|---|
| paymentHash | Yes | payment hash of the incoming payment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic function without detailing side effects, idempotency, read-only nature, authorization needs, rate limits, or what happens if the payment hash is invalid. This is insufficient for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. However, it is so brief that it sacrifices completeness. It earns its place but could be improved with a bit more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is incomplete. It fails to specify what data is returned (e.g., payment details, status) or any edge cases. More context is needed for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter. The description adds no additional meaning beyond 'by payment hash', which is already inferred from the schema. Baseline score of 3 is appropriate because the schema already documents the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'incoming payment' with a retrieval key 'by payment hash'. It is specific enough to distinguish from sibling tools like 'list-incoming-payments' and 'get-outgoing-payment', though it relies partly on the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as listing payments or distinguishing from outgoing payments. There are no usage conditions, exclusions, or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-node-infoB
Get the node info
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must bear the burden of behavioral disclosure. It only says 'Get', implying read-only, but provides no details about side effects, permissions, or output nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded and concise. However, it lacks detail, which slightly reduces its effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the complexity of likely returned data, the description is insufficient. The agent cannot determine what 'node info' entails, leading to potential misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. The description adds no parameter-specific meaning, but the schema coverage is 100% (trivially). The resource 'node info' is vaguely defined but sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get the node info', which clearly indicates a read operation with a specific resource. However, it does not distinguish from sibling tools like get-balance or list-channels, making the purpose less precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description does not provide context about scenarios or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-outgoing-paymentB
Get the outgoing payment by payment id
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | payment hash of the outgoing payment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'Get' with no disclosure of error handling, idempotency, authentication needs, or what happens if payment ID is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loaded with purpose. No redundant text, but could be slightly expanded without breaking conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool with one parameter and no output schema, but lacks description of return value structure or behavior. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter description. Description adds no extra meaning beyond schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Get' and resource 'outgoing payment' with key identifier 'payment id'. Distinguishes from sibling tools like get-incoming-payment and list-outgoing-payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., list-outgoing-payments). Does not mention context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-channelsB
List the node channels
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether the operation is read-only, whether it requires authentication, or what side effects it has. For a simple list operation, the lack of transparency is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that directly states the purpose. No unnecessary information is included, and it is efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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), the description minimally covers the operation. However, it does not specify what the output contains or any edge cases, leaving the agent to infer behavior. Completeness is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema description coverage is 100% (vacuously). The description does not add any parameter information beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List the node channels' clearly indicates the action (list) and the resource (node channels). It is specific and distinguishable from sibling tools like close-channel or bump-fee. However, it lacks additional context such as whether it lists all channels or only active ones, which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Sibling tools like close-channel or get-balance are related but no usage context is provided. The description does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-incoming-paymentsC
List the incoming payments
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | start timestamp in millis from epoch, default 0 | |
| to | No | end timestamp in millis from epoch, default now | |
| limit | No | number of payments in the page, default 20 | |
| offset | No | page offset, default 0 | |
| all | No | also return unpaid invoices | |
| externalId | No | external id of the bolt11 invoice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description adds no behavioral info such as read-only nature, pagination behavior, or sorting order.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one phrase), but for a tool with 6 parameters and no output schema, more structure would be beneficial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and no annotations, the description is incomplete; it does not explain return values, pagination details, or filtering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented in the schema; the description adds no additional meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List the incoming payments', which is clear about the verb and resource, but does not differentiate from sibling tools like list-outgoing-payments or get-incoming-payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives; no context for typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-outgoing-paymentsB
List the outgoing payments
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | start timestamp in millis from epoch, default 0 | |
| to | No | end timestamp in millis from epoch, default now | |
| limit | No | number of payments in the page, default 20 | |
| offset | No | page offset, default 0 | |
| all | No | also return payments that have failed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation ('List') with no destructive side effects. However, no annotations are present, and the description does not elaborate on behaviors like pagination default behavior or what is retrieved by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, very concise. It is front-loaded but could be slightly more informative about the tool's capabilities (e.g., pagination or filtering).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters including pagination (limit, offset), time range filtering (from, to), and a flag (all), but the description does not mention any of these features. Given no output schema or annotations, the description is too minimal for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have descriptions in the input schema, so the tool description adds no additional parameter details. Baseline score 3 is appropriate given 100% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists outgoing payments, but does not explicitly differentiate from sibling tools like 'get-outgoing-payment' (singular) or 'list-incoming-payments'. The verb 'List' and resource 'outgoing payments' are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives such as 'get-outgoing-payment' for a single payment or 'pay-invoice' for creating payments. No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay-invoiceC
Pay a bolt11 invoice with a specified amount and description
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | The bolt11 invoice to pay. | |
| amountSat | No | The amount to pay, in satoshi. If not set, will pay the amount requested in the invoice. Mutually exclusive with sendAll. | |
| sendAll | No | If true, empties the wallet. Mutually exclusive with amountSat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose important behavioral traits such as irreversible fund transfer, balance requirements, or the full impact of sendAll (emptying wallet). The agent is left unaware of consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence), but it sacrifices accuracy for brevity by falsely mentioning a 'description' field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a payment tool with significant side effects, the description lacks essential context about success/failure, balance requirements, and error handling. The sendAll behavior is only hinted in the schema, not the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds no value and misleads by stating a 'description' parameter that doesn't exist, reducing clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (pay a bolt11 invoice), but incorrectly mentions a 'description' parameter that does not exist in the schema, which could confuse an agent. It also does not differentiate from sibling tools like pay-lightning-address or pay-offer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives (e.g., pay-lightning-address, pay-offer). No prerequisites 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.
pay-lightning-addressB
Pays an email-like Lightning address, either based on BIP-353 or LNURL
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The Lightning address to pay. | |
| amountSat | No | The amount in satoshi. If unset, will pay the amount requested. Mutually exclusive with sendAll. | |
| sendAll | No | If true, empties the wallet. Mutually exclusive with amountSat. | |
| message | No | A message for the recipient. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only states it pays an address, without explaining idempotency, failure modes, wallet balance requirements, or the underlying LNURL resolution process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core functionality without any redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the tool's complexity (4 parameters, payment operation), the description is insufficient. It omits return value, error behavior, and the fact that the address resolution involves network requests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all parameters. The description adds no new semantics beyond what's in the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Pays') and resource ('Lightning address') and distinguishes from siblings by specifying 'email-like' and mentioning BIP-353/LNURL protocols, clearly differentiating it from pay-invoice and pay-on-chain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like pay-invoice or pay-offer, nor does it mention prerequisites or contextual scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay-offerC
Pay a bolt12 offer
| Name | Required | Description | Default |
|---|---|---|---|
| offer | Yes | The bolt12 offer to pay. | |
| amountSat | No | The amount in satoshi. If unset, will pay the amount requested in the offer. Mutually exclusive with sendAll. | |
| sendAll | No | If true, empties the wallet. Mutually exclusive with amountSat. | |
| message | No | A message for the recipient. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility for behavioral disclosure. It only states 'Pay a bolt12 offer' without revealing side effects (e.g., irreversible sending of funds), authorization requirements, or error conditions. Critical information for a payment action is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, which is efficient. However, it lacks any additional structure or explanation (e.g., what a bolt12 offer is). While not verbose, it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context about what happens when the tool is used (e.g., confirmation, result). For a payment tool that moves funds, the description is insufficiently complete. The agent is left without behavioral or return value information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all parameters adequately described in the input schema. The description itself adds no further parameter-level semantics. Baseline score of 3 is appropriate as the schema already documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Pay') and resource ('bolt12 offer'). While it doesn't explicitly differentiate from siblings like pay-invoice, the tool name itself distinguishes it (bolt12 vs bolt11). The description is sufficient for an agent to recognize the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not mention when to use this tool over alternatives (e.g., pay-invoice for bolt11, pay-lightning-address for LNURL) or any prerequisites. An agent receives no help in deciding between this and sibling payment tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay-on-chainB
Pay an on-chain address with a specified amount and fee rate
| Name | Required | Description | Default |
|---|---|---|---|
| amountSat | Yes | The amount in satoshi | |
| address | Yes | The Bitcoin on chain address to send the funds to | |
| feerateSatByte | Yes | The fee rate in satoshis per byte |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions paying an on-chain address, but omits critical details such as irreversibility, transaction finality, fee estimation, or return value. The limited description adds minimal transparency beyond the tool's basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise at one sentence and front-loaded with the key action. However, it could be improved by integrating additional context (e.g., output details) without increasing length significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description does not sufficiently explain the tool's behavior or return value. Missing information such as transaction ID output, confirmation requirements, and fee behavior makes the definition incomplete for a payment action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool's description does not add extra meaning beyond what the schema already provides (e.g., 'specified amount' maps to amountSat). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Pay' and the target resource 'on-chain address', and specifies the configurable parameters (amount and fee rate). It effectively distinguishes this tool from siblings like 'pay-invoice' and 'pay-lightning-address' which handle off-chain payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or situations where it should be avoided. Users are left to infer context from sibling tool names alone.
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.
17 tool updates
v1.2.0- First observed
bump-fee - First observed
close-channel - First observed
create-invoice - First observed
create-offer - First observed
decode-invoice - First observed
decode-offer - First observed
get-balance - First observed
get-incoming-payment - First observed
get-node-info - First observed
get-outgoing-payment - First observed
list-channels - First observed
list-incoming-payments - First observed
list-outgoing-payments - First observed
pay-invoice - First observed
pay-lightning-address - First observed
pay-offer - First observed
pay-on-chain
TDQS
All 17 tools have clearly distinct purposes, targeting different Lightning operations like invoices, offers, payments (by various methods), channels, balance, and node info. No overlap or ambiguity.
Tool names consistently follow a verb-noun pattern with lowercase and hyphens (e.g., create-invoice, pay-on-chain, get-balance). No mixing of conventions or irregular variations.
17 tools is appropriate for a Lightning node management server, covering invoices, payments, channels, balance, and node info without being excessive or insufficient.
The tool set covers most core operations for node management and payments, but notably lacks a tool to open channels, which is a fundamental operation for a Lightning node, leaving a meaningful gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Non-custodial crypto payments for AI assistants: balances, payments, and create payment links.
Pay-per-action access to APIs and MCP tools over Lightning L402 and Base USDC x402.
- Era ContextOAuthapp.era
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Bitcoin wallet intelligence for AI agents: trust, labels, tx verify, fees, and timestamps.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables interaction with lightning addresses and common lightning tools via your LLM, providing Lightning Network functionality through natural language.3211MIT
- AlicenseNot gradedqualityDmaintenanceEnables Bitcoin Lightning wallet integration with LLMs through Nostr Wallet Connect (NWC). Supports lightning payments, LNURL operations, and L402 authentication for AI-powered bitcoin transactions.30Apache 2.0

Breez MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceEnables Lightning Network wallet operations through the Breez SDK, allowing users to check balances, send/receive payments, create invoices, and manage Bitcoin Lightning transactions via natural language.7MIT- AlicenseAqualityDmaintenanceEnables AI agents to perform Bitcoin and Lightning Network payments using a non-custodial, zero-trust architecture. It provides 13 tools for wallet management, invoice creation, and payment processing while keeping node credentials local to the user's machine.1317MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Sharmaz/phoenixd-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server