Skip to main content
Glama

What is this?

An MCP (Model Context Protocol) server that enables Claude to interact with Bitcoin's OP_RETURN functionality. Store documents, create timestamps, deploy tokens, and build custom protocols—all through natural language.

Works with Claude Desktop, Cursor, and any MCP-compatible client.

Supports Bitcoin Core v30+ with up to ~100KB OP_RETURN data.


Related MCP server: MCP Crypto Wallet EVM

Quick Start

# Install from source
git clone https://github.com/EricGrill/mcp-bitcoin-cli.git
cd mcp-bitcoin-cli
pip install -e .

# Run the server
mcp-bitcoin-cli

Add to your Claude Desktop config and start working with Bitcoin:

"Create a timestamp for this document on Bitcoin testnet"


Why Use This?

Feature

Description

Document Storage

Embed documents up to 100KB directly on-chain

Timestamping

Create immutable SHA-256/SHA3 hash commitments

BRC-20 Tokens

Deploy, mint, and transfer tokens using the BRC-20 standard

Custom Protocols

Build your own OP_RETURN protocols with the BTCD envelope format

Offline-Capable

Encode/decode data without a running Bitcoin node

Safety First

Testnet default, dry-run mode, fee warnings


Available Tools

Low-Level Primitives

Offline-capable tools for data encoding and transaction building.

Tool

Description

encode_op_return

Encode arbitrary data into OP_RETURN script format

decode_op_return

Parse and extract data from OP_RETURN scripts

build_op_return_transaction

Construct transactions with OP_RETURN outputs

parse_envelope

Parse BTCD envelope structure from raw bytes

Bitcoin Core Interface

Tools for interacting with a running Bitcoin node.

Tool

Description

get_node_info

Check connection status and network info

list_utxos

List available UTXOs for funding transactions

broadcast_transaction

Send signed transactions (dry-run by default)

get_transaction

Fetch and decode transaction details

search_op_returns

Scan blocks for OP_RETURN transactions

Token Operations (BRC-20)

Create and manage tokens using the BRC-20 standard.

Tool

Description

create_token_deploy

Deploy a new BRC-20 token

create_token_mint

Mint tokens from an existing deployment

create_token_transfer

Create a transfer inscription

Document Storage

Store and retrieve documents on the blockchain.

Tool

Description

embed_document

Prepare documents for on-chain storage

read_document

Parse and extract documents from transactions

Timestamping & Attestation

Create cryptographic proofs of existence.

Tool

Description

create_timestamp

Create SHA-256/SHA3 hash commitments

verify_timestamp

Verify data against on-chain timestamps


Data Envelope Format

All data uses the BTCD envelope format for discoverability and proper parsing:

┌─────────────────────────────────────────────────────────┐
│ OP_RETURN Envelope (variable size, up to ~100KB)        │
├──────────┬──────────┬──────────┬────────────────────────┤
│ Magic    │ Version  │ Type     │ Payload                │
│ (4 bytes)│ (1 byte) │ (1 byte) │ (variable)             │
├──────────┼──────────┼──────────┼────────────────────────┤
│ "BTCD"   │ 0x01     │ See below│ Type-specific data     │
└──────────┴──────────┴──────────┴────────────────────────┘

Type

Hex

Description

RAW

0x00

Raw bytes, no structure

TEXT

0x01

UTF-8 text

JSON

0x02

JSON document

HASH

0x03

Hash commitment (timestamp)

TOKEN

0x04

Token operation (BRC-20)

FILE

0x05

File with content-type

CUSTOM

0x80+

User-defined protocols


Configuration

Claude Desktop Setup

Add to your Claude Desktop config:

Platform

Config Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "bitcoin": {
      "command": "mcp-bitcoin-cli",
      "env": {
        "BITCOIN_NETWORK": "testnet",
        "BITCOIN_CLI_PATH": "/usr/local/bin/bitcoin-cli"
      }
    }
  }
}

Configuration File

Create ~/.mcp-bitcoin-cli/config.toml:

[connection]
method = "cli"              # "cli" or "rpc"
network = "testnet"         # "mainnet", "testnet", "signet", "regtest"

[cli]
path = "bitcoin-cli"        # Path to bitcoin-cli binary
datadir = ""                # Optional: custom datadir

[rpc]
host = "127.0.0.1"
port = 18332                # Testnet default
user = ""
password = ""

[safety]
require_confirmation = true # Prompt before broadcast
dry_run_default = true      # Always dry-run first
max_data_size = 102400      # 100KB limit

Network Ports

Network

Default RPC Port

Mainnet

8332

Testnet

18332

Signet

38332

Regtest

18443


Examples

"Create a SHA-256 timestamp for this contract"
"Verify this document against timestamp in transaction abc123..."
"Create a SHA3-256 hash commitment for my research paper"
"Embed this JSON configuration on the blockchain"
"Store this text document with content-type text/plain"
"Read the document from transaction def456..."
"Deploy a new token called TEST with max supply 21 million"
"Mint 1000 TEST tokens"
"Create a transfer inscription for 500 TEST"
"Encode this hex data into an OP_RETURN script"
"Decode the OP_RETURN from this transaction"
"Build a transaction with this message embedded"

Architecture

┌─────────────────────────────────────────────────────────┐
│                    MCP Server                           │
├─────────────────────────────────────────────────────────┤
│  High-Level Tools                                       │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐   │
│  │ BRC-20 Ops  │ │ Document    │ │ Timestamp/      │   │
│  │ deploy/mint │ │ Storage     │ │ Attestation     │   │
│  └──────┬──────┘ └──────┬──────┘ └────────┬────────┘   │
│         │               │                  │            │
│  ───────┴───────────────┴──────────────────┴─────────  │
│                                                         │
│  Low-Level Primitives                                   │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐   │
│  │ encode_     │ │ decode_     │ │ build_op_return │   │
│  │ op_return   │ │ op_return   │ │ _transaction    │   │
│  └─────────────┘ └─────────────┘ └─────────────────┘   │
├─────────────────────────────────────────────────────────┤
│  Bitcoin Core Interface (configurable)                  │
│  ┌──────────────────┐  ┌────────────────────────────┐  │
│  │ bitcoin-cli      │  │ JSON-RPC (direct)          │  │
│  │ (subprocess)     │  │                            │  │
│  └──────────────────┘  └────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

Safety Features

Feature

Description

Testnet Default

Network locked to testnet unless explicitly configured

Dry-Run Mode

Transactions validated before broadcast by default

Fee Warnings

Alerts for unusually high fees

Size Validation

Rejects data exceeding configured max before building

Network Lock

Can't switch networks mid-session


Development

# Clone
git clone https://github.com/EricGrill/mcp-bitcoin-cli.git
cd mcp-bitcoin-cli

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest -v

# Run tests with coverage
pytest --cov=mcp_bitcoin_cli

Project Structure

src/mcp_bitcoin_cli/
├── __init__.py          # Public exports
├── server.py            # MCP server with 16 tools
├── envelope.py          # BTCD envelope encoding/decoding
├── primitives.py        # OP_RETURN script encoding/decoding
├── config.py            # Configuration loading
├── node/
│   ├── interface.py     # Abstract node interface
│   ├── cli.py           # bitcoin-cli subprocess
│   └── rpc.py           # JSON-RPC direct connection
└── protocols/
    ├── base.py          # Base protocol class
    └── brc20.py         # BRC-20 token protocol

Troubleshooting

  1. Verify Bitcoin Core is running: bitcoin-cli getblockchaininfo

  2. Check network matches config (testnet vs mainnet)

  3. Verify RPC credentials if using JSON-RPC mode

  1. Use broadcast_transaction with dry_run=true first

  2. Check fee rate is sufficient

  3. Verify UTXOs have enough confirmations

  • Bitcoin Core v30+ supports up to ~100KB OP_RETURN

  • Older versions limited to 80 bytes

  • Check max_data_size in config

# Verify installation
python -c "import mcp_bitcoin_cli; print(mcp_bitcoin_cli.__version__)"

# Reinstall if needed
pip install -e ".[dev]"

Contributing

Contributions welcome!

  1. Fork the repository

  2. Create feature branch: git checkout -b feature/my-feature

  3. Make changes and test: pytest

  4. Commit: git commit -m 'Add my feature'

  5. Push: git push origin feature/my-feature

  6. Open a Pull Request



License

MIT

Available Tools

16 tools
broadcast_transactionB

Send signed transaction to the network.

    Args:
        tx_hex: Signed transaction as hex string
        dry_run: If True, only test without broadcasting (default: True)
        max_fee_rate: Maximum fee rate in BTC/kB (optional)

    Returns:
        Dictionary with result. For dry_run, includes 'allowed' status.
        For actual broadcast, includes 'txid'.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
tx_hexYes
dry_runNo
max_fee_rateNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: the tool can perform both dry-run testing and actual broadcasting, and it returns different result structures for each mode. However, it lacks critical details like network requirements, error conditions, or confirmation behavior that would be needed for a higher score.

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 well-structured with clear sections for Args and Returns. Each sentence adds value, though the formatting with indentation could be cleaner. The information is front-loaded with the core purpose stated first.

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?

For a transaction broadcasting tool with no annotations and no output schema, the description does an adequate job explaining parameters and return values. However, it lacks important context about network effects, error handling, and integration with sibling tools, leaving gaps in completeness.

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 must compensate fully. It successfully explains all three parameters: 'tx_hex' as 'Signed transaction as hex string', 'dry_run' with its default and purpose, and 'max_fee_rate' as optional with units. This provides meaningful context beyond the bare schema.

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 ('Send signed transaction') and resource ('to the network'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from its siblings like 'get_transaction' or 'verify_timestamp', which would require 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'build_op_return_transaction' or 'verify_timestamp'. It mentions dry-run functionality but doesn't explain when to choose dry-run versus actual broadcast, leaving usage context unclear.

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

build_op_return_transactionA

Construct OP_RETURN output data for a transaction.

    This prepares the data for inclusion in a transaction but does not
    create or broadcast the transaction itself.

    Args:
        data: Data to embed
        encoding: Data encoding ('utf-8' or 'hex')
        use_envelope: Whether to wrap in BTCD envelope format
        envelope_type: Envelope type if use_envelope is True
            ('raw', 'text', 'json', 'hash', 'token', 'file')

    Returns:
        Dictionary with 'script_hex' for the OP_RETURN output.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
encodingNoutf-8
use_envelopeNo
envelope_typeNoraw

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It clearly states this is a preparation/construction tool that doesn't broadcast transactions, which is valuable behavioral context. However, it doesn't mention error conditions, rate limits, or what happens with invalid inputs. The description adds meaningful context but lacks comprehensive behavioral disclosure.

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?

Perfectly structured with purpose statement first, followed by important behavioral constraint, then organized parameter documentation, and finally return value. Every sentence earns its place with zero wasted words. The information is front-loaded with the most critical details first.

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 4-parameter tool with no annotations and no output schema, the description does well by explaining parameters and return value. However, it could provide more context about error cases or edge conditions. Given the complexity and lack of structured documentation elsewhere, it's mostly complete but has minor 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?

With 0% schema description coverage, the description must compensate, which it does effectively. It explains all 4 parameters with clear semantics: 'data' is 'Data to embed', 'encoding' specifies format options, 'use_envelope' controls wrapping behavior, and 'envelope_type' enumerates specific envelope options. This adds substantial 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?

The description clearly states the specific action ('Construct OP_RETURN output data for a transaction') and resource ('OP_RETURN output data'), distinguishing it from siblings like broadcast_transaction (which actually sends transactions) and decode_op_return (which interprets existing data). The first sentence precisely defines the tool's function.

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

Usage Guidelines5/5

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

The description explicitly states when NOT to use this tool ('does not create or broadcast the transaction itself'), providing clear boundaries. It also implies when to use it (when preparing data for inclusion) and suggests alternatives like broadcast_transaction for the next step in the workflow.

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

create_timestampB

Create a hash commitment for timestamping.

    Args:
        data: Data to timestamp
        encoding: Data encoding ('utf-8' or 'hex')
        hash_algorithm: Hash algorithm to use ('sha256', 'sha3_256')

    Returns:
        Dictionary with hash and prepared script for embedding.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
encodingNoutf-8
hash_algorithmNosha256

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool creates a hash commitment and returns a dictionary, but fails to describe critical behaviors like whether this is a read-only operation, if it requires network access, what happens on failure, or any rate limits. The description is minimal and lacks operational context.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The parameter and return sections are structured clearly, though the Args/Returns formatting is slightly verbose. Every sentence adds value, with no wasted words.

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 the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and parameters well but lacks behavioral context, error handling, and output details (beyond a vague 'dictionary'). For a tool that creates commitments, more operational guidance would be helpful.

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 adds significant meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose (data to timestamp, encoding options, hash algorithm choices) and provides enum-like values for encoding and hash_algorithm, compensating for the schema's lack of documentation. However, it doesn't detail format constraints or examples for the data parameter.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('create') and resource ('hash commitment for timestamping'), distinguishing it from sibling tools like verify_timestamp (which validates) or embed_document (which embeds). It precisely defines what the tool produces.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like embed_document or verify_timestamp. It lacks context about prerequisites, typical use cases, or exclusions, leaving the agent to infer usage from the purpose alone.

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

create_token_deployB

Create a BRC-20 token deployment inscription.

    Args:
        tick: Token ticker (exactly 4 characters)
        max_supply: Maximum token supply
        mint_limit: Maximum amount per mint (optional)
        decimals: Token decimals (default: 18)

    Returns:
        Dictionary with inscription data in various formats.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
tickYes
max_supplyYes
mint_limitNo
decimalsNo

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't explain what 'create' entails operationally - whether this requires blockchain interaction, incurs fees, has side effects, or returns immediately. For a tool that likely creates blockchain inscriptions, this lack of behavioral context is a significant gap.

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

Conciseness4/5

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

The description is efficiently structured with a clear purpose statement followed by well-organized Args and Returns sections. Every sentence serves a purpose - the first establishes context, and the parameter documentation is necessary given the schema's lack of descriptions. It could be slightly more concise in the parameter explanations.

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 the complexity of creating token deployments (likely involving blockchain operations), no annotations, and no output schema, the description is moderately complete. It explains parameters well but lacks crucial behavioral context about what 'create' actually does operationally. The returns section mentions 'dictionary with inscription data' but doesn't detail what that contains, leaving gaps for understanding the tool's full behavior.

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 adds substantial semantic value beyond the 0% schema description coverage. It explains that 'tick' must be exactly 4 characters, provides examples, clarifies optional/default values for mint_limit and decimals, and gives context about what each parameter represents. This compensates well for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly states the verb 'create' and resource 'BRC-20 token deployment inscription', making the purpose immediately understandable. It distinguishes from siblings like create_token_mint and create_token_transfer by specifying this is for deployment rather than minting or transferring tokens. However, it doesn't explicitly contrast with all siblings, so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. While it's clear this creates token deployments, there's no mention of prerequisites, when to choose this over other token operations, or what context requires a deployment inscription. Users must infer usage from the purpose alone.

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

create_token_mintB

Create a BRC-20 token mint inscription.

    Args:
        tick: Token ticker (exactly 4 characters)
        amount: Amount to mint

    Returns:
        Dictionary with inscription data in various formats.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
tickYes
amountYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Create' implies a write operation, the description doesn't address critical aspects like whether this requires network broadcasting, what permissions are needed, if it's irreversible, or potential rate limits. The mention of 'inscription data' hints at output but lacks detail on format or success/failure 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 efficiently structured with a clear opening sentence followed by well-organized 'Args' and 'Returns' sections. Every sentence adds value: the first states the purpose, the second details parameters, and the third outlines the return format, with no redundant or verbose language.

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

Completeness2/5

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

Given the complexity of creating a token mint (a write operation with blockchain implications), no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., idempotency, error handling), output specifics beyond 'Dictionary with inscription data', and how this integrates with sibling tools like 'broadcast_transaction' for execution.

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 adds meaningful context for both parameters: 'tick' is explained as a 'Token ticker (exactly 4 characters)' and 'amount' as 'Amount to mint'. With 0% schema description coverage, this compensates well by clarifying constraints (e.g., 4-character limit) and purpose beyond the bare schema, though it doesn't cover all possible semantic nuances like numeric ranges for 'amount'.

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 ('Create') and resource ('BRC-20 token mint inscription'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'create_token_deploy' or 'create_token_transfer', which likely handle different BRC-20 operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_token_deploy' or 'create_token_transfer'. It doesn't mention prerequisites, constraints, or typical use cases for minting tokens versus deploying or transferring them.

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

create_token_transferB

Create a BRC-20 token transfer inscription.

    Args:
        tick: Token ticker (exactly 4 characters)
        amount: Amount to transfer

    Returns:
        Dictionary with inscription data in various formats.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
tickYes
amountYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates an inscription, implying a write operation, but lacks details on permissions, side effects, rate limits, or error handling. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the main purpose, followed by structured sections for args and returns. It avoids unnecessary fluff, though the formatting with indentation could be slightly cleaner for readability.

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

Completeness2/5

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

Given the complexity of creating a token transfer (a mutation operation) with no annotations and no output schema, the description is incomplete. It lacks information on what the inscription entails, how it interacts with the blockchain, error cases, or example outputs, leaving gaps for an AI agent.

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 adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'tick' is a token ticker with exactly 4 characters and 'amount' is the amount to transfer, clarifying semantics that the schema alone does not provide. However, it doesn't cover units or validation rules for 'amount'.

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 ('Create a BRC-20 token transfer inscription') and resource (token transfer), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_token_deploy' or 'create_token_mint', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'create_token_deploy' or 'create_token_mint', nor does it mention prerequisites or context for usage. It only lists parameters and returns, leaving usage entirely implied.

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

decode_op_returnB

Parse OP_RETURN data from script hex.

    Args:
        script_hex: OP_RETURN script as hex string

    Returns:
        Dictionary with 'data_hex' and 'data_utf8' (if decodable).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
script_hexYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions parsing and returning a dictionary, but lacks details on error handling, performance, or limitations (e.g., what happens if the hex is invalid or if UTF-8 decoding fails). For a tool with no annotation coverage, this leaves significant gaps in understanding its 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 highly concise and well-structured: a brief purpose statement followed by clear sections for arguments and returns. Every sentence adds value without redundancy, making it easy to scan and understand quickly.

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 the tool's moderate complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter, but lacks details on usage context, error handling, and output specifics. Without annotations or an output schema, more behavioral information would improve completeness.

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 adds meaningful context for the single parameter: 'script_hex: OP_RETURN script as hex string.' Since schema description coverage is 0%, this compensates well by explaining what the parameter represents. However, it doesn't provide examples or constraints (e.g., expected format or length), so it's not fully comprehensive.

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 tool's purpose: 'Parse OP_RETURN data from script hex.' It specifies the verb ('parse') and resource ('OP_RETURN data'), making it understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'parse_envelope' or 'search_op_returns', which might have overlapping functionality, so it doesn't reach a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a valid OP_RETURN script, or compare it to siblings like 'encode_op_return' or 'search_op_returns'. Without this context, users might struggle to select the right tool in appropriate scenarios.

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

embed_documentB

Prepare a document for on-chain storage.

    Args:
        content: Document content
        content_type: MIME type of the content (default: 'text/plain')
        encoding: Content encoding ('utf-8' or 'hex')

    Returns:
        Dictionary with prepared document data for embedding.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
content_typeNotext/plain
encodingNoutf-8

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool prepares documents 'for on-chain storage' but doesn't explain what this entails—whether it modifies content, requires specific permissions, has rate limits, or what 'prepared document data' means operationally. The description lacks critical behavioral context for a tool that likely involves data transformation.

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 efficiently structured with a clear purpose statement followed by well-organized parameter and return sections. Every sentence adds value: the purpose sets context, and the parameter explanations are necessary given the schema gaps. No redundant or verbose content is 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?

For a 3-parameter tool with no annotations and no output schema, the description is moderately complete. It covers parameter semantics adequately but lacks behavioral details (e.g., what 'prepared' means, error conditions) and return value specifics beyond a generic 'dictionary.' Given the complexity of on-chain operations, more context would be helpful.

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 adds significant semantic value beyond the input schema, which has 0% description coverage. It explains each parameter's purpose: 'content' as document content, 'content_type' as MIME type with default, and 'encoding' as content encoding with options. This compensates well for the schema's lack of descriptions, though it doesn't detail format constraints beyond the encoding enum.

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 tool's purpose: 'Prepare a document for on-chain storage.' It specifies the action (prepare) and resource (document) with a specific context (on-chain storage). However, it doesn't explicitly differentiate from sibling tools like 'read_document' or 'parse_envelope' beyond the preparation focus.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or compare it to siblings like 'encode_op_return' or 'create_timestamp' which might handle similar on-chain data operations. Usage is implied only by the purpose statement.

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

encode_op_returnB

Encode arbitrary data into OP_RETURN script format.

    Args:
        data: Data to encode (string)
        encoding: Encoding for the data ('utf-8', 'hex'). Default: 'utf-8'

    Returns:
        Dictionary with 'script_hex' containing the OP_RETURN script.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
encodingNoutf-8

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return format ('Dictionary with 'script_hex' containing the OP_RETURN script'), which is helpful, but lacks details on permissions, rate limits, error handling, or side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.

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 well-structured and concise, with a clear purpose statement followed by parameter and return details in a formatted list. Every sentence adds value, and it's front-loaded with the core functionality. Minor improvements could include briefer formatting, but overall it's 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 the complexity (2 parameters, no annotations, no output schema), the description is moderately complete. It covers purpose, parameters, and returns adequately, but lacks usage guidelines and behavioral details like error cases or integration with sibling tools. For a tool in this context, it meets minimum viability but has 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?

The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'data' is 'Data to encode (string)' and 'encoding' specifies the format with examples ('utf-8', 'hex') and a default. This compensates well for the schema's lack of descriptions, though it could elaborate on data constraints or encoding implications.

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 tool's purpose: 'Encode arbitrary data into OP_RETURN script format.' It specifies the verb ('encode') and resource ('arbitrary data'), making it clear what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'decode_op_return' or 'build_op_return_transaction' beyond the encoding focus.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'decode_op_return' (for decoding) or 'build_op_return_transaction' (which might incorporate OP_RETURN encoding), nor does it specify prerequisites or contexts for usage. This leaves the agent without clear direction on tool selection.

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

get_node_infoA

Check connection and network status.

    Returns:
        Dictionary with node information including connection status,
        network, block height, and version.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format ('Dictionary with node information including connection status, network, block height, and version'), which adds value beyond the input schema. However, it doesn't cover other behavioral traits such as error conditions, performance characteristics, or side effects. The description is helpful but incomplete for a tool with zero annotation coverage.

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

Conciseness5/5

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

The description is front-loaded with the core purpose ('Check connection and network status') and efficiently follows with return value details in a structured format. Every sentence earns its place, and there is no wasted verbiage. The use of a clear 'Returns:' section enhances readability without adding bulk.

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 the tool's low complexity (0 parameters, no annotations, no output schema), the description is reasonably complete for a diagnostic tool. It explains what the tool does and what it returns. However, without annotations or an output schema, it could benefit from more detail on error handling or specific use cases to fully compensate for the lack of structured data.

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 input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for zero-parameter tools. It appropriately focuses on the tool's purpose and output without unnecessary parameter details.

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 tool's purpose with specific verbs ('Check connection and network status') and identifies the resource ('node information'). It distinguishes from siblings by focusing on diagnostic/status checking rather than transaction creation, token operations, or data retrieval. However, it doesn't explicitly differentiate from all siblings (e.g., 'verify_timestamp' might also involve status checking).

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

Usage Guidelines3/5

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

The description implies usage context through the phrase 'Check connection and network status,' suggesting this tool should be used for diagnostic or health-check purposes. However, it doesn't provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The context is clear but lacks detailed comparative guidance.

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

get_transactionC

Fetch transaction details.

    Args:
        txid: Transaction ID (hash)

    Returns:
        Dictionary with transaction details.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
txidYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Fetch' implies a read operation, the description doesn't address important behavioral aspects like authentication requirements, rate limits, error conditions, or what happens when an invalid transaction ID is provided. The description mentions a return format ('Dictionary with transaction details') but doesn't specify what fields this dictionary contains.

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 appropriately concise with a clear three-part structure: purpose statement, parameter documentation, and return value description. Each sentence serves a distinct purpose with minimal redundancy. The formatting with clear sections for Args and Returns enhances readability.

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

Completeness2/5

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

For a transaction retrieval tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what transaction details are returned, what blockchain or system this operates on, error handling, or authentication requirements. Given the complexity of transaction data and the lack of structured documentation, the description should provide more context about the operation's scope and limitations.

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

Parameters3/5

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

The description adds basic semantic information about the single parameter ('Transaction ID (hash)'), but with 0% schema description coverage, it doesn't fully compensate for the lack of schema documentation. The description doesn't specify the expected format of the transaction ID (e.g., hex string, length requirements) or provide examples. Since there's only one parameter, the baseline is higher than it would be for multiple undocumented parameters.

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

Purpose3/5

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

The description states the purpose ('Fetch transaction details') which is a clear verb+resource combination, but it doesn't differentiate this tool from potential sibling tools that might also retrieve transaction information. The description is adequate but lacks specificity about what distinguishes this particular transaction fetch operation.

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

Usage Guidelines2/5

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

The description provides no guidance about when to use this tool versus alternatives. With multiple sibling tools available (like broadcast_transaction, decode_op_return, parse_envelope), there's no indication of when get_transaction is the appropriate choice versus other transaction-related tools.

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

list_utxosB

List available UTXOs for funding transactions.

    Args:
        min_confirmations: Minimum confirmations required (default: 1)
        min_amount: Minimum UTXO amount in BTC (default: 0.0)

    Returns:
        Dictionary with list of UTXOs.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
min_confirmationsNo
min_amountNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists UTXOs but does not describe key behaviors such as whether this is a read-only operation, potential rate limits, authentication requirements, or how the output is structured (beyond a vague 'Dictionary with list of UTXOs'). This is inadequate for a tool with no 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 appropriately sized and front-loaded, with the core purpose stated first, followed by parameter and return details in a structured format. It avoids unnecessary verbosity, though the inclusion of 'Returns: Dictionary with list of UTXOs' is somewhat vague and could be more precise, but overall it is 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 the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and parameters adequately but lacks details on behavioral traits, output structure, and usage context. This results in a minimal viable description with clear gaps, especially for a tool with no annotations to supplement it.

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 adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'min_confirmations' is the 'Minimum confirmations required' and 'min_amount' is the 'Minimum UTXO amount in BTC', including default values. This compensates well for the schema's lack of descriptions, though it could provide more context on units or constraints.

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 tool's purpose: 'List available UTXOs for funding transactions.' It specifies the verb ('List') and resource ('UTXOs') with a functional context ('for funding transactions'), which is clear and actionable. However, it does not explicitly differentiate from sibling tools like 'get_transaction' or 'search_op_returns', which might also involve transaction data, so it misses full sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions 'for funding transactions' as a general context, but does not specify prerequisites, exclusions, or compare to sibling tools such as 'get_transaction' for retrieving specific transaction details. This lack of explicit usage instructions leaves the agent without clear direction.

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

parse_envelopeA

Parse BTCD envelope structure from raw bytes.

    Args:
        data_hex: Hex-encoded envelope data

    Returns:
        Dictionary with envelope fields: magic, version, type, payload_hex.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
data_hexYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool parses data but doesn't cover error handling (e.g., invalid hex), performance traits (e.g., speed or limits), or side effects. This leaves gaps in understanding how the tool behaves beyond its basic function.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by structured Args and Returns sections. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-organized for quick understanding.

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 the tool's moderate complexity (parsing binary data), no annotations, and no output schema, the description is partially complete. It covers the purpose and return format but lacks details on error cases, input validation, or behavioral traits, which are important for a parsing tool with unstructured inputs.

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 adds significant meaning beyond the input schema, which has 0% coverage. It specifies that data_hex is 'Hex-encoded envelope data', clarifying the format and purpose, though it could detail constraints like length or valid characters. With one parameter and low schema coverage, this compensation is strong but not exhaustive.

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 action ('Parse') and target resource ('BTCD envelope structure from raw bytes'), distinguishing it from sibling tools like decode_op_return or read_document. It precisely defines what the tool does without being vague or tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like decode_op_return or verify_timestamp. It lacks context about prerequisites, such as needing raw bytes from a specific source, and doesn't mention any exclusions or complementary tools.

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

read_documentB

Retrieve and parse document from transaction data.

    Args:
        data_hex: Hex-encoded document data (from OP_RETURN)

    Returns:
        Dictionary with parsed document content.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
data_hexYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool 'retrieves and parses' and returns a dictionary, but doesn't describe what parsing entails, potential error conditions, format of the returned dictionary, or any limitations. For a parsing tool with zero annotation coverage, this leaves significant behavioral aspects undocumented.

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 appropriately concise with two clear sentences stating purpose and return value, plus parameter documentation in a structured Args/Returns format. Every element serves a purpose, though the parameter documentation could be slightly more integrated into the main description flow rather than as a separate block.

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 the tool's moderate complexity (parsing operation), no annotations, no output schema, and 0% schema description coverage, the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks details about parsing behavior, error handling, and return format specifics that would be needed for confident tool invocation.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'data_hex' by specifying it should be 'hex-encoded document data (from OP_RETURN)', which provides crucial semantic information not present in the schema (which has 0% description coverage). This compensates well for the schema's lack of parameter documentation, though it doesn't detail format constraints or validation rules.

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 tool's purpose with specific verbs ('retrieve and parse') and identifies the resource ('document from transaction data'). It distinguishes from siblings like 'decode_op_return' or 'parse_envelope' by focusing specifically on document content rather than general decoding or envelope parsing. However, it doesn't explicitly contrast with these alternatives in the description text itself.

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 minimal usage guidance. It mentions the source of data ('from OP_RETURN') which implies some context, but doesn't specify when to use this tool versus alternatives like 'decode_op_return' or 'parse_envelope' that also handle OP_RETURN data. No explicit when/when-not guidance or prerequisites are provided.

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

search_op_returnsB

Scan blocks for OP_RETURN transactions.

    Note: This is a placeholder that will require additional implementation
    for block scanning. Currently returns an error indicating the feature
    requires direct block access.

    Args:
        start_height: Starting block height
        end_height: Ending block height (optional, defaults to start_height)
        limit: Maximum number of results (default: 100)

    Returns:
        Dictionary with found OP_RETURN transactions.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
start_heightYes
end_heightNo
limitNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool is a placeholder that returns an error indicating the feature requires direct block access, which is crucial behavioral context. However, it lacks details on permissions, rate limits, or error handling beyond this, leaving gaps for a tool with 3 parameters.

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

Conciseness3/5

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

The description is appropriately sized but not optimally structured. The first sentence is clear, but the note about placeholder status, while important, might be better placed later. The parameter and return sections are helpful but could be more integrated. Overall, it's functional but not perfectly front-loaded.

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 the complexity (3 parameters, no annotations, no output schema), the description is moderately complete. It covers the tool's purpose, placeholder status, parameters, and return value. However, for a tool that scans blocks and returns transactions, more details on output format, error cases, or implementation status would enhance completeness.

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 description coverage is 0%, so the description must compensate. It adds meaning by explaining each parameter's purpose: 'start_height' as the starting block height, 'end_height' as optional ending block height with default behavior, and 'limit' as maximum results with a default. This goes beyond the schema's basic types and titles, though it could be more detailed on constraints.

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 tool's purpose: 'Scan blocks for OP_RETURN transactions.' It specifies both the verb ('scan') and the resource ('blocks for OP_RETURN transactions'), making the function evident. However, it doesn't explicitly differentiate from siblings like 'decode_op_return' or 'encode_op_return', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions that it's a placeholder requiring additional implementation, but this doesn't help an agent decide between this and sibling tools like 'decode_op_return' or 'get_transaction'. There's no explicit when/when-not or alternative recommendations.

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

verify_timestampB

Verify data against an on-chain timestamp hash.

    Args:
        data: Original data to verify
        expected_hash: Expected hash value (hex)
        encoding: Data encoding ('utf-8' or 'hex')
        hash_algorithm: Hash algorithm used ('sha256', 'sha3_256')

    Returns:
        Dictionary with verification result.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
expected_hashYes
encodingNoutf-8
hash_algorithmNosha256

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool verifies data against a hash but doesn't describe what 'on-chain timestamp' entails, whether it requires network access, error handling, or the structure of the returned dictionary. For a verification tool with zero annotation coverage, this is a significant gap in transparency.

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 appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured list of args and returns. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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 the tool's moderate complexity (4 parameters, no annotations, no output schema), the description is partially complete. It covers the purpose and parameters well but lacks details on behavioral aspects (e.g., how verification works, error cases) and the return value structure. Without an output schema, the description should ideally explain the dictionary's contents, which it doesn't, leaving 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?

The description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains each parameter's purpose (e.g., 'data: Original data to verify', 'encoding: Data encoding') and provides enum-like details for 'encoding' and 'hash_algorithm'. This compensates well for the schema's lack of descriptions, though it doesn't cover all nuances like format constraints.

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 tool's purpose: 'Verify data against an on-chain timestamp hash.' It specifies the verb ('verify') and resource ('data against an on-chain timestamp hash'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'create_timestamp' or 'parse_envelope', which would require 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It lists parameters but doesn't explain scenarios for verification, prerequisites (e.g., needing a pre-existing timestamp), or comparisons to siblings like 'decode_op_return' or 'read_document'. This leaves usage context implied at best.

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

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, such as broadcast_transaction for sending transactions and get_node_info for node status. However, there is some overlap between embed_document and encode_op_return, both preparing data for embedding, which could cause minor confusion. Overall, the descriptions clarify differences, but a few tools have similar scopes.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout, like broadcast_transaction and decode_op_return, with clear and descriptive names. There are minor deviations, such as get_node_info using 'get' while others use verbs like 'create' or 'list', but the pattern remains largely predictable and readable.

Tool Count4/5

With 16 tools, the count is slightly high but reasonable for a Bitcoin CLI server covering transactions, tokens, documents, and network operations. It feels comprehensive without being overwhelming, though it borders on heavy for the scope. Each tool appears to serve a specific function, justifying its inclusion.

Completeness4/5

The toolset provides good coverage for Bitcoin operations, including transaction handling, token management (BRC-20), document embedding, and network queries. Minor gaps exist, such as no direct tools for wallet management or advanced blockchain queries, but core workflows like creating, broadcasting, and verifying are well-supported, allowing agents to work effectively.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enable AI assistants to interact directly with Bitcoin Ordinals inscriptions. Seamlessly integrates with Goose and Claude Desktop to retrieve and display inscription content from transactions.
    1
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Stacks blockchain through Claude Desktop. Manage wallets, trade tokens on DEXs, stack STX for Bitcoin rewards, and track portfolio—all through natural conversation.
    30
    6
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EricGrill/mcp-bitcoin-cli'

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