Skip to main content
Glama
junxit

mcp-bitcoin

by junxit

mcp-bitcoin

An MCP server that gives Claude — or any MCP-compatible client — a read-only window into Bitcoin: HD wallet derivation, address and UTXO queries, transaction lookup, fee estimation and mempool analysis, against your own node or public APIs, over Tor if you want it.

Status: pre-alpha (v0.1.0). The derivation engine is verified against the published BIP test vectors and the query layer has been exercised against live APIs. It has not seen broad real-world use. Treat results as informational and cross-check anything that matters.


⚠️ Read this before you use a seed phrase

Anything you pass to an MCP tool goes into a language model's context.

If you paste a seed phrase into a tool call, that phrase is transmitted to whatever inference provider your client uses — for a hosted client, a third-party API over the network — and written into your client's saved conversation history. It may be cached or retained in logs you do not control.

No amount of care inside this server can undo that. It is a property of putting a secret in a prompt.

So this server is watch-only by default. Every tool that accepts a seed phrase or private key refuses to run unless you explicitly set MCP_BITCOIN_ALLOW_MNEMONIC=true.

You almost certainly don't need to. Derive an account xpub once on a machine that isn't running this server, then pass that instead — every address, balance, UTXO and history feature works watch-only:

derive_addresses(source="zpub6rFR7y4Q2Aij...", count=20)

If you do enable seed-phrase tools, use a testnet or throwaway seed. See SECURITY.md.


Related MCP server: Maestro MCP Server

What it does

Derivation

BIP-32/39/44/49/84/86/85 — Legacy, Nested SegWit, Native SegWit and Taproot, verified against the spec vectors

Watch-only

Full address/balance/UTXO/history from an xpub, ypub or zpub

Chain queries

Balances, UTXOs, paginated history, transactions, blocks, scripts

Fees & mempool

Smart estimates, recommended tiers, fee histogram, mempool stats

PSBT inspection

Decode a PSBT with destinations, fee and warnings before you sign elsewhere

Backends

Bitcoin Core, Electrum, mempool.space, Esplora — with priority failover

Networks

mainnet, testnet, signet, regtest

Privacy

Optional Tor routing, enforced fail-closed

It cannot build, sign or broadcast transactions. That is deliberate — see ROADMAP.md for why, and what replaces it.


Install

Not yet on PyPI. Install from source:

git clone https://github.com/junxit/mcp-bitcoin
cd mcp-bitcoin
uv sync

Confirm it works:

uv run mcp-bitcoin --help 2>/dev/null || echo "installed"
uv run pytest -q

Configure

Add a block to your MCP client config. For Claude Desktop that is ~/Library/Application Support/Claude/claude_desktop_config.json on macOS; for Claude Code, .mcp.json in your project or ~/.claude.json.

Replace /ABSOLUTE/PATH/TO/mcp-bitcoin with where you cloned it.

Public APIs — no node required

The quickest way to start. Uses mempool.space with Blockstream as a fallback.

{
  "mcpServers": {
    "bitcoin": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_NETWORK": "mainnet",
        "MCP_BITCOIN_MEMPOOL_URL": "https://mempool.space/api",
        "MCP_BITCOIN_ESPLORA_URL": "https://blockstream.info/api",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "mempool,esplora"
      }
    }
  }
}

Public APIs see every address you look up. If that matters, self-host or use Tor.

Testnet

{
  "mcpServers": {
    "bitcoin-testnet": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_NETWORK": "testnet",
        "MCP_BITCOIN_MEMPOOL_URL": "https://mempool.space/testnet4/api",
        "MCP_BITCOIN_ESPLORA_URL": "https://blockstream.info/testnet/api",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "mempool,esplora",
        "MCP_BITCOIN_ALLOW_MNEMONIC": "true"
      }
    }
  }
}

Enabling seed-phrase tools is reasonable here — testnet coins are worthless.

Your own Bitcoin Core

Omit credentials from the URL and the server reads ~/.bitcoin/.cookie.

{
  "mcpServers": {
    "bitcoin": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_CORE_URL": "http://127.0.0.1:8332",
        "MCP_BITCOIN_ELECTRUM_URL": "ssl://192.168.1.50:50002",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "core,electrum"
      }
    }
  }
}

Core has no address index, so pair it with Electrum, mempool.space or Esplora for get_balance, get_utxos and get_tx_history. The server routes each call to a backend that supports it.

Self-hosted over Tor

{
  "mcpServers": {
    "bitcoin": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_TOR_PROXY": "socks5://127.0.0.1:9050",
        "MCP_BITCOIN_CORE_URL": "http://yournode.onion:8332",
        "MCP_BITCOIN_ELECTRUM_URL": "ssl://yourelectrum.onion:50002",
        "MCP_BITCOIN_MEMPOOL_URL": "http://yourmempool.onion/api",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "core,electrum,mempool"
      }
    }
  }
}

With MCP_BITCOIN_TOR_PROXY set, every backend connection routes through the proxy and the server refuses to start if it is unreachable. socks5h:// is accepted and normalized. Certificate verification is skipped for .onion hosts because the onion address already authenticates the endpoint.

Public mempool.space over Tor

{
  "mcpServers": {
    "bitcoin": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_TOR_PROXY": "socks5://127.0.0.1:9050",
        "MCP_BITCOIN_MEMPOOL_URL": "http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "mempool"
      }
    }
  }
}

Regtest

{
  "mcpServers": {
    "bitcoin-regtest": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/mcp-bitcoin", "mcp-bitcoin"],
      "env": {
        "MCP_BITCOIN_NETWORK": "regtest",
        "MCP_BITCOIN_CORE_URL": "http://127.0.0.1:18443",
        "MCP_BITCOIN_PROVIDER_PRIORITY": "core",
        "MCP_BITCOIN_ALLOW_MNEMONIC": "true"
      }
    }
  }
}

Start the node with bitcoind -regtest -fallbackfee=0.0001. Derived addresses correctly use the bcrt1 prefix.


Example session

You:  What's the current Bitcoin fee rate, and how busy is the mempool?

Claude: [get_recommended_fees] [get_mempool_info]
        Fees are low right now — economy and normal are both 1 sat/vB,
        priority is 3. The mempool holds 82,735 transactions (41.6 MvB),
        so there's no meaningful backlog. A 1-2 sat/vB transaction should
        confirm within a few blocks.

You:  Show me the first 3 addresses for this account key: zpub6rFR7y4Q2Aij...

Claude: [derive_addresses]
        m/84'/0'/0'/0/0  bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
        m/84'/0'/0'/0/1  bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
        m/84'/0'/0'/0/2  bc1qp59yckz4ae5c4efgw2s5wfyvrz0ala7rgvuz8z

You:  Any balance on the first one?

Claude: [get_balance] [get_utxos]
        0.00000000 BTC — no UTXOs, and no transaction history.

Tools

Tools marked offline work with no backend configured.

Derivation

Tool

derive_addresses

offline

Addresses from an xpub or seed phrase

derive_from_path

offline

One key at any BIP-32 path, all four formats

derive_xpub

offline · 🔑

Account xpub/ypub/zpub from a seed phrase

derive_entropy_bip85

offline · 🔑

BIP-85 child seed or entropy

generate_mnemonic

offline · 🔑

New BIP-39 phrase

validate_mnemonic

offline

Check word count, wordlist and checksum

decode_wif

offline · 🔑

Public key and addresses for a WIF key

get_address_from_pubkey

offline

Hex public key to address

🔑 = requires MCP_BITCOIN_ALLOW_MNEMONIC=true

Chain queries

Tool

get_balance

backend

Confirmed and unconfirmed balance

get_utxos

backend

Unspent outputs, filterable by confirmations

get_tx_history

backend

History, newest first, cursor-paginated

get_transaction

backend

Fetch and decode a transaction

get_raw_transaction

backend

Raw hex

get_block

backend

Block header by hash or height

get_block_height

backend

Current chain tip

decode_raw_transaction

offline

Decode raw hex with destinations

decode_psbt

offline

Decode a PSBT with destinations and fee

validate_address

offline

Validity, type and network

decode_script

offline

Script type and address

Fees and mempool

Tool

estimate_fee

backend

Rate for a confirmation target

get_recommended_fees

backend

Economy / normal / priority

get_fee_histogram

backend

Mempool fee distribution

get_mempool_info

backend

Size, vsize, minimum rate

get_mempool_entry

backend

Details for an unconfirmed transaction

Utility

Tool

ping

Health and backend reachability

list_backends

Backends, status and capabilities

convert_units

offline

BTC / mBTC / bits / sats


Configuration reference

Variable

Default

MCP_BITCOIN_NETWORK

mainnet

mainnet, testnet, signet, regtest

MCP_BITCOIN_CORE_URL

Bitcoin Core RPC; omit credentials to use cookie auth

MCP_BITCOIN_CORE_COOKIE_PATH

auto

Override the .cookie location

MCP_BITCOIN_ELECTRUM_URL

ssl://host:50002 or tcp://host:50001

MCP_BITCOIN_ELECTRUM_ALLOW_SELF_SIGNED

false

Accept self-signed certs (unauthenticated)

MCP_BITCOIN_MEMPOOL_URL

mempool.space API base

MCP_BITCOIN_ESPLORA_URL

Esplora API base

MCP_BITCOIN_PROVIDER_PRIORITY

core,electrum,mempool,esplora

Failover order

MCP_BITCOIN_TOR_PROXY

SOCKS5 proxy; fail-closed when set

MCP_BITCOIN_ALLOW_MNEMONIC

false

Enable seed-phrase and private-key tools

MCP_BITCOIN_TIMEOUT

30

Per-backend request timeout, seconds

MCP_BITCOIN_FAILOVER_COOLDOWN

60

Initial backoff for a failed backend, seconds


Troubleshooting

"No backend is configured" — set at least one *_URL variable. Derivation, validation and decoding still work without one.

"Cannot run 'get_balance' … does not support this operation" — Bitcoin Core has no address index. Add an Electrum, mempool.space or Esplora backend.

Backend errors — run ping for per-backend reachability and latency, and list_backends to see which capabilities each one provides.

"Address … is a mainnet address, but this server is configured for testnet" — working as intended. Querying across networks returns another chain's data, which looks like missing funds. Change MCP_BITCOIN_NETWORK or use the right address.

Electrum TLS failures — many Electrum servers use self-signed certificates. For a server you trust, set MCP_BITCOIN_ELECTRUM_ALLOW_SELF_SIGNED=true, and read the caveat in SECURITY.md.

Server won't start with Tor enabled — that is the fail-closed guarantee. Start Tor, or unset MCP_BITCOIN_TOR_PROXY.


Development

uv sync --all-groups
uv run pytest
uv run ruff check . && uv run mypy src/

See CONTRIBUTING.md. The short version: assert against published spec vectors, not against this implementation.


License

Apache-2.0 © 2026 Jade Naaman.

Provided without warranty. You are responsible for verifying anything this tool tells you before acting on it.

Available Tools

27 tools
convert_unitsA
Read-only

Convert between Bitcoin units. Works offline.

Args: amount: Amount to convert, e.g. "0.001". from_unit: Source unit: btc, mbtc, bit or sat. to_unit: Target unit: btc, mbtc, bit or sat.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYes
to_unitYes
from_unitYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds the behavioral note 'Works offline,' which is useful beyond annotations. However, it does not elaborate on return format or edge cases, though the output schema mitigates that. This aligns with the calibration example where a small extra context earned a 3.

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 concise and front-loaded. The core purpose and offline capability appear in the first sentence, followed by a clear Args list with examples. Every sentence serves a purpose, with no fluff or repetition.

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

Completeness4/5

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

For a simple conversion tool with an output schema present, the description covers all necessary information to invoke it correctly: parameters, allowed unit values, and an example. It does not discuss invalid inputs or precision, but these are minor and not critical for a basic conversion. The offline note is a helpful addition. It is sufficiently complete.

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

Parameters5/5

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

Schema coverage is 0% and the schema provides only titles with no descriptions. The description fully compensates by explaining each parameter: it gives an example for 'amount' and enumerates allowed values for 'from_unit' and 'to_unit' (btc, mbtc, bit, sat). This adds meaning the schema lacks, making it easy for an agent to supply correct values.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Convert between Bitcoin units.' This distinguishes it from sibling tools focused on validation, derivation, or transaction queries, leaving no ambiguity about its function.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit. The description says it converts units, so an agent can infer when to use it, but there is no mention of alternatives or when not to use it. It does not provide any exclusion or comparison with sibling tools, so it lacks explicit routing guidance.

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

decode_psbtA
Read-only

Decode a PSBT, showing every destination, the fee and signing status.

Works offline. Use this to check where funds are going before signing in your wallet. This server cannot sign or broadcast.

Args: psbt: The base64-encoded PSBT. network: Override the server's network for address rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
psbtYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description adds meaningful behavioral context: it works offline, cannot sign or broadcast, and shows signing status. This helps the agent set expectations without overstepping.

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

Conciseness5/5

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

The description is compact and front-loaded, leading with the core action and outputs, then adding usage context, offline/capability constraints, and parameter explanations. Every line earns its place.

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

Completeness5/5

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

Given the simple schema, annotations, and presence of an output schema, the description covers everything needed: what the tool does, its safety guarantees, its limitations, and its parameters. No critical gap remains.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries full responsibility for parameter meaning. It clearly explains that 'psbt' is base64-encoded and that 'network' only affects address rendering, which is genuinely useful beyond the raw schema.

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

Purpose5/5

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

The description states a specific verb ('Decode') and resource ('PSBT') and clarifies the key outputs: destinations, fee, and signing status. This clearly distinguishes it from sibling tools like decode_raw_transaction and decode_wif.

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

Usage Guidelines4/5

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

It explicitly frames the use case: 'check where funds are going before signing in your wallet.' It does not name alternatives or exclusions, but the context is specific enough for an agent to select this tool correctly among the decode/derive siblings.

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

decode_raw_transactionA
Read-only

Decode raw transaction hex, showing destinations. Works offline.

Args: raw_tx: The raw transaction hex. network: Override the server's network for address rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
raw_txYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context: it works offline and focuses on showing destinations. It also clarifies the network parameter's role in address rendering, going beyond the schema's bare type information.

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 short and front-loaded with the core action and output. It includes only necessary details, with parameter explanations separated cleanly. Every sentence adds value and there is no repetition of schema fields.

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

Completeness4/5

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

For a read-only decoder with an output schema present, the description covers the essential inputs and behavioral context. It does not explain error cases or exact network value formats, but these are not critical given the simple parameter list and output schema availability.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: raw_tx is explained as 'the raw transaction hex' and network as 'Override the server's network for address rendering.' While brief, this provides meaningful semantics for both parameters.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Decode raw transaction hex, showing destinations.' It clearly identifies the input format and output focus, distinguishing it from sibling tools like decode_script, decode_wif, and decode_psbt.

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

Usage Guidelines3/5

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

The description states it 'Works offline,' which gives some context about when it is appropriate to use. However, it does not explicitly explain when to choose this over related decoders or mention any exclusions, leaving usage guidance mostly implied.

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

decode_scriptA
Read-only

Decode a scriptPubKey to its type and address. Works offline.

Args: script_hex: The hex-encoded script. network: Override the server's network for address rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo
script_hexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that by stating 'Works offline' and clarifying that network only affects address rendering. 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.

Conciseness5/5

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

The description is compact and front-loaded: a one-sentence purpose, a one-sentence behavioral note, and a minimal Args block. Every line earns its place, and there is no redundant framing or fluff.

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

Completeness4/5

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

For a two-parameter read-only tool with an output schema, the description covers the operation, offline behavior, and both parameters sufficiently. The only notable gap is the lack of explicit guidance on selecting this tool over sibling decode tools, but that is a minor omission given the clear scriptPubKey focus.

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 schema has no property descriptions (0% coverage), so the description must compensate. It does so by explaining script_hex as 'the hex-encoded script' and network as an override for address rendering. This adds real meaning beyond the bare schema, though accepted network values are not enumerated.

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

Purpose5/5

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

The description states a precise verb and object: 'Decode a scriptPubKey to its type and address.' This clearly identifies the resource and expected output. It also distinguishes the tool from sibling decoders like decode_wif, decode_psbt, and decode_raw_transaction by specifying scriptPubKey as the input.

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

Usage Guidelines4/5

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

The description clearly implies when to use it: when an agent has a hex-encoded scriptPubKey and needs its type and address. It also notes that the operation works offline, which is useful context. It does not explicitly name alternatives or exclusion criteria, but the resource-specific language is enough for basic routing.

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

decode_wifA
Read-only

Show the public key and addresses for a WIF private key. Works offline.

Requires MCP_BITCOIN_ALLOW_MNEMONIC=true. The private key is not echoed back.

Args: wif: The WIF-encoded private key. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
wifYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds genuine behavioral context by stating 'Works offline' and 'The private key is not echoed back', and it discloses the MCP_BITCOIN_ALLOW_MNEMONIC=true requirement. No contradiction with annotations exists.

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 front-loads the purpose, then gives a requirement and a short argument list. Every sentence is informative and there is no redundant text. The structure is clear, though the requirement line could be slightly expanded.

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

Completeness4/5

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

Given that an output schema exists and annotations cover the read-only safety profile, the description covers the essential invocation details: purpose, offline behavior, a required environment flag, and both parameters. It does not spell out error behavior or allowed network values, but these are not essential for a correct call. Overall it is complete enough for a small read-only tool.

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

Parameters4/5

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

Schema description coverage is 0%, but the description's 'Args:' section compensates by explaining both parameters: 'wif' is the WIF-encoded private key, and 'network' overrides the server's network for the call. This clarifies the meaning of the default null for network, which the schema leaves implicit. The explanations are terse but add real value over property titles.

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

Purpose5/5

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

The description states a specific operation ('Show the public key and addresses') on a specific resource ('a WIF private key'), which clearly distinguishes it from sibling decoders like decode_raw_transaction or decode_script. The phrase 'Works offline' adds a useful constraint. No ambiguity remains about 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 Guidelines3/5

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

The description gives a clear context: the tool decodes a WIF private key to its public key and addresses, and it works offline. However, it never says when to prefer this over alternatives (e.g., derive_addresses, get_address_from_pubkey) or when not to use it. The only operational guidance is the environmental prerequisite, so usage selection relies on inference.

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

derive_addressesA
Read-only

Derive addresses from an xpub (preferred) or a seed phrase. Works offline.

Passing an xpub/ypub/zpub is the safe path and needs no special permission. Passing a mnemonic requires MCP_BITCOIN_ALLOW_MNEMONIC=true.

Args: source: An xpub/ypub/zpub, or a BIP-39 mnemonic. passphrase: Optional BIP-39 passphrase; only used with a mnemonic. address_type: legacy, nested_segwit, native_segwit or taproot. account: BIP-44 account index. change: 0 for receiving addresses, 1 for change. start_index: First address index. count: How many addresses to derive, up to 500. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
changeNo
sourceYes
accountNo
networkNo
passphraseNo
start_indexNo
address_typeNonative_segwit

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate read-only and non-destructive behavior, and the description adds valuable context: it works offline, xpub paths need no special permission, mnemonic usage requires MCP_BITCOIN_ALLOW_MNEMONIC=true, and count is capped at 500. 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.

Conciseness5/5

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

The description is well-organized: a front-loaded one-sentence summary, then permission/usage notes, then a clear Args block. Each line earns its place and the length is justified by the eight parameters.

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

Completeness5/5

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

Given the tool's complexity—8 parameters, BIP-39 passphrases, BIP-44 account/change semantics, and network overrides—the description is highly complete. It explains all parameters, security prerequisites, and operational constraints, while return behavior is covered by the output schema.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it succeeds: every parameter is explained with meaningful semantics (source formats, passphrase scope, address type list, change meaning, count cap, network override).

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 that the tool derives addresses from an xpub or seed phrase, with a specific verb and resource. It does not explicitly contrast itself with siblings like derive_xpub or derive_from_path, so it earns a 4 rather than a 5.

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

Usage Guidelines3/5

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

The description gives useful guidance about preferring xpub/ypub/zpub and the permission requirement for mnemonics, but it does not explain when to choose this tool over siblings such as derive_from_path or get_address_from_pubkey. Usage context is implied rather than explicitly contrasted.

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

derive_entropy_bip85A
Read-only

Derive a deterministic child seed or entropy from a master seed (BIP-85).

Works offline. Requires MCP_BITCOIN_ALLOW_MNEMONIC=true.

Args: mnemonic: The master BIP-39 seed phrase. index: Derivation index; each index gives a different child. passphrase: Optional BIP-39 passphrase for the master seed. child_mnemonic_words: Set to 12/15/18/21/24 to derive a child seed phrase. Leave unset to derive raw hex entropy instead. num_bytes: Entropy length, 16-64, when deriving raw entropy.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo
mnemonicYes
num_bytesNo
passphraseNo
child_mnemonic_wordsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate read-only and non-destructive, which the description reinforces by describing a deterministic derivation that works offline. It additionally discloses an environment requirement (MCP_BITCOIN_ALLOW_MNEMONIC=true) and clarifies that it operates on a master seed, which the schema alone does not convey. The description does not contradict annotations.

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 a compact multi-line block that front-loads the key action and purpose. It then lists parameters efficiently. Some redundancy exists (e.g., 'works offline' could be inferred, but it does add safety context).

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

Completeness5/5

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

Given the complexity (5 parameters, 0% schema coverage) and the presence of an output schema, the description fully covers what the tool does, key constraints (works offline, env requirement), and parameter semantics. It does not state the return format, but with an output schema present, that is not required. It also distinguishes from siblings.

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

Parameters5/5

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

Schema coverage is 0% (no property descriptions), so the description must carry all meaning. It explains the role of each parameter: mnemonic as the master seed, index for derivation, passphrase as optional, child_mnemonic_words for selecting seed phrase length or raw entropy, and num_bytes for entropy length. This adds significant value beyond the bare schema.

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

Purpose5/5

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

States a specific verb ('Derive'), resource ('child seed or entropy from a master seed'), and the exact standard (BIP-85). Clearly distinguishes from sibling tools like 'generate_mnemonic' (which creates new seeds) and 'derive_from_path' (which derives at a generic BIP-32 path).

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

Usage Guidelines4/5

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

Explains when to use this tool for BIP-85 derivation and distinguishes between child seed phrase and raw entropy via the parameters. However, it does not explicitly state when NOT to use it or mention alternatives; the sibling list is large, but the description implies usage for BIP-85, which is distinct.

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

derive_from_pathA
Read-only

Derive one key at an arbitrary BIP-32 path, in every address format.

Works offline. Private keys are never returned.

Args: source: An xpub/ypub/zpub, or a BIP-39 mnemonic. path: A BIP-32 path such as "m/84'/0'/0'/0/0". passphrase: Optional BIP-39 passphrase; only used with a mnemonic. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
sourceYes
networkNo
passphraseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The annotations already provide readOnlyHint=true and destructiveHint=false Schwell. The description adds meaningful behavioral guarantees beyond those: 'Works offline' and 'Private keys are never returned.' These are valuable context that helps an agent set expectations and reassure the user about security.

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

Conciseness5/5

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

The description is compact and well-organized: a one-sentence purpose, two brief behavioral notes, then a clear args list. Every line adds information, with no filler or repetition.

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

Completeness5/5

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

Given the output schema exists, return values do not need to be explained. The description covers the operation's purpose, offline/security behavior, and all parameters with enough detail for an agent to invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It compensates well by documenting all four parameters: source types, path format with an example, passphrase applicability, and network override behavior. This meaningfully exceeds what the bare schema provides.

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 ('derive') and the resource ('one key at an arbitrary BIP-32 path'), plus the distinctive output scope ('in every address format'). It is specific enough to understand the core function, though it does not explicitly differentiate itself from sibling tools like derive_addresses or derive_xpub.

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 given for when to prefer this tool over alternatives. The description does not mention derive_addresses, derive_xpub, or any conditions that would make this tool the right choice, leaving usage context to inference.

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

derive_xpubA
Read-only

Extract an account xpub/ypub/zpub from a seed phrase. Works offline.

Requires MCP_BITCOIN_ALLOW_MNEMONIC=true. Run this once, keep the xpub, and every later address query can stay watch-only.

Args: mnemonic: The BIP-39 seed phrase. standard: bip44, bip49, bip84 or bip86. passphrase: Optional BIP-39 passphrase. account: Account index. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo
networkNo
mnemonicYes
standardNobip84
passphraseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds that the operation works offline and requires a specific environment flag. It also communicates a safe workflow pattern (derive once, reuse the xpub), which is useful behavioral context not present in annotations.

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

Conciseness5/5

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

The description is compact and well-structured: a one-line purpose, a short requirement note, a workflow sentence, and a bulleted parameter list. Every sentence earns its place and the most important constraints are front-loaded.

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

Completeness5/5

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

Given the output schema exists and annotations cover safety, the description is complete: it states prerequisites, purpose, usage pattern, and all parameter semantics. Nothing critical is missing for an agent to decide when and how to invoke this tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining every parameter: mnemonic, standard with allowed BIP values, passphrase optionality, account index, and network override. This gives the agent enough semantic detail to construct correct calls without opening the schema.

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

Purpose5/5

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

The description uses a specific verb ('Extract') with a clear resource ('account xpub/ypub/zpub from a seed phrase') and immediately distinguishes the tool by noting it works offline. It clearly separates this from sibling derivation tools like derive_addresses or derive_from_path by focusing on the seed-phrase-to-xpub output.

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

Usage Guidelines4/5

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

The description gives clear usage context: run once offline, capture the xpub, then keep later queries watch-only. It also states the required MCP_BITCOIN_ALLOW_MNEMONIC=true prerequisite, though it does not explicitly name alternatives or when not to use this tool.

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

estimate_feeA
Read-only

Estimate the fee rate to confirm within a number of blocks. Needs a backend.

Args: target_blocks: Desired confirmation target, 1 to 1008. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo
target_blocksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds a useful behavioral note that a backend is required, and clarifies that network overrides the server's network. It does not describe error behavior (e.g., what happens if target_blocks is out of range) or the nature of the estimate, but the output schema likely covers return structure. Overall, adequate given the annotations.

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

Conciseness5/5

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

The description is two compact sentences followed by a clean Args block. The purpose is front-loaded, and the parameter documentation is structured and scannable. Every sentence earns its place with no filler.

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

Completeness4/5

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

The tool is simple: two optional parameters, both documented, and an output schema exists to explain return values. The description is complete for making the call correctly. It is missing only usage context relative to sibling tools, but that gap is already accounted for in the usage guidelines dimension.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by documenting both parameters: target_blocks includes its range (1 to 1008) and purpose, and network explains it overrides the server's network. This adds meaningful semantics beyond the schema, which only contains titles and defaults.

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 opens with a specific verb and resource: 'Estimate the fee rate to confirm within a number of blocks.' This clearly states what the tool does and its core parameter. However, it does not distinguish itself from sibling tools like get_recommended_fees or get_fee_histogram, which also involve fee estimation, so it misses the differentiation criterion.

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 almost no guidance on when to use this tool versus alternatives. 'Needs a backend' is a prerequisite, not a usage condition. It never mentions get_recommended_fees or get_fee_histogram as alternatives or states under what circumstances an agent should pick this tool instead.

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

generate_mnemonicA
Read-only

Generate a new BIP-39 seed phrase. Works offline.

Requires MCP_BITCOIN_ALLOW_MNEMONIC=true, because the generated phrase is returned into the conversation and therefore into your client's transcript. Never use a phrase generated this way for real funds — use a hardware wallet or an offline generator.

Args: word_count: 12, 15, 18, 21 or 24. Defaults to 24.

ParametersJSON Schema
NameRequiredDescriptionDefault
word_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds meaningful behavioral context beyond annotations: it works offline, requires a specific environment variable, returns the phrase into the conversation/transcript, and carries security caveats. This is helpful transparency, though not exhaustive about internal generation behavior.

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?

Front-loaded purpose, then concise caveats and parameter documentation. Every sentence adds value, with no filler or redundant restatement of the tool name.

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

Completeness5/5

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

With one optional parameter and an output schema present, the description covers prerequisites, security behavior, and valid arguments. Nothing critical is missing for an agent to understand how to call the tool correctly.

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

Parameters5/5

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

The input schema provides no description for word_count (0% coverage), so the description fully compensates by enumerating valid values (12, 15, 18, 21, 24) and stating the default. This is essential for correct invocation and goes far beyond the bare schema.

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

Purpose5/5

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

States a specific verb ('Generate') and a specific resource ('BIP-39 seed phrase'), making the tool's purpose immediately clear. It also distinguishes itself from the sibling validate_mnemonic by focusing on creation rather than validation.

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

Usage Guidelines4/5

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

Provides clear context: use when a new mnemonic is needed, it works offline, and MCP_BITCOIN_ALLOW_MNEMONIC=true is required. It does not explicitly name alternatives like validate_mnemonic for when-not-to-use this tool, but the warning about not using the result for real funds adds an important usage boundary.

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

get_address_from_pubkeyA
Read-only

Convert a hex public key to an address. Works offline.

Args: pubkey: Hex-encoded public key, compressed or uncompressed. address_type: legacy, nested_segwit, native_segwit, taproot, or "all". network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYes
networkNo
address_typeNonative_segwit

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the useful behavioral fact that the tool works offline and that pubkeys may be compressed or uncompressed, but it does not disclose error behavior or output format, which is partly covered by the output schema.

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

Conciseness5/5

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

The core purpose is front-loaded in one sentence, and the Args block is compact and directly aligned with schema properties. Every line adds relevant information with no filler.

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

Completeness4/5

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

For a simple read-only conversion tool with an output schema, the description covers the essential inputs and offline behavior. It does not fully explain what 'all' produces or which network values are valid, but the output schema and parameter defaults mitigate the gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden. It explains pubkey as hex-encoded and compressed/uncompressed, enumerates address_type options including 'all', and clarifies network as an override of the server's network. Network values and the meaning of 'all' remain somewhat underspecified.

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 states a specific verb and resource: convert a hex public key to an address. It clearly conveys the tool's core function, though it does not explicitly distinguish it from sibling derivation tools like derive_addresses or derive_xpub.

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

Usage Guidelines2/5

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

No when-to-use versus alternative guidance is provided, and no sibling tools are mentioned. 'Works offline' is the only contextual hint, but it does not help an agent choose this tool over similar derivation or conversion tools.

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

get_balanceA
Read-only

Get an address's confirmed and unconfirmed balance. Needs a backend.

Args: address: The Bitcoin address to look up. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With readOnlyHint and destructiveHint already covering safety, the description adds useful behavioral context: it returns both confirmed and unconfirmed balance, and it requires a backend. These details go beyond the annotations and help set expectations about dependency and output scope.

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 brief and front-loaded with the core purpose, and the Args list is clear. However, the phrase 'Needs a backend' is vague and not elaborately useful, slightly reducing the overall value of the sentence.

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

Completeness4/5

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

Given the tool's low complexity and the presence of an output schema, the description provides enough information for an agent to invoke it correctly: purpose, parameter semantics, and a backend prerequisite. It does not address usage alternatives, but that gap is already captured in usage_guidelines.

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

Parameters4/5

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

Schema description coverage is 0%, so the description's Args section carries the burden. It clearly explains that address is a Bitcoin address and that network overrides the server's network, adding meaning beyond the bare type definitions. It lacks specifics like network format or allowed values, so it is not a 5.

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

Purpose5/5

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

The description states a specific verb ('Get'), resource ('an address'), and output ('confirmed and unconfirmed balance'), which clearly distinguishes it from sibling tools like get_utxos or get_tx_history. It explicitly mentions both balance types, making its function unambiguous.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives. The only usage-related note, 'Needs a backend,' is a prerequisite rather than a selection criterion, and it does not explain what a backend means or when this tool is preferable to other get_* tools.

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

get_blockA
Read-only

Fetch a block header by hash or height. Needs a backend.

Args: block: A block hash, or a block height as a number. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already establish this as read-only and non-destructive. The description adds useful operational context beyond that: the tool requires a backend, and the network parameter can override the server's network. These are behavioral details not present in the structured metadata.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by a short prerequisite and clear per-parameter explanations. Every sentence earns its place; there is no redundant content.

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

Completeness4/5

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

For a two-parameter read-only tool with an output schema, the description covers the essentials: purpose, parameter semantics, and a key prerequisite. It does not explain return values, but the output schema handles that. The only minor gap is that 'backend' is not clarified further, though this may be a system-level concern.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries full responsibility for parameter meaning. It explains that 'block' can be a block hash or a height number, and that 'network' overrides the server network. This is significant added value beyond the bare schema types.

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

Purpose5/5

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

The description states a specific action ('Fetch a block header') and the two accepted identifiers ('by hash or height'). This clearly distinguishes it from siblings like get_block_height (which likely returns the current height) and get_transaction. The verb and resource are unambiguous.

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

Usage Guidelines2/5

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

The description provides only a vague prerequisite ('Needs a backend') and no guidance on when to choose this tool over alternatives. It does not mention get_block_height or get_transaction, which are the natural siblings to compare against. An agent would have 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.

get_block_heightA
Read-only

Get the current chain tip height. Needs a backend.

Args: network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by noting that a backend is required and that the network parameter overrides the server's network for this call only. This goes beyond the structured annotations without contradicting them.

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 compact and front-loaded: the purpose is stated in the first sentence, and the only parameter is explained in one line. There is no redundant phrasing or unnecessary detail. Every sentence earns its place.

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

Completeness4/5

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

For a simple read-only getter with one optional parameter and an output schema, the description covers the essential invocation context. 'Needs a backend' signals a real prerequisite, though it is slightly vague about what happens if no backend is available. Overall, an agent has enough information to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden of explaining the 'network' parameter. It does so by stating 'Override the server's network for this call', which adds meaningful semantics beyond the raw string/null schema. It does not enumerate accepted network values, but for a single optional parameter this is adequate.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('current chain tip height'), making the tool's core purpose unmistakable. This clearly distinguishes it from sibling tools like get_block, which retrieves a specific block, and other chain data tools. The wording is direct and not a tautology.

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

Usage Guidelines3/5

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

The description implies the tool is used when the current chain tip height is needed, and it notes a prerequisite ('Needs a backend'). However, it does not explicitly contrast this tool with alternatives such as get_block, nor does it state when not to use it. The usage context is mostly inferred from the purpose rather than clearly prescribed.

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

get_fee_histogramC
Read-only

Get the mempool fee distribution. Needs a backend.

Args: network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the note 'Needs a backend', which is useful context beyond annotations, but doesn't explain what happens if backend is unavailable or any other behavioral traits like rate limits.

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

Conciseness4/5

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

The description is concise with two short sections. It front-loads the main purpose and then describes the parameter, though the 'Needs a backend' note is placed somewhat awkwardly after the first sentence, but overall efficient.

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

Completeness3/5

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

Given it has an output schema, return values are covered. But for a read-only tool with one optional parameter, it misses clarifying the network parameter's format and any backend requirements. It's adequate but not thorough.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the network parameter. It says 'Override the server's network for this call', which clarifies its purpose, but doesn't state valid values, defaults, or format, leaving significant ambiguity.

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 states it 'get the mempool fee distribution', which is a clear verb and resource. However, it doesn't differentiate from sibling tools like estimate_fee or get_recommended_fees which also deal with fees, so the purpose is clear but not distinguished.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like estimate_fee or get_recommended_fees. The only hint is the need for a backend, which is terse and not elaborated, so usage context is minimal.

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

get_mempool_entryA
Read-only

Get mempool details for an unconfirmed transaction. Needs a backend.

Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
txidYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the backend requirement and the unconfirmed-transaction scope, which is useful, but does not explain behavior for missing entries or error cases. 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.

Conciseness4/5

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

The description is short and front-loaded with the main purpose, followed by a clean args list. The phrase 'Needs a backend' is slightly cryptic but does not bloat the text.

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

Completeness4/5

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

Given the low complexity, output schema presence, and annotations, the description covers the essential semantics of both parameters and the tool's role. The only mild gap is the unclear 'Needs a backend' phrase, which is not fully elaborated.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates well: txid is specified as a 64-hex-character transaction ID, and network is explained as an override for the server's network. This adds meaningful meaning beyond the bare schema types.

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 states a clear verb and resource: 'Get mempool details' for 'an unconfirmed transaction'. This distinguishes it from aggregate mempool tools like get_mempool_info by focusing on a specific transaction entry, though it does not explicitly name alternatives.

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

Usage Guidelines3/5

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

It gives context clues: the tool is for unconfirmed transactions and 'needs a backend'. However, it does not say when to choose this over siblings like get_transaction or get_raw_transaction, nor does it mention any exclusions.

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

get_mempool_infoA
Read-only

Get mempool size, vsize and minimum fee rate. Needs a backend.

Args: network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds a useful dependency ('Needs a backend') and the network-override behavior, but it does not explain failure behavior or what happens if no backend is available. The added behavioral context is modest but not absent.

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 front-loaded with the core purpose, then adds a necessary prerequisite and a one-line parameter explanation. Every sentence earns its place, and there is no filler or repetition.

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

Completeness4/5

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

There is an output schema, so return values do not need to be described. For a simple one-optional-parameter read tool, the description covers the purpose, the prerequisite, and the parameter semantics. The only notable gap is guidance on how to handle a missing backend or why this tool is preferable to mempool/fee siblings.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the parameter meaning. It does: 'network: Override the server's network for this call' explains what the parameter actually does beyond the bare anyOf string/null schema. It could enumerate valid network values, but this is a meaningful compensation for the schema gap.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a clear resource ('mempool size, vsize and minimum fee rate'). This is distinct from the sibling get_mempool_entry, which targets individual mempool entries, so an agent can tell them apart without opening the schema.

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 only usage hint is 'Needs a backend.' It does not say when to prefer this over related siblings like get_mempool_entry, estimate_fee, or get_fee_histogram, nor does it state any exclusions or conditions beyond backend availability.

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

get_raw_transactionB
Read-only

Fetch a transaction's raw hex. Needs a backend.

Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
txidYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the backend requirement and notes the network override behavior, which is useful context. However, it does not disclose what happens on invalid txids, backend absence, or network mismatch, so it only partially exceeds 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.

Conciseness4/5

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

The description is short and front-loaded with the core action, followed by a concise parameter list. The 'Needs a backend' note is slightly terse but still earns its place. No redundant or filler sentences are present.

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

Completeness3/5

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

The tool is simple, has an output schema, and annotations cover the read-only nature. The description covers prerequisites and parameter basics, but it leaves out acceptable network values and error behavior, and it offers no routing guidance among the many transaction-related siblings. This is adequate but with clear gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does: txid is defined as a 64-hex-character transaction ID, and network is defined as an override for the server's network. This adds real value beyond the bare schema, though valid network values are not enumerated.

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 states a specific verb and resource: 'Fetch a transaction's raw hex', which clearly distinguishes it from siblings like get_transaction or decode_raw_transaction by emphasizing the raw hex output. It could more explicitly contrast with those siblings, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as get_transaction or decode_raw_transaction. The only contextual note, 'Needs a backend', is a prerequisite rather than a usage guideline. An agent is left to infer the appropriate selection.

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

get_transactionA
Read-only

Fetch and decode a transaction by txid. Needs a backend.

Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
txidYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already mark this as read-only and non-destructive; the description does not contradict them. It adds the operational context that a backend is required and that fetching and decoding happen together, but it does not disclose failure modes or further behavioral details.

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

Conciseness5/5

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

The description is compact and front-loaded: a purpose statement, a one-sentence prerequisite, and a concise Args block. Every line contributes useful information with no filler.

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

Completeness4/5

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

For a two-parameter read-only tool with an output schema, the description covers the operation, both parameters, and the backend prerequisite. It is slightly incomplete in not guiding the agent toward sibling tools such as get_raw_transaction or decode_raw_transaction, but nothing essential for invoking the tool is missing.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by documenting both parameters: txid must be a 64-hex-character string, and network overrides the server's network. This goes well beyond the schema's bare string/null types.

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

Purpose5/5

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

States a specific verb and resource: 'Fetch and decode a transaction by txid.' This clearly identifies the operation and distinguishes it from siblings like get_raw_transaction or decode_raw_transaction, which focus on raw or decoded-only views.

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

Usage Guidelines3/5

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

Implies usage when a decoded transaction is needed and gives the prerequisite 'Needs a backend.' However, it does not explicitly mention when to prefer this over sibling tools or when not to use it, leaving alternative selection to inference.

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

get_tx_historyA
Read-only

Get an address's transaction history, newest first. Needs a backend.

Paginates by cursor: pass the returned next_cursor as after_txid to page on.

Args: address: The Bitcoin address to look up. limit: How many transactions to return, up to 100. after_txid: Continue after this txid, from a previous next_cursor. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
addressYes
networkNo
after_txidNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds non-obvious behavior: results are newest-first and pagination is cursor-based via next_cursor/after_txid. It also warns that a backend is required. 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.

Conciseness4/5

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

The description is compact: a one-line purpose, a pagination note, and a flat Args list. It avoids irrelevant detail, though 'Needs a backend' is terse and could be slightly clearer.

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

Completeness4/5

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

All invocation-critical details are present: required address, maximum limit, cursor paging, and network override, while the output schema covers return shape. The vague 'backend' prerequisite and lack of valid network values keep it from being fully self-contained.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by explaining all four arguments: address to look up, limit up to 100, after_txid as a continuation cursor, and network as a server override. This adds essential meaning beyond the bare schema titles.

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 opens with a specific verb and resource ('Get an address's transaction history') and adds ordering ('newest first'), making the result unambiguous. It does not explicitly contrast with sibling tools like get_transaction or get_utxos, but the history focus is clear enough.

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

Usage Guidelines3/5

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

The description provides operational guidance such as cursor pagination and the backend requirement, but it does not explicitly state when to use this tool versus alternatives like get_balance or get_transaction. Usage context is implied by the wording rather than stated with exclusions or fallback instructions.

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

get_utxosA
Read-only

List an address's unspent outputs. Needs a backend.

Args: address: The Bitcoin address to look up. min_confirmations: Exclude UTXOs below this confirmation count. network: Override the server's network for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
networkNo
min_confirmationsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'Needs a backend' prerequisite, which is a useful behavioral note, but it does not disclose other traits like pagination, error conditions, or network override implications.

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 exceptionally concise: a single-purpose line plus a clean parameter list. No wasted words, and the key purpose is front-loaded.

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

Completeness4/5

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

With an output schema present, return values don't need description. The description covers the tool's purpose, parameters, and a prerequisite. It could mention potential edge cases or limitations, but it is sufficient for a straightforward read-only list operation.

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 description explicitly explains all three parameters in the Args section, compensating for the 0% schema description coverage. It clarifies the meaning of address, min_confirmations, and network beyond the bare schema definitions.

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 states a specific verb ('List') and resource ('an address's unspent outputs'), making the purpose clear. It doesn't explicitly name a sibling alternative, but the function is distinct from tools like get_balance or get_tx_history.

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

Usage Guidelines3/5

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

The description mentions a prerequisite ('Needs a backend'), which is useful context, but it does not explain when to use this tool versus alternatives or when to avoid it. It gives no exclusions or comparison with sibling tools.

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

list_backendsA
Read-only

List configured backends, their reachability and their capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this as read-only and non-destructive. The description adds value by indicating that the tool evaluates 'reachability,' which implies it may perform network probes or live checks rather than just returning stored configuration. This is a useful behavioral nuance beyond the annotation flags.

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, well-structured sentence that front-loads the action and object, then adds the relevant output dimensions. Every word contributes meaning, with no fluff or redundancy.

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

Completeness4/5

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

For a zero-parameter listing tool with a readOnlyHint, a false destructiveHint, and an output schema, the description is nearly complete. It clearly states what is listed and the key attributes returned. It could go slightly further by noting that this is the preferred way to enumerate backend status versus checking a single backend with ping, but the current coverage is strong.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter burden for the description to carry. The input schema is already complete with an empty properties object, giving a baseline of 4. The description does not need to explain any parameters.

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

Purpose5/5

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

The description uses a specific verb ('List') and a clear resource ('configured backends'), and it further specifies what is returned: reachability and capabilities. This is distinct from sibling tools like ping or get_balance and leaves no ambiguity about the tool's purpose.

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

Usage Guidelines3/5

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

The description implies this is the go-to tool for an overview of configured backends and their state, but it does not explicitly state when to use it instead of related tools such as ping for reachability checks. No alternatives or exclusions are named, so guidance is only implied.

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

pingA
Read-only

Check server health and which backends are reachable.

Start here when other tools report backend errors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is well covered. The description adds useful operational context—this is a health/reachability check and an initial diagnostic step—but does not disclose details like the exact shape of the reachability report, which the output schema can carry.

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

Conciseness5/5

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

Two short, purposeful sentences. The core purpose is front-loaded, and the usage guidance is tacked on without any filler or redundant restatement of the tool name.

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

Completeness5/5

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

For a parameterless, read-only, health-check tool with an output schema present, the description covers what it does, its scope, and when to invoke it. No critical operational gap remains for an agent to call it correctly.

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

Parameters4/5

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

The tool has 0 parameters and the schema reflects that, so the description has no parameter semantics to add. The 0-param baseline of 4 applies; there is nothing undocumented that the description would need to compensate for.

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

Purpose5/5

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

The description clearly identifies a specific verb ('Check') and resource ('server health and which backends are reachable'). It is not a tautology of the name 'ping' and it differentiates this tool from sibling 'list_backends' by focusing on reachability/health rather than just listing backends.

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

Usage Guidelines4/5

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

The description gives explicit situational guidance: 'Start here when other tools report backend errors.' This tells the agent when to use the tool, though it does not enumerate when-not conditions or explicitly compare against alternatives like list_backends.

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

validate_addressA
Read-only

Check whether an address is valid and which network it belongs to.

Works offline.

Args: address: The address to check. network: Compare against this network instead of the server default.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish that this is read-only and non-destructive. The description adds meaningful behavioral context by stating it works offline and that it determines network membership, which goes beyond the structured annotations.

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 compact: a clear purpose sentence, an offline behavior note, and concise parameter definitions. Every sentence adds value and the most important information is front-loaded.

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

Completeness4/5

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

For a simple two-parameter tool with annotations and an output schema, the description is largely complete. It covers purpose, offline capability, and parameter semantics; only minor details like supported network values or address formats are missing, but these are not critical given the output schema.

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?

With 0% schema description coverage, the description carries the burden of explaining parameters. It explains the network parameter clearly as an override to the server default, and identifies address as the input to check, though it does not specify address format expectations.

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

Purpose5/5

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

The description clearly states the specific purpose: validating an address and identifying its network. This distinguishes it from sibling validate_mnemonic, which targets a different input type.

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

Usage Guidelines3/5

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

The description notes that the tool works offline, which provides some usage context, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. The differentiation from validate_mnemonic is implied rather than stated.

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

validate_mnemonicA
Read-only

Check a BIP-39 phrase's word count, wordlist and checksum. Works offline.

Args: mnemonic: The space-separated seed phrase to check.

ParametersJSON Schema
NameRequiredDescriptionDefault
mnemonicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety behavior is covered. The description adds meaningful behavioral context beyond annotations: it works offline and performs three specific checks (word count, wordlist, checksum), which helps an agent predict the tool's behavior.

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

Conciseness5/5

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

The description is short, front-loaded with the core purpose, and every line adds value. The 'Args' section is compact and directly supplements the schema without unnecessary filler.

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

Completeness5/5

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

For a one-parameter validator with an output schema and annotations already covering side effects, the description is complete: it states the exact validation scope, offline operation, and argument format. No critical information is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must explain the parameter. It does by defining 'mnemonic' as 'the space-separated seed phrase to check,' which adds format and role beyond the raw schema field name.

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

Purpose5/5

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

The description uses a specific verb ('Check') with a concrete resource ('BIP-39 phrase') and explicitly names the validation dimensions: word count, wordlist, and checksum. This clearly distinguishes it from siblings like generate_mnemonic and validate_address.

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

Usage Guidelines4/5

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

The description provides useful usage context by stating 'Works offline' and by specifying exactly what kind of phrase it validates, so an agent can infer when to choose this tool. It does not explicitly name alternatives or state when not to use it, but this is straightforward for a one-purpose validator.

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. 27 tool updatesv0.1.0
    • First observedconvert_units
    • First observeddecode_psbt
    • First observeddecode_raw_transaction
    • First observeddecode_script
    • First observeddecode_wif
    • First observedderive_addresses
    • First observedderive_entropy_bip85
    • First observedderive_from_path
    • First observedderive_xpub
    • First observedestimate_fee
    • First observedgenerate_mnemonic
    • First observedget_address_from_pubkey
    • First observedget_balance
    • First observedget_block
    • First observedget_block_height
    • First observedget_fee_histogram
    • First observedget_mempool_entry
    • First observedget_mempool_info
    • First observedget_raw_transaction
    • First observedget_recommended_fees
    • First observedget_transaction
    • First observedget_tx_history
    • First observedget_utxos
    • First observedlist_backends
    • First observedping
    • First observedvalidate_address
    • First observedvalidate_mnemonic

TDQS

A3.6/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target a distinct resource/action, and the descriptions clearly specify inputs and outputs. A few pairs such as get_transaction/get_raw_transaction/decode_raw_transaction and estimate_fee/get_recommended_fees are close enough that an agent could pick the wrong one without reading carefully.

Naming Consistency4/5

The vast majority follow a clean snake_case verb_noun pattern: get_*, decode_*, derive_*, and validate_* are consistent. The pattern is only slightly interrupted by bare ping and list_backends, and by a minor mix of list_ vs get_ for similar lookup operations.

Tool Count3/5

27 tools is on the heavy side for a single server, even for a broad Bitcoin domain; the health tools and the fee/mempool cluster could plausibly be consolidated. Each tool has a distinguishable purpose, so the count feels borderline rather than chaotic.

Completeness4/5

The server covers mnemonic handling, key derivation, address/script/PSBT decoding, balances, UTXOs, history, transactions, blocks, fees, and mempool state—strong coverage for a read-only Bitcoin utility. The main gaps are transaction building/broadcasting and block-transaction listing, though the server explicitly positions itself as non-signing and non-broadcasting.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides real-time Bitcoin blockchain data by querying the mempool.space API, offering tools to get address statistics, transaction history, UTXOs, transaction details, and block information.
    7
    7 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Bitcoin blockchain through the Maestro API platform. Provides tools for exploring blocks, transactions, addresses, mempool monitoring, market prices, wallet operations, and node RPC calls on Bitcoin mainnet and testnet4.
    24
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Bitcoin blockchain data including blocks, transactions, addresses, mempool, and fee estimates via the Blockstream.info Esplora API.
    3 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server that monitors a Bitcoin Core full node via JSON-RPC, providing tools to check node status, network info, mempool, and peer information.
    MIT