Skip to main content
Glama
AbdelStark
by AbdelStark

₿itcoin & Lightning Network MCP サーバー

概要

AI モデルが Bitcoin および Lightning Network と対話して、キーの生成、アドレスの検証、トランザクションのデコード、ブロックチェーンのクエリなどを実行できるようにする Model Context Protocol (MCP) サーバー。

Related MCP server: Bankless Onchain MCP Server

🎮 デモ

クロードのデモビデオ

Gooseデモビデオ

💼 目次

🔧 機能

  • キー生成: アドレス、公開キー、秘密キー (WIF) を含む新しい Bitcoin キー ペアを作成します。

  • アドレス検証: Bitcoin アドレスの正確性を検証します。

  • トランザクションのデコード: 生の Bitcoin トランザクションを解析し、その詳細を人間が読める形式で表示します。

  • ブロックチェーンクエリ:

    • 最新のブロック: 最新のブロックの詳細 (ハッシュ、高さ、タイムスタンプ、トランザクション数など) を取得します。

    • トランザクションの詳細: TXID を使用してトランザクションの詳細情報を取得します。

  • ライトニングネットワーク:

    • 請求書のデコード: BOLT11 Lightning 請求書を解析し、人間が読める形式で情報を表示します。

    • 支払い: LNBits ウォレットから Lightning 請求書を直接支払います。

🔑 クロード デスクトップ統合

Claude Desktop (Claude 用の Anthropic のデスクトップ アプリ) で Bitcoin MCP サーバーを使用するには、次の手順に従います。

  1. Claude Desktopのダウンロードとインストール: Claude Desktopの公式ダウンロードページにアクセスし、お使いのオペレーティングシステム(macOSまたはWindows)用のアプリを入手してください( Claude for Desktopのインストール | Anthropicヘルプセンター)。アプリをインストールし、最新バージョンを使用していることを確認してください(アプリメニューでアップデートを確認できます)。

  2. Claude Desktop を Bitcoin MCP サーバーを使用するように構成します。Claude Desktop 構成ファイルを開きます (Claude Desktop で最初に設定を編集したときに作成されます)。

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
      このJSON設定の"mcpServers"セクションに、Bitcoin MCPサーバーのエントリを追加します。例:

    {
      "mcpServers": {
        "bitcoin-mcp": {
          "command": "npx",
          "args": ["-y", "bitcoin-mcp@latest"]
        }
      }
    }

    上記のスニペットでは、 "bitcoin-mcp"はサーバーの識別子です(任意の名前を付けることができます)。 commandはnpxコマンドを実行するように設定されており、 args Bitcoin MCPサーバースクリプトのパス、またはサーバーを実行するコマンドを指します。

  3. Claude Desktopを再起動します。claude_desktop_config.jsonファイルを保存し、 Claude Desktopを閉じて再度開きます。次回起動時に、Claudeは設定通りにBitcoin MCPサーバーclaude_desktop_config.json自動的に起動します。Claude Desktopが起動していた場合は、変更を有効にするために再起動する必要があります。

Claudeデスクトップ統合のテスト

Claude Desktop を再起動すると、Bitcoin MCP サーバーが正しく動作しているかどうかをテストできます。

  • **クロードにビットコインに関するサンプル質問をしてみましょう。**例えば、 *「ビットコインネットワークの最新のブロックは何ですか?」*と尋ねてみましょう。統合が成功すれば、クロードの回答には「わかりません」や一般的な回答ではなく、MCPサーバー経由で取得した最新のブロックが含まれるはずです。また、 *「TXIDがabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890のトランザクションに関する情報をください」といったクエリも試すことができます。*クロードはMCPサーバーのツールを使用してデータを取得し、クエリに回答するはずです。

  • レスポンスを確認してください。Claudeはエラーのない詳細な回答(例:Bitcoinネットワークの最新ブロック)を返すはずです。エラーメッセージが表示された、または有効なレスポンスがない場合は、MCPサーバーに正しく接続されていない可能性があります。

  • Claude のログを確認する(必要な場合): Claude Desktop は、MCP 統合のデバッグに役立つログファイルを提供します。ツールが応答しない場合は、以下のログファイルを確認してください。

    • macOS: ~/Library/Logs/Claude/

    • Windows: %APPDATA%\Claude\logs\
      一般的なMCP接続メッセージはmcp.logファイルに、MCPサーバーの出力/エラーはmcp-server-bitcoin-mcp.log (または任意の名前)ファイルに記録されます。これらのログには、サーバーが起動したかどうか、またはエラー(パスの誤りやサーバー内の例外など)が発生したかどうかが表示されます。エラーが発生した場合は、必要に応じて設定または環境を修正し、Claude Desktopを再起動して再度テストしてください。

🦆 Goose 統合

Gooseは、Block社によるオープンソースのAIエージェントフレームワークで、モデルコンテキストプロトコル(Model Context Protocol)を介した拡張機能をサポートしています。Bitcoin MCPサーバーをGoose拡張機能として統合することで、GooseがBitcoinブロックチェーンと連携できるようになります。Gooseは、MCPサーバーの統合方法として、サーバーをローカルプロセス(STDIO)として実行するか、Server-Sent Events(SSE)を介してリモートサービスとして接続するかの2つの方法をサポートしています。それぞれの方法については、以下をご覧ください。

STDIO (ローカル拡張) の使用

このメソッドは、標準入出力を介して通信しながら、Bitcoin MCP サーバーを Goose のサブプロセスとしてローカルで実行します。

  1. Gooseで新しい拡張機能を追加するには、 Gooseの設定インターフェースを開きます。コマンドラインからgoose configureを実行するか、Gooseデスクトップアプリから設定 > 拡張機能にアクセスして**拡張機能を追加できます。メニューから「拡張機能を追加」**を選択します。( 拡張機能の使用 | goose )

  2. **拡張機能の種類を選択します - コマンドライン拡張機能:**拡張機能の種類を尋ねられたら、コマンドライン拡張機能(CLI メニューまたは UI) を選択して、Goose がローカル コマンド ( 拡張機能の使用 | goose ) (組み込み拡張機能またはリモート拡張機能ではなく) を起動する必要があることを認識できるようにします。

  3. 拡張機能の詳細を入力します。Bitcoin MCP サーバーの名前とコマンドを入力します。

    • 名前: 「bitcoin」または任意の識別子で呼ぶことができます (これが拡張機能の参照方法になります)。

    • コマンド: MCPサーバーの実行方法を指定します。例えば、Pythonスクリプトがある場合は、それを実行するコマンドを入力します。CLIコンフィギュレータでは「どのコマンドを実行しますか?」と尋ねられることがあります。その場合は次のように入力します。

      npx -y bitcoin-mcp@latest

      これは、Goose に Bitcoin MCP サーバー ( GitHub - AbdelStark/bitcoin-mcp: Bitcoin MCP Server ) を起動するように指示します。(Claude の設定と同様に、サーバースクリプトへの正しいパス、またはサーバーを実行するための正しいコマンドを使用してください。)

    • 通常、スクリプトパス以外に引数を追加する必要はありません(サーバー側で特別なフラグが必要な場合を除く)。上記のコマンドは、Gooseがコマンドライン拡張機能として想定しているデフォルトのSTDIOトランスポートを使用しています。(Goose設定ファイルでは、これはcmd: "npx" 、 args: ["-y", "bitcoin-mcp@latest"] 、 type: stdio (標準I/Oモードを示す)のエントリに相当します( 拡張機能の使用 | goose )。)

  4. 最終処理と有効化:拡張機能の追加を完了します。Goose はこの新しい拡張機能を自身の設定(通常は~/.config/goose/config.yaml )に追加します。拡張機能が有効になっていることを確認してください(CLI ウィザードを使用している場合は、追加後すぐにデフォルトで有効になります。Goose デスクトップアプリでは、拡張機能リストを確認し、まだ有効になっていない場合は有効にすることができます ( 拡張機能の使用 | goose ) ( 拡張機能の使用 | goose ))。

  5. **新しい拡張機能を使ってGooseセッションを開始します。**これで、Gooseで拡張機能を使用できるようになりました。CLI経由でGooseを実行している場合は、次のコマンドを実行して、拡張機能を含むセッションを開始します。

    goose session --with-extension "bitcoin"

「bitcoin」を拡張機能に付けた名前( 拡張機能の使用 | goose )に置き換えます。(これにより、セッションで拡張機能が確実に読み込まれます。また、拡張機能がグローバルに有効になっている場合は、Goose Desktop または CLI によってすべてのセッションで自動的に拡張機能が利用できるようになります。)

SSE (リモート拡張) の使用

このメソッドは、HTTP SSEストリームを介してGooseを既に実行中のMCPサーバーに接続します。Bitcoin MCPサーバーをスタンドアロンサービスとして(別のマシン上、あるいはGooseとは独立して)実行したい場合に使用します。

  1. MCPサーバーをスタンドアロンサービスとして起動します。Bitcoin MCPサーバーを接続待ち状態になるように起動します。実際には、サーバーをMCPのHTTPエンドポイントを提供するモードで起動する必要があります。例えば、特定のポートを待ち受けるためのコマンドやオプションを指定してサーバーを実行する場合(MCPライブラリに組み込まれたWebサーバー機能を使用する、またはWebフレームワークで実行するなど)、サーバーが既知のURL(例: http://localhost:9000 )でアクセス可能であり、SSE経由のMCPプロトコルをサポートしていることを確認してください。

  2. Goose(リモート)で新しい拡張機能を追加します。これまでと同様に、 goose configure実行するか、Goose UI を使用して拡張機能を追加します(拡張機能の使用 | goose )。今回は、拡張機能の種類を尋ねられたら**「リモート拡張機能」**を選択します( 拡張機能の使用 | goose )。これにより、Goose は SSE 経由で外部サーバーに接続します。

  3. リモート拡張機能の詳細を入力します。拡張機能に名前(例:"bitcoin")を付け、サーバーのURLを指定します。URLには、MCPサーバーが稼働しているベースアドレスを入力します。例えば、サーバーがローカルマシンのポート9000でリッスンしている場合は、 http://localhost:9000と入力します。Gooseは、そのアドレスにあるMCPサーバーのSSEエンドポイントへの接続を試みます。(Gooseは標準のMCP SSEパスを使用します。これは慣例的にサーバーの/mcp/sseルート配下にあります。通常はホストとポート番号を指定するだけで、残りはGooseが処理します。)

  4. **拡張機能の有効化:**リモート拡張機能を追加したら、Gooseの設定で有効化されていることを確認してください(STDIOの場合と同様)。STDIOまたはSSE拡張機能(同じツールを使用)のいずれか一方のみを有効化すれば十分です。誤って同じサーバーのローカルバージョンとリモートバージョンの両方を有効化してしまった場合は、混乱を避けるためにどちらか一方を無効化することをお勧めします。

**Goose の Bitcoin MCP 拡張機能の使用:**拡張機能を(上記のいずれかの方法で)セットアップして有効化すると、Goose とやり取りし、Bitcoin データを照会できるようになります。Goose の新しいチャットまたはセッションで、通常どおりに質問してください。Goose は、リクエストに応じて Bitcoin MCP ツールを使用するタイミングを認識します。例:

  • 「最新のビットコインブロックは何ですか?」

  • 「TXID abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890のトランザクションに関する情報を教えてください。」

これらの質問をすると、GooseはMCPサーバーのツールを呼び出して回答(例:最新のビットコインブロック情報)を返します。GooseがMCPサーバー経由でビットコインブロックチェーンから取得した最新情報を返すのが確認できるはずです。

Goose が拡張機能を使用していないように見える場合(例えば、情報が見つからないという応答が返される場合)、拡張機能が有効になっていること、およびサーバーが稼働していることを確認してください(リモートの場合は SSE モードで実行)。また、Goose の CLI を詳細ログ付きで実行し、拡張機能の呼び出しが試行されたかどうかを確認することもできます。通常、正しく設定されていれば、Goose は MCP サーバーの機能を自動的に検出し、必要に応じて使用します。

その他のリソース: Goose拡張機能とMCPの詳細については、Gooseの公式ドキュメント( 拡張機能の使用 | goose )を参照してください。このドキュメントには、組み込み拡張機能とコミュニティ拡張機能のリストが含まれており、MCPサーバーをGooseに統合する方法が説明されています。また、Gooseドキュメントとモデルコンテキストプロトコルのドキュメントには、利用可能なMCPサーバーのディレクトリと追加の設定ヒントが記載されています。これらのドキュメントは、他の拡張機能を調べたり、独自の拡張機能を開発したりする場合に役立ちます。

📦 開発セットアップ

セットアップ手順については、開発セットアップガイドをご覧ください。

Lightning ネットワーク構成(オプション)

Lightning Network機能を使用するには、LNBits接続の詳細を設定する必要があります。これはオプションであり、Lightning Networkツールを使用する場合にのみ必要です。

{
  "lnbitsUrl": "https://demo.lnbits.com",  
  "lnbitsAdminKey": "your_admin_key",      // Required for making payments
  "lnbitsReadKey": "your_read_key"         // Required for wallet information
}

これらの値は次のように取得できます。

  1. LNBitsでアカウントを作成する

  2. 新しいウォレットを作成する

  3. API情報にアクセスしてAPIキーを見つけます

📦 利用可能なツール

利用可能なツールについては、 API リファレンスガイドをご覧ください。

🚨 エラー処理

サーバーは、ビットコイン操作とブロックチェーンクエリを処理するためにカスタムエラータイプを採用しています。詳細なエラーメッセージはPinoを使用して記録され、クライアントのレスポンスに含まれるため、デバッグが容易になります。

🤝 貢献する

貢献や機能リクエストは大歓迎です! お気軽に GitHub でプルリクエストを送信したり、問題を報告してください。

📝 ライセンス

このプロジェクトはMIT ライセンスに基づいてライセンスされています。

Available Tools

7 tools
decode_invoiceC

Decode a Lightning invoice

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesBOLT11 Lightning invoice

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'decode' but doesn't explain what decoding entails (e.g., extracting payment details, checking validity, or returning structured data). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and output.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. No unnecessary words or redundant information are included.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., decoded fields like amount, timestamp, or destination) or potential errors (e.g., invalid invoice format). For a decoding tool with no structured output documentation, this leaves the agent guessing about results.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'invoice' documented as a 'BOLT11 Lightning invoice'. The description doesn't add any meaning beyond this, such as format examples or validation rules. Since the schema already provides adequate coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'decode' and the resource 'Lightning invoice', making the purpose immediately understandable. It doesn't differentiate from siblings like 'decode_tx' or 'pay_invoice', but the core action is specific enough to understand what the tool does.

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

Usage Guidelines2/5

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 'decode_tx' or 'validate_address'. It doesn't mention prerequisites, such as needing a valid BOLT11 invoice, or clarify that this is for decoding rather than processing payments (which 'pay_invoice' handles).

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

decode_txC

Decode a Bitcoin transaction

ParametersJSON Schema
NameRequiredDescriptionDefault
rawHexYesTransaction hex

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't disclose whether this is a read-only operation, if it requires network access, potential rate limits, error conditions, or what the decoded output looks like. The description is functional but lacks context about how the tool behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple tool with one parameter.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'decode' entails (e.g., parsing inputs/outputs, scripts), the format of the result, or error handling. Given the complexity of Bitcoin transactions and lack of structured context, more completeness is needed.

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

Parameters3/5

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

The schema description coverage is 100%, with the parameter 'rawHex' fully documented in the schema as 'Transaction hex'. The description adds no additional meaning beyond this, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the verb ('decode') and resource ('a Bitcoin transaction'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_transaction' or 'decode_invoice', which prevents a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing raw hex data), exclusions, or comparisons to sibling tools like 'get_transaction' (which might retrieve transaction details differently).

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

generate_keyB

Generate a new Bitcoin key pair and address

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose if this requires network connectivity, has rate limits, stores keys securely, or what format the output takes (e.g., public/private keys, address type). This leaves significant gaps for agent understanding.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and resource, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of generating cryptographic keys and the lack of annotations and output schema, the description is incomplete. It doesn't explain return values (e.g., key formats), security implications, or error conditions, leaving the agent with insufficient context for safe and effective use.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately avoids discussing parameters, focusing on the tool's purpose. A baseline of 4 is applied as it compensates adequately for the lack of parameters.

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

Purpose4/5

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

The description clearly states the action ('Generate') and the resource ('a new Bitcoin key pair and address'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'validate_address' or 'pay_invoice', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'validate_address' for checking existing addresses or 'pay_invoice' for transactions. It lacks context about prerequisites, such as needing Bitcoin network access or when key generation is appropriate.

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

get_latest_blockC

Get the latest block

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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 only states the action without details on permissions, rate limits, response format, or potential side effects. For a tool with zero annotation coverage, this is insufficient to inform the agent adequately.

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

Conciseness5/5

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

The description is extremely concise with a single sentence, 'Get the latest block', which is front-loaded and wastes no words. It efficiently conveys the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., block data structure, error handling) or provide context for its use among siblings. For a tool with no structured support, more descriptive content is needed.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter information, which is appropriate here, but it could have clarified the lack of parameters explicitly. Baseline is 4 due to the absence of parameters.

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

Purpose3/5

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

The description 'Get the latest block' clearly states the action (get) and resource (latest block), making the purpose understandable. However, it lacks specificity about what a 'block' refers to in this context (e.g., blockchain block, data block) and does not differentiate from sibling tools like 'get_transaction', leaving room for ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context, or comparisons to sibling tools such as 'get_transaction' or 'decode_tx', leaving the agent without usage instructions.

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

get_transactionC

Get transaction details

ParametersJSON Schema
NameRequiredDescriptionDefault
txidYesTransaction ID

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits such as whether this is a read-only operation, error handling, rate limits, or authentication needs. It mentions 'details' but doesn't specify what those include.

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

Conciseness4/5

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

The description is extremely concise with 'Get transaction details'—a single, front-loaded sentence that efficiently conveys the core purpose without unnecessary words. However, it may be overly terse for a tool with no annotations or output schema.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what transaction details are returned, error conditions, or how it differs from sibling tools. For a tool with one parameter but no structured context, more information is needed.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting the 'txid' parameter. The description adds no additional meaning beyond the schema, so it meets the baseline of 3 for adequate but not enhanced parameter semantics.

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

Purpose3/5

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

The description 'Get transaction details' states the basic action (get) and resource (transaction details), but it's vague about what specific details are retrieved and doesn't differentiate from sibling tools like 'decode_tx' or 'get_latest_block'. It provides minimal but adequate purpose information.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'decode_tx' (which might decode transaction data) or 'get_latest_block' (which retrieves block information). The description lacks context about prerequisites or typical use cases.

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 Lightning invoice

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesBOLT11 Lightning invoice

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Pay a Lightning invoice' which implies a financial transaction, but doesn't clarify if this is irreversible, requires authentication, has rate limits, or what happens on success/failure. This is inadequate for a payment tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool with one parameter and gets straight to the point without unnecessary elaboration.

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

Completeness2/5

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

For a payment tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after payment (success confirmation, error handling), doesn't mention security implications, and provides minimal behavioral context despite the tool's financial nature.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'invoice' parameter documented as 'BOLT11 Lightning invoice'. The description doesn't add any additional meaning beyond what the schema provides, such as format examples or validation requirements, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Pay') and target resource ('a Lightning invoice'), making the purpose immediately understandable. It doesn't differentiate from siblings like 'decode_invoice' or 'get_transaction', but it's specific enough to understand what the tool does.

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

Usage Guidelines2/5

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 'decode_invoice' or 'validate_address'. It doesn't mention prerequisites, such as requiring a valid invoice or sufficient balance, leaving the agent to infer usage context from the tool name alone.

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

validate_addressC

Validate a Bitcoin address

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe Bitcoin address to validate

TDQS

C2.9/5.0
Behavior2/5

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. 'Validate' implies a read-only check, but the description doesn't specify what validation entails (format, checksum, network type), whether it requires network connectivity, what happens with invalid inputs, or what the output format will be. This leaves significant 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple validation tool and is perfectly front-loaded.

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

Completeness2/5

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

For a validation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what constitutes validation, what the tool returns (success/failure, validation details, error messages), or how it differs from related sibling tools. The agent would lack critical context to use this tool effectively.

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

Parameters3/5

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

The schema has 100% description coverage, with the single parameter 'address' clearly documented as 'The Bitcoin address to validate'. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb ('validate') and resource ('Bitcoin address'), making the purpose immediately understandable. However, it doesn't differentiate this validation tool from potential sibling tools that might also validate addresses in different contexts or with different criteria.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention whether this is for address format validation, network compatibility checking, or other specific validation contexts, nor does it reference any sibling tools that might serve related purposes.

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

Tool Schema Changelog

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

  1. 7 tool updates
    • First observeddecode_invoice
    • First observeddecode_tx
    • First observedgenerate_key
    • First observedget_latest_block
    • First observedget_transaction
    • First observedpay_invoice
    • First observedvalidate_address

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: decode_invoice and decode_tx handle decoding, generate_key creates keys, get_latest_block and get_transaction retrieve blockchain data, pay_invoice processes payments, and validate_address checks addresses. There is no overlap in functionality that could cause misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., decode_invoice, generate_key, get_transaction) with no deviations in style or convention. This predictability makes the set easy to navigate and understand.

Tool Count5/5

With 7 tools, the count is well-scoped for a Bitcoin server, covering key operations like decoding, key generation, data retrieval, payments, and validation. Each tool earns its place without feeling excessive or insufficient for the domain.

Completeness4/5

The tool surface covers core Bitcoin and Lightning operations effectively, including decoding, key management, transaction handling, and payments. A minor gap exists in lifecycle coverage, such as missing tools for creating transactions or managing wallets, but agents can work around this for most workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    Implements the Model Context Protocol to allow AI models to access and interact with blockchain data, including reading contract states, retrieving events, and accessing transaction information across various networks.
    10
    106 npm
    79
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables querying Bitcoin blockchain data, including address information, transaction details, mempool statistics, and ordinals/runes data through the Satstream API.
    37
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides real-time Bitcoin blockchain and mempool data to AI clients, allowing access to comprehensive Bitcoin network information through various data tools.
    31
    6 npm
    5
    MIT