wdk-wallet-rln-mcp
OfficialThis server provides full control over an RGB Lightning Node (RLN) wallet for AI agents via MCP. Capabilities include:
Node & Balances: Retrieve node identity, BTC on-chain/colored UTXO balances, RGB asset balances (by ID and list all), Lightning channel/peer info, and generate a BTC deposit address.
Invoices & Payments: Create RGB invoices for off-chain asset reception, BOLT11 invoices for BTC, pay BOLT11 invoices, send BTC on-chain, and send RGB assets on-chain.
Channel Management: List, open Lightning channels (optionally with RGB allocation), and connect to peers.
Transfers & History: List Lightning payments, refresh pending RGB transfers.
Atomic Swaps: Taker-side operations: whitelist HTLCs (step 2), list swaps, get status.
Machine Payments Protocol (MPP): Pay MPP Lightning challenges to receive L402-compatible credentials.
Provides tools for managing an RGB Lightning Node (RLN) wallet, including on-chain and Lightning balances, RGB asset management, Lightning invoices and payments, channel operations, and atomic swap taker support.
Click on "Deploy 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., "@wdk-wallet-rln-mcpwhat are my current balances?"
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.
wdk-wallet-rln-mcp
MCP server that exposes an RGB Lightning Node (RLN) wallet to AI agents via the Model Context Protocol.
Provides full wallet control: balances, RGB invoices, Lightning payments, channel management, and atomic swap taker support.
Tools
Node & Balances
Tool | Description |
| Node pubkey, channel count, Lightning balance, connected peers |
| BTC on-chain (vanilla + colored UTXOs) and Lightning balance |
| RGB asset balance by |
| All RGB assets held by the node (NIA, UDA, CFA schemas) |
| On-chain BTC deposit address |
Invoices & Payments
Tool | Description |
| Create an RGB invoice to receive an asset off-chain |
| Create a BOLT11 Lightning invoice to receive BTC |
| Pay a BOLT11 Lightning invoice |
| Send BTC on-chain |
| Send an RGB asset on-chain to a recipient ID |
Channel Management
Tool | Description |
| All channels: capacity, outbound/inbound balance, usability, RGB asset |
| Open a new channel, optionally with RGB asset allocation |
| Connect to a Lightning peer ( |
Transfers & Payments History
Tool | Description |
| Recent Lightning payments (sent and received) |
| Flush pending RGB asset transfers |
Atomic Swap Taker
Tool | Description |
| Step 2 of atomic swap — whitelist HTLC on node before execute |
| List all atomic swaps on the node |
| Get atomic swap state by |
MPP (Machine Payments Protocol)
Tool | Description |
| Pay an MPP Lightning challenge from the RLN wallet; returns a credential JSON for |
Related MCP server: Alby Bitcoin Payments MCP Server
Atomic Swap Flow
This server handles step 2 of the 5-step atomic swap flow:
kaleidoswap_atomic_init → swapstring + payment_hash (kaleidoswap-mcp)
wdk_atomic_taker → whitelist HTLC on node ← this server
wdk_get_node_info → taker_pubkey ← this server
kaleidoswap_atomic_execute → HTLC settlement (kaleidoswap-mcp)Installation
npm install
npm run buildUsage
# Stdio transport (use with any MCP host)
RLN_NODE_URL=http://localhost:3001 node dist/index.jsClaude Desktop
{
"mcpServers": {
"wdk_wallet": {
"command": "node",
"args": ["/path/to/wdk-wallet-rln-mcp/dist/index.js"],
"env": {
"RLN_NODE_URL": "http://localhost:3001"
}
}
}
}Configuration
Env var | Default | Description |
|
| RLN daemon HTTP API URL |
Requirements
A running RGB Lightning Node daemon accessible at RLN_NODE_URL.
License
Apache-2.0
Available Tools
19 toolswdk_atomic_takerA
Step 2 of atomic swap: whitelist the incoming HTLC on the RLN node. Must be called with the swapstring from kaleidoswap_atomic_init BEFORE calling kaleidoswap_atomic_execute. This locks the HTLC on the node so it is ready to receive the atomic payment.
| Name | Required | Description | Default |
|---|---|---|---|
| swapstring | Yes | Swapstring from kaleidoswap_atomic_init |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full weight. It transparently describes the mutation effect ('whitelist', 'locks the HTLC') and the purpose, with no contradictions.
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?
Three sentences, front-loaded with the core action. Every sentence adds essential information with no redundancy or 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?
Given the single parameter, no output schema, and no annotations, the description adequately covers the tool's usage, prerequisites, and effect. Minor gap: does not mention return value or error states, but this is acceptable for a step in a protocol.
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 description adds value beyond the schema's minimal description by explaining the parameter's role ('from kaleidoswap_atomic_init') and the necessity of its use.
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 identifies the tool as 'Step 2 of atomic swap' with a specific verb ('whitelist') and resource ('incoming HTLC on RLN node'), and explains its effect. It distinguishes itself from sibling tools by referencing the atomic swap sequence.
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?
Explicitly states ordering requirements: 'Must be called with the swapstring from kaleidoswap_atomic_init BEFORE calling kaleidoswap_atomic_execute'. This provides clear when-to-use and 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.
wdk_connect_peerA
Connect the RLN node to a Lightning peer. Required before requesting an LSPS1 channel from the KaleidoSwap LSP — call this first if the LSP is not already a connected peer. Format: "@:".
| Name | Required | Description | Default |
|---|---|---|---|
| peer_pubkey_and_addr | Yes | Peer connection string in format pubkey@host:port |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions the connection format and prerequisite but lacks details on idempotency, error handling, or side effects on already connected peers.
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?
Two concise sentences with no waste. The first sentence states the main purpose, the second adds crucial usage guidance and format. Perfectly 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 simple tool (1 param, no output schema), the description covers the essential: what it does, when to use, and the format. Could add more on failure scenarios or connection status, but adequate for the tool's simplicity.
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. The description adds the exact format ('<pubkey>@<host>:<port>') which enhances the schema's generic description, providing clear syntax.
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 (connect) and resource (RLN node to a Lightning peer). It distinguishes from sibling tools like wdk_list_channels or wdk_open_channel by focusing on connection, not channel management.
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?
Explicitly states that this tool is a prerequisite for requesting an LSPS1 channel from KaleidoSwap LSP and advises calling it only if the LSP is not already connected. This provides clear when-to-use and 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.
wdk_create_ln_invoiceB
Create a BOLT11 Lightning invoice to receive BTC via Lightning Network.
| Name | Required | Description | Default |
|---|---|---|---|
| expiry_sec | No | Invoice expiry in seconds (default: 3600) | |
| amount_msat | No | Amount in millisatoshis. Omit for a zero-amount invoice. | |
| description | No | Invoice description / memo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states creation of an invoice but does not mention side effects (e.g., state change on the node), authorization requirements, or what happens after creation. This is insufficient for a mutation tool.
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 redundant information. Every word earns its place.
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 description lacks detail on the return value (expected to be the invoice string), prerequisites (e.g., funded node), and operational context. Given no output schema or annotations, the description fails to provide adequate contextual completeness for a tool with 3 parameters.
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 descriptions for all three parameters (expiry_sec, amount_msat, description). The tool description adds no additional semantic value 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a BOLT11 Lightning invoice to receive BTC via Lightning Network,' with a specific verb and resource, distinguishing it from siblings like wdk_create_rgb_invoice and wdk_pay_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?
Usage is implied by the description (creating an invoice for receiving BTC), but no explicit guidance on when to use vs alternatives or when not to use is provided. Siblings like wdk_create_rgb_invoice and wdk_pay_invoice suggest distinct use cases, but no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_create_rgb_invoiceA
Create an RGB invoice to receive an RGB asset (e.g. USDT from a KaleidoSwap). Pass the returned invoice string as receiver_address when calling kaleidoswap_place_order with receiver_address_format="RGB_INVOICE".
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Expected amount to receive in display units (e.g. 65.5 for 65.5 USDT). Omit for any amount. | |
| asset_id | No | RGB asset ID to receive. Omit to create a generic invoice for any asset. | |
| duration_seconds | No | Invoice expiry in seconds (default: 86400 = 24h) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it creates an invoice and returns a string; no disclosure of side effects, mutability, or authorization needs. Minimal behavioral 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?
Two efficient sentences: first states purpose, second provides usage. No wasted words; front-loaded key information.
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 3 optional parameters, no output schema, and no annotations, the description adequately explains purpose and a usage scenario. However, it lacks explicit mention of return value format and any constraints, leaving gaps.
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 covers 100% of parameters with descriptions. The tool description adds no extra meaning beyond what is in the schema, meeting baseline expectations.
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 it creates an RGB invoice to receive an RGB asset, with an example (USDT from KaleidoSwap). Does not explicitly contrast with sibling wdk_create_ln_invoice, but the RGB-specific wording distinguishes it.
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?
Provides explicit usage context: passing the returned invoice string as receiver_address in kaleidoswap_place_order. No when-not-to or alternatives mentioned, but the workflow is clearly described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_get_addressA
Get the node on-chain BTC address for receiving Bitcoin deposits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does not disclose whether the address is generated fresh each call, whether it's cached, or any side effects. For a simple read operation, this is a significant 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 a single, concise sentence that communicates the purpose directly with no unnecessary words. It is front-loaded and 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?
While the tool is simple with no parameters and no output schema, the description lacks behavioral details such as idempotency or address reuse. For an AI agent, this may be sufficient for a basic getter, but more context would improve reliability.
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 tool has zero parameters, so the description adds no parameter information, which is acceptable per the baseline rule (0 params = baseline 4). The empty schema is fully covered.
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 gets the node's on-chain BTC address for receiving Bitcoin deposits. It specifies the resource (node on-chain BTC address) and action (get), and differentiates from sibling tools that handle payments, swaps, 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 this tool versus alternatives. While it's a simple getter with no obvious sibling conflict, the description does not mention any prerequisites, context, 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.
wdk_get_asset_balanceA
Get the balance of a specific RGB asset (e.g. USDT, XAUT) by its asset_id. Returns settled, future, spendable, and off-chain amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | RGB asset ID, e.g. 'rgb:2JEUOrsc-JsWuPGF-3cr9SSv-mqqRmaz-8waf0gl-8vAcOXw' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It explicitly states the tool returns settled, future, spendable, and off-chain amounts, which provides insight into the response structure. It does not mention authorization or side effects, but for a balance query, this is adequate.
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 two sentences with no redundant information. It is well-structured, front-loading the purpose and then stating the return types. Every sentence earns its place.
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, the description explains the return data (settled, future, spendable, off-chain amounts), which covers the expected information for a balance tool. It does not mention error cases or edge conditions, but for a simple retrieval it is reasonably 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 a description for the sole parameter 'asset_id'. The description adds minimal value by restating 'RGB asset ID' and providing an example, which is helpful but does not go beyond what the schema already conveys. Baseline 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 uses a specific verb ('Get') and resource ('balance of a specific RGB asset') with an example of asset IDs. It clearly indicates what the tool does and distinguishes it from siblings like wdk_get_balances (which likely returns all balances) and wdk_send_asset (which sends assets).
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 the tool is for querying balance of a single asset by ID, but it does not explicitly state when to use it over alternatives (e.g., wdk_get_balances) or provide conditions for use. No when-not-to-use or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_get_balancesA
Get current wallet balances: BTC on-chain (vanilla and colored UTXOs). For RGB asset balances use wdk_get_asset_balance with a specific asset_id.
| Name | Required | Description | Default |
|---|---|---|---|
| skip_sync | No | Skip blockchain sync for a faster response (default: false) |
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 states the tool gets balances but does not disclose whether it triggers blockchain sync (though the skip_sync parameter suggests default sync) or any side effects, idempotency, or prerequisites.
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?
Two sentences: first states purpose, second directs to alternative. Zero wasted words, front-loaded with key information.
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 optional parameter, the description is fairly complete. It specifies what balances are retrieved (BTC on-chain). Missing output format details, but no output schema exists, so slight gap.
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%, so baseline is 3. The description does not mention the skip_sync parameter or add semantics beyond the schema's description.
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 retrieves current wallet balances, specifies BTC on-chain (vanilla and colored UTXOs), and distinguishes from sibling wdk_get_asset_balance by explicitly routing RGB asset queries to that tool.
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?
Explicitly tells when to use this tool (get BTC balances) and directs to a specific alternative (wdk_get_asset_balance) for RGB assets, leaving no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_get_node_infoA
Get the RLN node identity and network summary: pubkey, number of channels, Lightning balance, connected peers. Call this first to confirm the node is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It accurately describes a read-only operation but does not disclose potential behaviors like failure modes on unreachable node, caching, or rate limits. Adequate for a simple info retrieval.
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?
Two-sentence description with no wasted words. First sentence lists what it returns, second sentence gives usage guidance. Perfectly concise and 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 zero parameters and no output schema, the description is fairly complete: it explains the tool's purpose, output contents, and usage context. It could be enhanced by describing return format or structure, but for its simplicity it suffices.
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 schema coverage is 100%. The description adds value by listing the output fields, which compensates for the empty schema. It provides meaning beyond the structured data.
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 gets RLN node identity and network summary, listing specific fields (pubkey, channels, lightning balance, peers). It distinguishes itself from sibling tools by explicitly positioning it as a first-step diagnostic tool.
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?
Explicitly instructs 'Call this first to confirm the node is reachable', giving clear when-to-use guidance. Lacks explicit when-not-to-use or alternatives, but context of siblings and the 'first' directive provides sufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_get_swapA
Get atomic swap status by payment_hash from the RLN node. Use after kaleidoswap_atomic_execute to confirm the node-side swap state. Optionally filter by taker=true to check taker-side swaps.
| Name | Required | Description | Default |
|---|---|---|---|
| taker | No | Filter for taker-side swap (default: both) | |
| payment_hash | Yes | Payment hash from kaleidoswap_atomic_init |
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 clearly indicates a read operation (get status) with no side effects implied. The optional filter is disclosed. No mention of permissions or rate limits, but sufficient for a query tool.
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?
Two sentences efficiently convey purpose, usage context, and optional parameter. No wasted words, info is 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 no output schema, the description provides adequate context to use the tool. It could be improved by hinting at the return format (e.g., swap status fields), but for a status check it's sufficient.
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%, so both parameters are documented. The description adds context: 'payment_hash from kaleidoswap_atomic_init' and clarifies the taker parameter's default behavior ('both').
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 specifies the verb 'Get' and the resource 'atomic swap status' with a clear identifier 'payment_hash'. It mentions usage context after kaleidoswap_atomic_execute, but does not explicitly differentiate from sibling tool wdk_list_swaps.
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 explicit when to use: 'Use after kaleidoswap_atomic_execute to confirm the node-side swap state.' It also gives optional usage for taker-side filtering, but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_list_assetsA
List all RGB assets held by the node (NIA, UDA, CFA schemas). Returns asset IDs, names, tickers, and precision.
| Name | Required | Description | Default |
|---|---|---|---|
| schemas | No | Filter by asset schema. Omit to return all. Options: 'Nia', 'Uda', 'Cfa' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool returns asset IDs, names, tickers, and precision but does not disclose any behavioral traits such as read-only nature, potential latency, or side effects. This is insufficient for a tool with no annotations.
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?
Description is a single sentence that efficiently conveys purpose and output. No unnecessary words or repetition.
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 list tool with one optional parameter and no output schema, the description adequately explains what it returns. However, it lacks mention of pagination limits or error conditions, but given simplicity, it is reasonably 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 a clear description in the input schema. The tool description adds no additional meaning beyond what is already present in the schema, so 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?
Description clearly states the verb 'List', the resource 'RGB assets held by the node', and specifies schemas (NIA, UDA, CFA). It distinguishes from sibling tools like wdk_get_asset_balance which focuses on balances for a single asset.
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?
Usage is implied: use when you need a list of all RGB assets. However, no explicit guidance on when not to use it or comparative advice versus alternative tools like wdk_get_asset_balance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_list_channelsA
List all Lightning channels: capacity, local balance, usability status, and any RGB asset allocated to the channel.
| Name | Required | Description | Default |
|---|---|---|---|
| usable_only | No | Return only channels that are ready and usable (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It indicates a read operation (listing) without side effects, but it does not explicitly confirm idempotency or safety. The description is minimally 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 a single sentence that efficiently conveys the tool's purpose and output. It is well front-loaded and contains no extraneous information.
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 list tool with one parameter and no output schema, the description adequately covers the main outputs (capacity, balance, status, assets). It does not detail return format or pagination, but these are acceptable omissions for this complexity level.
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% for the single parameter 'usable_only'. The description does not add meaning beyond the schema, which already describes the parameter. Baseline 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 tool lists Lightning channels along with specific attributes (capacity, local balance, usability status, RGB asset). This distinguishes it from sibling list tools like wdk_list_assets or wdk_list_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 implies the tool is for retrieving channel information but does not provide explicit guidance on when to use it versus alternatives, nor does it mention when it might be inappropriate to call. Basic but adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_list_paymentsA
List recent Lightning payments (sent and received). Useful for confirming that a swap deposit was sent successfully.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of payments to return (default: 20) | |
| inbound_only | No | Show only received payments | |
| outbound_only | No | Show only sent payments |
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. It states 'recent' but does not define recency or mention pagination, ordering, or whether old payments are omitted. The behavior is implied but not fully transparent. There is no contradiction with annotations.
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?
Two sentences, no wasted words. First sentence states purpose, second provides a practical use case. Perfectly concise and well-structured for its length.
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 low complexity and full schema coverage, the description is mostly complete. It could mention output format or that payments are returned in reverse chronological order, but the stated use case compensates. The absence of an output schema is acceptable for a simple list.
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%, so each parameter has a description. The tool description does not add any parameter semantics beyond what the schema already provides. 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?
Clearly states it lists recent Lightning payments (sent and received). The use case 'confirming swap deposit' adds context. While it distinguishes the resource, it doesn't explicitly differentiate from other list tools like wdk_list_channels or wdk_list_swaps, but the resource name is specific enough.
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?
Provides a specific use case for confirming swap deposits, which gives guidance on when to use. However, no when-not-to-use or alternatives are mentioned. Among siblings, wdk_get_swap might be relevant for swap confirmation, but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_list_swapsA
List all atomic swaps on the RLN node, split by maker and taker side. Useful for monitoring active and historical atomic swap activity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits on its own. It states the tool lists splits by side but omits details like pagination, permissions, or read-only nature. The description is adequate but minimal.
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 two sentences, front-loading the core functionality and use case. No unnecessary words; every sentence adds value.
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 listing tool with no parameters and no output schema, the description explains what it does and its purpose. It implies the output structure (split by side). However, it could be slightly more explicit about the return format (e.g., 'returns a list of swaps with maker/taker fields').
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 (0 params, 100% coverage). With no parameters, the description does not need to add meaning beyond the schema. It does not mention parameters, which is acceptable given none exist.
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 that the tool lists all atomic swaps on the RLN node, specifying the resource (atomic swaps), the action (list), and a distinguishing detail (split by maker and taker side). It differentiates from siblings like wdk_get_swap (single swap) and wdk_atomic_taker (different operation).
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?
It mentions 'useful for monitoring active and historical atomic swap activity,' which indicates when to use it. However, it does not provide explicit when-not-to-use guidance or alternatives, limiting its directive clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_mpp_payA
Pay an MPP (Machine Payments Protocol) Lightning challenge using the RLN wallet. Pass the invoice from mpp_request_challenge. Returns a credential JSON string to pass directly to mpp_submit_credential. Also returns the payment_hash for auditing. Supports optional macaroon and challenge_id fields from the challenge for L402-compatible credential construction.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | BOLT11 Lightning invoice from the MPP challenge (from mpp_request_challenge) | |
| macaroon | No | Macaroon from mpp_request_challenge (required for L402-compatible servers) | |
| challenge_id | No | MPP challenge_id from mpp_request_challenge (included in credential for server verification) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes return values (credential JSON, payment_hash) and optional fields for L402. Lacks details on side effects (funds movement), idempotency, or error conditions.
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?
Two sentences, front-loaded with main action, no unnecessary words. Efficiently conveys purpose, usage, and returns.
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?
Covers core workflow and return values. Lacks information on failure modes, error handling, or prerequisites (e.g., wallet state). Acceptable for a payment tool but not fully comprehensive.
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%, so baseline is 3. Description adds value by explaining each parameter's origin and role (invoice from mpp_request_challenge, macaroon/challenge_id for L402), beyond schema descriptions.
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 'Pay an MPP Lightning challenge' with specific verb and resource. Distinguishes from siblings by mentioning the credential workflow (from mpp_request_challenge to mpp_submit_credential), setting it apart from tools like wdk_pay_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?
Provides clear context: pass invoice from mpp_request_challenge, returns credential for mpp_submit_credential. Doesn't explicitly say when not to use, but the workflow is well explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_open_channelB
Open a new Lightning channel to a peer. Optionally allocate an RGB asset to the channel for off-chain asset transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | No | RGB asset ID to allocate in this channel | |
| is_public | No | Whether to announce the channel publicly (default: false) | |
| push_msat | No | Millisatoshis to push to the remote side on open (default: 0) | |
| asset_amount | No | Amount of RGB asset to allocate | |
| capacity_sat | Yes | Channel capacity in satoshis | |
| peer_pubkey_and_addr | Yes | Peer connection string: '<pubkey>@<host>:<port>' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose side effects, prerequisites (e.g., a funded wallet, peer connection), or what happens during the channel open process (e.g., confirmation time, fees).
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?
Two sentences of appropriate length, front-loaded with the main action. Every word earns its place with no redundancy.
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?
Despite 6 parameters and no output schema or annotations, the description is too brief. It omits prerequisites, expected outcomes, and potential errors, leaving the agent underinformed.
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%, and the description adds context by mentioning optional RGB asset allocation, but it does not add meaningful detail beyond what the schema already provides for each parameter.
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 'Open a new Lightning channel to a peer' and the optional RGB asset allocation, distinguishing it from sibling tools like wdk_list_channels which only list channels.
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 when to connect to a peer first or how to decide on RGB asset allocation. The description only implies usage through its purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_pay_invoiceA
Pay a BOLT11 Lightning invoice. Use this to send payment to a KaleidoSwap deposit_address after placing a swap order.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | BOLT11 Lightning invoice string (starts with lnbc... or lntb...) |
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 'pay' (mutating funds) but lacks details on authorization requirements, reversibility, idempotency, or potential side effects. This is a significant gap for a payment tool.
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 (two sentences) and front-loaded with the action. Every sentence adds value without redundancies.
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 description explains the tool's purpose and a specific use case, but it does not describe the return output or error conditions. For a payment tool, an agent would benefit from knowing what the response contains (e.g., payment hash, status). Given the simple input, it is moderately 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 for the only parameter 'invoice', including a description. The tool description does not add new semantic details about the parameter beyond the schema, so 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 what the tool does (pay a BOLT11 Lightning invoice) and specifies a distinct use case (sending payment to a KaleidoSwap deposit address after placing a swap order). This differentiates it from sibling tools like wdk_create_ln_invoice or wdk_list_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 explicit context for when to use this tool: 'after placing a swap order' and to 'a KaleidoSwap deposit_address'. It does not mention alternative tools like wdk_mpp_pay, but the guidance is clear enough for the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_refresh_transfersA
Refresh pending RGB asset transfers. Call this after a swap is reported FILLED to update on-chain asset balances.
| Name | Required | Description | Default |
|---|---|---|---|
| skip_sync | No | Skip blockchain sync (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool refreshes pending transfers and updates balances, implying state modification. However, it does not disclose side effects, permissions, or failure modes, leaving some behavioral gaps.
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?
Two sentences, no wasted words. The verb and resource are front-loaded, making it easy to parse.
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 (1 param, no output schema, no annotations), the description is fairly complete. It explains purpose and usage trigger. Minor gaps: no mention of return value or error conditions.
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 already describes the single parameter `skip_sync` with complete coverage (100%). The description adds no extra meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Refresh' and the resource 'pending RGB asset transfers', and specifies the context 'after a swap is reported FILLED'. This distinctively positions it among siblings like wdk_send_asset or wdk_get_asset_balance.
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 explicitly says 'Call this after a swap is reported FILLED to update on-chain asset balances', which provides a clear trigger for usage. It does not mention when not to use or alternatives, but the instruction is specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_send_assetA
Send an RGB asset (e.g. USDT) on-chain to a recipient identified by their RGB recipient_id. Use this to fund a KaleidoSwap order whose deposit_address.format is "RGB_INVOICE" — pass the deposit_address.address as recipient_id.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to send in display units (e.g. 65.5 for 65.5 USDT). Will be converted to raw units using asset precision. | |
| asset_id | Yes | RGB asset ID to send, e.g. 'rgb:2JEUOrsc-JsWuPGF-3cr9SSv-mqqRmaz-8waf0gl-8vAcOXw' | |
| fee_rate | No | On-chain fee rate in sat/vbyte (default: node decides) | |
| recipient_id | Yes | Recipient identifier from an RGB invoice (deposit_address.address for RGB_INVOICE format) | |
| transport_endpoints | No | Optional transport endpoints for the RGB transfer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions on-chain sending, RGB invoice usage, and unit conversion, but does not disclose potential side effects, prerequisites (e.g., peer connection), or failure modes. The fee_rate parameter is optional but its behavior is not explained.
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 two sentences, both essential and front-loaded with the primary purpose. No extraneous words; each sentence adds value.
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 description explains the tool's purpose and key parameter details, but does not mention the return value. Since there is no output schema, the agent may need to know what the tool returns (e.g., transaction ID, success status). With 5 parameters and a complex domain, this gap reduces completeness.
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 parameters have schema descriptions (100% coverage). The description adds meaningful context: recipient_id is linked to deposit_address.address for RGB_INVOICE, amount is in display units, and fee_rate is optional. This goes beyond the schema, improving usability.
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 ('send'), the resource ('RGB asset'), and the recipient type ('RGB recipient_id'). It also provides a specific use case (funding a KaleidoSwap order with RGB_INVOICE format), which distinguishes it from sibling tools like wdk_send_btc.
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 explicitly states when to use this tool ('Use this to fund a KaleidoSwap order...') and identifies the correct parameter value ('pass the deposit_address.address as recipient_id'). It implicitly contrasts with other send tools, but could be improved by adding when not to use it or mentioning alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wdk_send_btcB
Send BTC on-chain to a Bitcoin address.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Destination Bitcoin address | |
| fee_rate | No | Fee rate in sat/vbyte (default: 3) | |
| amount_sat | Yes | Amount in satoshis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the action without detailing side effects (e.g., creation of a transaction, need for UTXOs), error conditions, or return values. This is insufficient for a sending operation.
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 core action. However, it may be too sparse given the lack of behavioral context and annotations.
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?
Despite the high schema coverage, the description omits critical context such as prerequisites (e.g., existing UTXOs, network connection), expected outcomes, and error handling. The absence of an output schema and annotations further reduces completeness.
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 three parameters. The tool description adds no additional meaning beyond the schema, resulting in a baseline score 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-resource combination ('Send BTC on-chain') and specifies the target ('to a Bitcoin address'). The qualifier 'on-chain' distinguishes this tool from lightning payment siblings like wdk_pay_invoice and wdk_mpp_pay.
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 explicitly state when to use this tool versus alternatives, but the phrase 'on-chain' implies it is for Bitcoin mainnet transactions rather than Lightning. No exclusions or prerequisites are mentioned.
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.
19 tool updates
v1.1.0- First observed
wdk_atomic_taker - First observed
wdk_connect_peer - First observed
wdk_create_ln_invoice - First observed
wdk_create_rgb_invoice - First observed
wdk_get_address - First observed
wdk_get_asset_balance - First observed
wdk_get_balances - First observed
wdk_get_node_info - First observed
wdk_get_swap - First observed
wdk_list_assets - First observed
wdk_list_channels - First observed
wdk_list_payments - First observed
wdk_list_swaps - First observed
wdk_mpp_pay - First observed
wdk_open_channel - First observed
wdk_pay_invoice - First observed
wdk_refresh_transfers - First observed
wdk_send_asset - First observed
wdk_send_btc
TDQS
Scored across 19 tools
Each tool targets a specific operation with clear boundaries: atomic swap steps, connection management, invoice creation, balance queries (separate for BTC and RGB), node info, payment handling, channel operations, asset transfers. No overlapping purposes.
All tools start with 'wdk_' and mostly follow verb_noun pattern (e.g., wdk_create_ln_invoice, wdk_send_asset). Minor deviations like 'wdk_atomic_taker' (noun) and 'wdk_mpp_pay' (noun_verb) but overall consistent snake_case.
19 tools cover a broad scope (wallet, lightning, RGB assets, atomic swaps). Slightly above typical range but each tool serves a distinct purpose; no obvious bloat.
Core workflows are covered: connect, node info, balances, invoices, payments, channels, RGB assets, atomic swaps, on-chain sends. Minor gaps like channel closure or wallet backup, but nothing critical.
Maintenance
Related MCP Connectors
Bitcoin wallet intelligence for AI agents: trust, labels, tx verify, fees, and timestamps.
Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.
Provide AI agents and automation tools with contextual access to blockchain data including balance…
Non-custodial crypto payments for AI assistants: balances, payments, and create payment links.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with RGB assets, Lightning Network operations, and Bitcoin transactions through RGB Lightning Node APIs. Supports asset management, invoice creation/payment, channel management, on-chain transactions, and asset swaps.1814 npm1MIT
- 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.18 npmApache 2.0
- 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.139 npmMIT
- AlicenseBqualityCmaintenanceEnables LLMs to manage a phoenixd Bitcoin Lightning wallet, including creating and paying invoices, managing channels, and querying balances and node info.1713 npm1MIT