Skip to main content
Glama

BNBChain MCP (Model Context Protocol)

A powerful toolkit for interacting with BNB Chain and other EVM-compatible networks through natural language processing and AI assistance.

Description

BNBChain MCP is a Model Context Protocol implementation that enables seamless interaction with blockchain networks through AI-powered interfaces. It provides a comprehensive set of tools and resources for blockchain development, smart contract interaction, and network management.

Related MCP server: honeypot-detector-mcp

Core Modules

The project is organized into several core modules:

  • Blocks: Query and manage blockchain blocks

  • Contracts: Interact with smart contracts

  • Network: Network information and management

  • NFT: NFT (ERC721/ERC1155) operations

  • Tokens: Token (ERC20) operations

  • Transactions: Transaction management

  • Wallet: Wallet operations and management

  • Common: Shared utilities and types

  • Greenfield: Support file management operations on Greenfield network including, uploading, downloading, and managing files and buckets

  • Additional features coming soon (Greenfield, Swap, Bridge, etc.)

  • Agents (ERC-8004): Register and resolve on-chain AI agent identities (ERC-8004 Trustless Agents) on BSC and BSC Testnet

Important Notes

We do not recommend deploying this MCP Server on the public internet. (1) The SSE endpoint has no authentication—anyone who can reach it can use the server. (2) There is no centralized service that custodies private keys or funds; keys and signing are the responsibility of the client. If you still need to deploy it publicly, add an authentication layer in front (e.g. API keys, JWT, or a reverse proxy with auth), or deploy a keyless version that only exposes read-only or non-sensitive tools.

Credentials: Prefer setting PRIVATE_KEY in the MCP server environment. Do not pass the private key in tool parameters when avoidable, as it may be stored in conversation history, client logs, or request logs and lead to exposure.

Transfer and payment confirmation

Transfer and payment tools (e.g. transfer_native_token, transfer_erc20, approve_token_spending, transfer_nft, transfer_erc1155, gnfd_deposit_to_payment, gnfd_withdraw_from_payment, gnfd_create_payment_account) use a preview-then-confirm flow by default so that no funds move until the user explicitly confirms.

  • Default behavior: Calling a transfer or payment tool returns a preview (recipient, amount, network, etc.) and a short-lived confirmToken. No transaction is sent. To execute, call the confirm_transfer tool with that confirmToken and your privateKey. The token expires after 5 minutes.

  • Skipping confirmation (per call): Pass skipConfirmation: true in the tool arguments when the caller has already confirmed or when running in an automated script. The tool will then execute immediately and return the transaction result.

  • Skipping confirmation (server-wide): Set the environment variable BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION=true so that all transfer/payment tools execute immediately without returning a preview. Use this for headless or scripted environments where you do not need a confirmation step.

Example flow with confirmation:

  1. Call transfer_native_token with toAddress, amount, network (and optionally privateKey). Do not set skipConfirmation.

  2. The server returns { preview: { toAddress, amount, network }, confirmToken: "...", message: "..." }.

  3. Review the preview, then call confirm_transfer with confirmToken and privateKey to execute the transfer.

Integration with Cursor

To connect to the MCP server from Cursor:

  1. Open Cursor and go to Settings (gear icon in the top right)

  2. Click on "MCP" in the left sidebar

  3. Click "Add new global MCP server"

  4. Enter the following details:

Default mode

{
  "mcpServers": {
    "bnbchain-mcp": {
      "command": "npx",
      "args": ["-y", "@bnb-chain/mcp@latest"],
      "env": {
        "PRIVATE_KEY": "your_private_key_here. (optional)",
        "BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
      }
    }
  }
}
  • PRIVATE_KEY: Optional. Prefer setting here instead of passing in tool parameters.

  • BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION: Optional. Set to "true" to make all transfer/payment tools execute immediately (no preview step). Default "false" uses the preview-then-confirm flow.

SSE mode

{
  "mcpServers": {
    "bnbchain-mcp": {
      "command": "npx",
      "args": ["-y", "@bnb-chain/mcp@latest", "--sse"],
      "env": {
        "PRIVATE_KEY": "your_private_key_here. (optional)",
        "BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
      }
    }
  }
}

Integration with Claude Desktop

To connect to the MCP server from Claude Desktop:

  1. Open Claude Desktop and go to Settings

  2. Click on "Developer" in the left sidebar

  3. Click the "Edit Config" Button

  4. Add the following configuration to the claude_desktop_config.json file:

{
  "mcpServers": {
    "bnbchain-mcp": {
      "command": "npx",
      "args": ["-y", "@bnb-chain/mcp@latest"],
      "env": {
        "PRIVATE_KEY": "your_private_key_here",
        "BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
      }
    }
  }
}

Optional env: BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION=true to execute transfers immediately without preview/confirm.

  1. Save the file and restart Claude Desktop

Once connected, you can use all the MCP prompts and tools directly in your Claude Desktop conversations. For example:

  • "Analyze this address: 0x123..."

  • "Explain the EVM concept of gas"

  • "Check the latest block on BSC"

Integration with Other Clients

If you want to integrate BNBChain MCP into your own client, please check out the examples directory for more detailed information and reference implementations.

The examples demonstrate:

  • How to set up the MCP client

  • Authentication and configuration

  • Making API calls to interact with blockchain networks

  • Handling responses and errors

  • Best practices for integration

Local Development

Prerequisites

Quick Start

  1. Clone the repository:

git clone https://github.com/bnb-chain/bnbchain-mcp.git
cd bnbchain-mcp
  1. Set up environment variables:

cp .env.example .env

Edit .env file with your configuration:

  • PRIVATE_KEY: Your wallet private key (required for transaction operations)

  • LOG_LEVEL: Set logging level (DEBUG, INFO, WARN, ERROR)

  • PORT: Server port number (default: 3001)

  1. Install dependencies and start development server:

# Install project dependencies
bun install

# Start the development server
bun dev:sse

Testing with MCP Clients

Configure the local server in your MCP clients using this template:

{
  "mcpServers": {
    "bnbchain-mcp": {
      "url": "http://localhost:3001/sse",
      "env": {
        "PRIVATE_KEY": "your_private_key_here"
      }
    }
  }
}

Testing with Web UI

We use @modelcontextprotocol/inspector for testing. Launch the test UI:

bun run test

Available Scripts

  • bun dev:sse: Start development server with hot reload

  • bun build: Build the project

  • bun test: Run test suite

Available Prompts and Tools

Prompts

Name

Description

analyze_block

Analyze a block and provide detailed information about its contents

analyze_transaction

Analyze a specific transaction

analyze_address

Analyze an EVM address

interact_with_contract

Get guidance on interacting with a smart contract

explain_evm_concept

Get an explanation of an EVM concept

compare_networks

Compare different EVM-compatible networks

analyze_token

Analyze an ERC20 or NFT token

how_to_register_mcp_as_erc8004_agent

Get guidance on registering an MCP server as an ERC-8004 agent

Tools

Name

Description

get_block_by_hash

Get a block by hash

get_block_by_number

Get a block by number

get_latest_block

Get the latest block

get_transaction

Get detailed information about a specific transaction by its hash

get_transaction_receipt

Get a transaction receipt by its hash

estimate_gas

Estimate the gas cost for a transaction

transfer_native_token

Transfer native tokens (BNB, ETH, MATIC, etc.) to an address

approve_token_spending

Approve another address to spend your ERC20 tokens

transfer_nft

Transfer an NFT (ERC721 token) from one address to another

transfer_erc1155

Transfer ERC1155 tokens to another address

transfer_erc20

Transfer ERC20 tokens to an address

get_address_from_private_key

Get the EVM address derived from a private key

get_chain_info

Get chain information for a specific network

get_supported_networks

Get list of supported networks

resolve_ens

Resolve an ENS name to an EVM address

is_contract

Check if an address is a smart contract or an externally owned account (EOA)

read_contract

Read data from a smart contract by calling a view/pure function

write_contract

Write data to a smart contract by calling a state-changing function

get_erc20_token_info

Get ERC20 token information

get_native_balance

Get native token balance for an address

get_erc20_balance

Get ERC20 token balance for an address

get_nft_info

Get detailed information about a specific NFT

check_nft_ownership

Check if an address owns a specific NFT

get_erc1155_token_metadata

Get the metadata for an ERC1155 token

get_nft_balance

Get the total number of NFTs owned by an address from a specific collection

get_erc1155_balance

Get the balance of a specific ERC1155 token ID owned by an address

ERC-8004 Agent tools

Register and resolve AI agents on the ERC-8004 Identity Registry (Trustless Agents). Supported networks: BSC (56), BSC Testnet (97), Ethereum, Base, Polygon, and their testnets where the official registry is deployed. The agentURI should point to a JSON metadata file following the Agent Metadata Profile (name, description, image, and services such as MCP endpoint).

Name

Description

register_erc8004_agent

Register an agent on the ERC-8004 Identity Registry; returns agent ID

set_erc8004_agent_uri

Update the metadata URI for an existing ERC-8004 agent (owner only)

get_erc8004_agent

Get agent info (owner and tokenURI) from the Identity Registry

get_erc8004_agent_wallet

Get the verified payment wallet for an agent (for x402 / payments)

Greenfield tools

Name

Description

gnfd_get_bucket_info

Get detailed information about a specific bucket

gnfd_list_buckets

List all buckets owned by an address

gnfd_create_bucket

Create a new bucket

gnfd_delete_bucket

Delete a bucket

gnfd_get_object_info

Get detailed information about a specific object

gnfd_list_objects

List all objects in a bucket

gnfd_upload_object

Upload an object to a bucket

gnfd_download_object

Download an object from a bucket

gnfd_delete_object

Delete an object from a bucket

gnfd_create_folder

Create a folder in a bucket

gnfd_get_account_balance

Get the balance for an account

gnfd_deposit_to_payment

Deposit funds into a payment account

gnfd_withdraw_from_payment

Withdraw funds from a payment account

gnfd_disable_refund

Disable refund for a payment account (IRREVERSIBLE)

gnfd_get_payment_accounts

List all payment accounts owned by an address

gnfd_get_payment_account_info

Get detailed information about a payment account

gnfd_create_payment

Create a new payment account

gnfd_get_payment_balance

Get payment account balance

Supported Networks

Supports BSC, opBNB, Greenfield, Ethereum, and other major EVM-compatible networks. For more details, see src/evm/chains.ts.

ERC-8004 agent registration is available on chains where the official registry is deployed: BSC (56), BSC Testnet (97), Ethereum (1), Sepolia (11155111), Base (8453), Base Sepolia (84532), Polygon (137), Polygon Amoy (80002), Arbitrum (42161), Arbitrum Sepolia (421614). Private key is used only to sign the registration or update transaction and is not stored or logged.

Contributing

We welcome contributions to BNBChain MCP! Here's how you can help:

  1. Fork the repository

  2. Create a feature branch

  3. Commit your changes

  4. Push to your branch

  5. Create a Pull Request

Please ensure your code follows our coding standards and includes appropriate tests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

References and Acknowledgments

This project is built upon and inspired by the following open-source projects:

We extend our gratitude to the original authors for their contributions to the blockchain ecosystem.

Available Tools

26 tools
approve_token_spendingA

Approve another address (like a DeFi protocol or exchange) to spend your ERC20 tokens. This is often required before interacting with DeFi protocols.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesThe amount of tokens to approve in token units, not wei (e.g., '1000' to approve spending 1000 tokens). Use a very large number for unlimited approval.
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the token owner account in hex format (with or without 0x prefix). SECURITY: This is used only for transaction signing and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4
spenderAddressYesThe contract address being approved to spend your tokens (e.g., a DEX or lending protocol)
tokenAddressYesThe contract address of the ERC20 token to approve for spending (e.g., '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' for USDC on Ethereum)

TDQS

A4.1/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 explains the purpose and context but doesn't mention important behavioral aspects like transaction costs (gas fees), whether approvals are revocable, security implications of unlimited approvals, or what the tool returns. For a financial transaction tool with zero annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose, and the second provides important usage context. There's zero wasted language or redundancy.

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 financial transaction tool with 5 parameters, no annotations, and no output schema, the description is adequate but incomplete. It covers the 'what' and 'why' but lacks information about transaction behavior, security considerations, error conditions, or return values. Given the complexity and absence of structured metadata, more completeness would be expected.

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 100% description coverage, so the baseline is 3. The description adds value by explaining the broader context (DeFi protocol interactions) and the purpose of approvals, which helps the agent understand why these parameters matter beyond their technical definitions in 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 clearly states the specific action ('Approve another address to spend your ERC20 tokens') and the resource involved (ERC20 tokens). It distinguishes this from sibling tools like 'transfer_erc20' or 'write_contract' by focusing specifically on token spending approvals for DeFi interactions.

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 clear context about when to use this tool ('often required before interacting with DeFi protocols'), giving practical guidance. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools, which prevents a perfect score.

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

check_nft_ownershipB

Check if an address owns a specific NFT

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
ownerAddressYesThe wallet address or ENS name to check ownership against (e.g., '0x1234...' or 'vitalik.eth')
tokenAddressYesThe contract address or ENS name of the NFT collection (e.g., '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' for BAYC or 'boredapeyachtclub.eth')
tokenIdYesThe ID of the NFT to check (e.g., '1234')

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 full burden. It states the tool's function but lacks behavioral details like whether it requires authentication, has rate limits, returns a boolean or detailed ownership proof, or handles errors. This is a significant gap 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., boolean, ownership details, error formats) or behavioral aspects like performance or limitations. For a tool with 4 parameters and no structured output, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, providing detailed descriptions for all parameters. The description adds no additional parameter semantics beyond the schema, which already explains network, ownerAddress, tokenAddress, and tokenId. Baseline 3 is appropriate when schema does the heavy lifting.

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 specific verb ('Check') and resource ('if an address owns a specific NFT'), distinguishing it from siblings like get_nft_balance (which checks quantity) or get_nft_info (which retrieves metadata). It precisely communicates the verification function.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention using get_nft_balance for checking ownership of any NFT in a collection or get_nft_info for metadata retrieval. The description only states what it does, not when it's appropriate.

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

estimate_gasC

Estimate the gas cost for a transaction

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoThe transaction data as a hex string
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
toYesThe recipient address
valueNoThe amount of ETH to send in ether (e.g., '0.1')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic function without behavioral details. It doesn't disclose if this is a read-only operation (implied but not explicit), whether it requires network access, potential rate limits, error conditions, or what the output looks like (e.g., gas units or cost in currency).

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.

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 gas estimation in blockchain contexts, no annotations, and no output schema, the description is insufficient. It lacks details on return values (e.g., gas limit vs. gas price), network-specific behaviors, or error handling, leaving significant gaps for an agent to operate effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters (data, network, to, value). The description adds no additional meaning beyond the schema's details, such as explaining parameter interactions or default behaviors, meeting the baseline for high coverage.

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

Purpose4/5

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

The description clearly states the verb ('estimate') and resource ('gas cost for a transaction'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from siblings like 'get_transaction' or 'write_contract' that might also involve gas considerations, 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 doesn't mention prerequisites (e.g., needing transaction details), contrast with siblings (e.g., 'write_contract' for actual execution), or specify use cases (e.g., pre-execution planning), leaving the agent with minimal context.

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

get_address_from_private_keyB

Get the EVM address derived from a private key

ParametersJSON Schema
NameRequiredDescriptionDefault
privateKeyNoPrivate key in hex format (with or without 0x prefix). SECURITY: This is used only for address derivation and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4

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 the full burden. It states the tool derives an address and implies it's a read-only operation, but doesn't disclose behavioral traits like security handling (e.g., whether the private key is transmitted securely), error conditions, or performance aspects. The description adds basic context but lacks depth for a security-sensitive tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse 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 (involves cryptographic derivation) and no output schema, the description is minimally adequate. It covers the basic purpose but lacks details on output format (e.g., address format), error handling, or security implications, which are important for a tool handling private keys. With no annotations, it should provide more context.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'privateKey' well-documented in the schema (including format and security note). The description doesn't add any meaningful semantics beyond what the schema provides, such as examples or edge cases, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('EVM address derived from a private key'), making the purpose specific and understandable. It doesn't explicitly differentiate from siblings like 'resolve_ens' or 'get_chain_info', but the focus on private key derivation is distinct enough for most contexts.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if this is for address derivation only (vs. resolving ENS names or checking balances), or any prerequisites like needing a valid private key format. The description lacks context for tool selection.

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

get_block_by_hashC

Get a block by hash

ParametersJSON Schema
NameRequiredDescriptionDefault
blockHashYesThe block hash to look up
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

C2.6/5.0
Behavior1/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It only states the action without revealing whether the returned block includes transactions, how missing hashes are handled, or any network-specific behavior. No additional context is added.

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 exceptionally concise at one sentence, with no wasted words. However, its brevity borders on under-specification, though it still serves a clear purpose and is not merely a tautology.

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

Completeness1/5

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

The tool lacks an output schema and annotations, and the description provides no context about return values, block structure, or how it fits among many block-related sibling tools. This is inadequate for an agent to select and invoke it confidently.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters (network and blockHash) having meaningful descriptions. The tool description itself adds no parameter information, but the schema already fully documents them, warranting the baseline score.

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 'Get a block by hash' uses a specific verb and resource, clearly distinguishing it from block-by-number or latest-block tools. However, it is minimal and does not explicitly contrast with sibling tools beyond the 'by hash' qualifier.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_block_by_number or get_latest_block. There are no exclusions, prerequisites, or alternative suggestions.

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

get_block_by_numberC

Get a block by number

ParametersJSON Schema
NameRequiredDescriptionDefault
blockNumberYesThe block number to look up
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only says 'Get a block by number' and provides no information about return format, whether transactions are included, network behavior, or any side effects. The description adds no behavioral transparency beyond the tool's name.

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

Conciseness2/5

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

The description is a single sentence, but it's essentially a restatement of the tool name. It is under-specified rather than effectively concise, lacking necessary context about what a block includes or when to use this tool, so it doesn't earn its place.

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?

The tool has no output schema and no annotations, so the description should explain return values and usage context. It fails to mention what fields the block contains, how it differs from other block-related tools, or any network constraints. The description is too minimal to be complete for an agent selecting among many similar tools.

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

Parameters3/5

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

The schema already describes both parameters with 100% coverage, including network defaults and blockNumber description. The tool description adds no extra meaning to the parameters, so it neither helps nor harms beyond the baseline provided by the 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 states the verb 'Get' and the resource 'block by number', clearly indicating the core function. However, it doesn't distinguish this from sibling tools like get_block_by_hash, get_latest_block, or get_block_with_transactions, so it doesn't fully clarify what kind of block data is returned.

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 when to use get_block_by_hash or get_latest_block. It also doesn't mention network-specific usage or any prerequisites, leaving the agent without context for tool selection.

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

get_chain_infoC

Get chain information for a specific network

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

C2.7/5.0
Behavior1/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 does not mention whether the operation is read-only, requires authentication, has rate limits, or what side effects exist. The description provides no behavioral detail beyond the bare action of 'getting'.

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, front-loaded with the verb, and contains no filler or repetition. However, it is so terse that it sacrifices informative detail, making it less effective than a slightly longer description that clarifies the output or intended use.

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?

The tool is simple (1 parameter, no output schema) but the description still leaves significant gaps. It does not define what 'chain information' includes, what the return value looks like, or when this tool should be chosen over similar network-related tools. Given no output schema, the description should explain the returned data, but it does not.

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

Parameters3/5

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

The input schema already provides full coverage of the sole parameter with examples, accepted formats (name or chain ID), and a default value. The description's phrase 'for a specific network' adds no additional semantic meaning beyond what the schema's parameter description already conveys.

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 chain information for a specific network'. It is specific enough to know it fetches data about a network, but it does not distinguish itself from closely related siblings like get_chain_id or get_network_metadata, and the term 'chain information' is vague about what fields are returned.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or how it differs from sibling tools such as get_network_metadata or get_chain_id. The description simply repeats the function's purpose without usage context.

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

get_erc1155_balanceB

Get the balance of a specific ERC1155 token ID owned by an address. ERC1155 allows multiple tokens of the same ID, so the balance can be greater than 1.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
ownerAddressYesThe wallet address to check the token balance for (e.g., '0x1234...')
tokenAddressYesThe contract address of the ERC1155 token collection (e.g., '0x76BE3b62873462d2142405439777e971754E8E77')
tokenIdYesThe ID of the specific token to check the balance for (e.g., '1234')

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only mentions that ERC1155 allows multiple tokens per ID. It doesn't disclose behavioral traits like rate limits, authentication needs, error conditions, or what the return value looks like (e.g., numeric balance, format). This leaves significant gaps for a tool that queries blockchain data.

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 perfectly concise with two sentences that directly explain the tool's purpose and a key characteristic of ERC1155 tokens. Every word earns its place with zero wasted information.

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 read-only query tool with full schema coverage but no annotations or output schema, the description is minimally adequate. It explains what the tool does but lacks important context about return format, error handling, and network behavior that would help an agent use it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all 4 parameters. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline of 3 when schema does the heavy lifting.

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 ('Get the balance') and resource ('ERC1155 token ID owned by an address'), distinguishing it from sibling tools like 'get_erc20_balance' and 'get_nft_balance' by specifying the ERC1155 token standard. It also explains the unique characteristic of ERC1155 tokens allowing multiple copies of the same ID.

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 'get_nft_balance' or 'check_nft_ownership', nor does it mention prerequisites or exclusions. It simply describes what the tool does without contextual usage instructions.

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

get_erc1155_token_uriA

Get the metadata URI for an ERC1155 token (multi-token standard used for both fungible and non-fungible tokens). The URI typically points to JSON metadata about the token.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
tokenAddressYesThe contract address of the ERC1155 token collection (e.g., '0x76BE3b62873462d2142405439777e971754E8E77')
tokenIdYesThe ID of the specific token to query metadata for (e.g., '1234')

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 describes what the tool does (retrieves a URI) and mentions the URI typically points to JSON metadata, but doesn't cover important aspects like whether this is a read-only operation, potential rate limits, error conditions, or authentication requirements for a blockchain query tool.

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

Conciseness5/5

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

The description is efficiently structured in two sentences: the first states the core purpose, and the second provides helpful context about what the URI typically contains. Every sentence adds value with zero 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?

For a read-only query tool with no output schema and no annotations, the description adequately covers the basic purpose and provides helpful context about ERC1155 tokens and metadata. However, it doesn't describe the return format (what the URI looks like, whether it's resolved) or potential behavioral aspects like error handling, which would be valuable given the lack of structured output documentation.

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

Parameters3/5

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

The schema description coverage is 100%, so all parameters are well-documented in the schema itself. The description doesn't add any parameter-specific information beyond what's in the schema, but the baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.

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 ('Get the metadata URI') and resource ('for an ERC1155 token'), with additional context about the token standard. It distinguishes from siblings like get_erc1155_balance (which gets balance) or get_nft_info (which might get different metadata).

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 by mentioning 'ERC1155 token' and 'metadata URI', suggesting it's for retrieving token metadata URIs. However, it doesn't explicitly state when to use this tool versus alternatives like get_nft_info or provide any exclusion criteria or prerequisites.

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

get_erc20_balanceC

Get ERC20 token balance for an address

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe address to check balance for
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
tokenAddressYesThe ERC20 token contract address

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't describe traits like whether this is a read-only operation (implied but not explicit), potential rate limits, error conditions, or what the return value looks like (e.g., balance in token units). 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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 blockchain operations, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format (e.g., numeric balance, decimals), error handling, or behavioral traits like network support details. For a tool with 3 parameters and no structured output, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (address, network, tokenAddress) with clear descriptions. The description doesn't add any additional meaning beyond what's in the schema, such as explaining parameter interactions or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Get') and resource ('ERC20 token balance for an address'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_native_balance' or 'get_erc1155_balance', which would require mentioning it's specifically for ERC20 tokens (though implied by the name).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify to use 'get_native_balance' for native tokens or 'get_erc1155_balance' for ERC1155 tokens, nor does it mention prerequisites like needing a token contract address. This leaves the agent without contextual usage instructions.

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

get_erc20_token_infoC

Get ERC20 token information

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
tokenAddressYesThe ERC20 token contract address

TDQS

C2.7/5.0
Behavior1/5

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

With no annotations, the description carries full responsibility for disclosing behavioral traits. It does not state that the operation is read-only, what data is returned, whether it requires any special network handling, or any potential error conditions. The phrase 'Get ERC20 token information' is too vague to convey any meaningful behavioral 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 a single concise sentence with no wasted words, making it efficient. However, it is arguably too terse to be useful, bordering on under-specification rather than being a well-structured description. It earns a 4 for brevity but lacks substantive content.

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?

The description is incomplete for a tool with no output schema and no annotations. It does not explain what information is returned, the supported networks, or the impact of the optional 'network' parameter. The schema covers parameter formats, but the description fails to provide the necessary context about the tool's behavior and return value.

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

Parameters3/5

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

Schema description coverage is 100% as both 'network' and 'tokenAddress' have descriptive text in the schema. The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states that the tool retrieves ERC20 token information using a specific verb ('Get') and resource ('ERC20 token information'). However, it does not specify what exact information is returned (e.g., name, symbol, decimals, total supply) and does not distinguish it from sibling tools like get_token_supply_info or get_erc20_balance.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool instead of alternatives. There are no mentions of prerequisites, typical use cases, or exclusions. The description simply states the action without any context about how it fits among the many other token-related tools.

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

get_latest_blockC

Get the latest block

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior, but it only says 'Get the latest block.' It does not mention that it returns a block object, what fields are included, or that it supports multiple networks via the parameter. The behavior is implicitly a read operation, but no details are provided.

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 very concise, but it is under-specified and does not earn its place since it restates the name. It lacks necessary details that would make the description valuable, so while not verbose, it is not appropriately sized.

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 there is no output schema and no annotations, the one-sentence description is inadequate. It does not explain what the latest block contains, how to interpret the response, or mention the network parameter's role, leaving an agent with significant uncertainty.

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

Parameters3/5

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

The schema description for the 'network' parameter is comprehensive (100% coverage), listing examples and default. The tool description adds nothing about parameters, but the schema already provides sufficient semantics, so the baseline of 3 applies.

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

Purpose2/5

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

The description 'Get the latest block' is a direct restatement of the tool name 'get_latest_block', adding no new information. It does not distinguish the tool from sibling block-related tools or clarify the network scope, making it 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 Guidelines2/5

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

There is no guidance on when to use this tool vs alternatives. No mention of preferred use cases, exclusions, or how it compares to tools like get_block_by_number or get_block_by_hash. The description provides zero usage direction.

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

get_native_balanceC

Get native token balance for an address

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe address to check balance for
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read-only operation ('Get') but doesn't disclose rate limits, error conditions, authentication needs, or what the output looks like (e.g., balance format, units). For a tool with zero annotation coverage, this is inadequate 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 a single, front-loaded sentence with zero waste—every word contributes directly to the purpose. It's appropriately sized for a simple tool, avoiding unnecessary elaboration while remaining clear.

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 no annotations and no output schema, the description is incomplete. It doesn't explain return values (e.g., balance in wei or ether), error handling, or network support details beyond what's in the schema. For a tool in a complex blockchain context with many siblings, more guidance is needed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning beyond implying 'address' is for balance checking and 'network' might be optional (though schema says required: ['address'] only). Baseline 3 is appropriate as the schema does the heavy lifting.

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 ('Get') and resource ('native token balance for an address'), making the purpose immediately understandable. It distinguishes from siblings like get_erc20_balance and get_nft_balance by specifying 'native token' (e.g., ETH, BNB). However, it doesn't explicitly contrast with all similar tools, 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. It doesn't mention siblings like get_erc20_balance for token balances or get_chain_info for network details, nor does it specify prerequisites (e.g., needing a valid address). This leaves the agent to infer usage from context alone.

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

get_nft_balanceA

Get the total number of NFTs owned by an address from a specific collection. This returns the count of NFTs, not individual token IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
ownerAddressYesThe wallet address to check the NFT balance for (e.g., '0x1234...')
tokenAddressYesThe contract address of the NFT collection (e.g., '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' for Bored Ape Yacht Club)

TDQS

A3.5/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 full burden. It states the tool returns a count, not token IDs, which is useful behavioral context. However, it doesn't disclose other important traits like whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or response format details beyond 'count'.

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 sentences with zero waste. The first sentence states the complete purpose and scope. The second sentence adds crucial clarification about what's returned. Both sentences earn their place by providing essential information not obvious from the tool name alone.

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 read operation with 100% schema coverage but no annotations or output schema, the description provides adequate purpose and return clarification. However, it lacks behavioral context about safety, performance, or error handling that would be helpful given the absence of annotations. The description is complete enough for basic usage but has gaps in operational transparency.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. According to guidelines, baseline is 3 when schema coverage is high (>80%).

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 ('Get the total number of NFTs owned') with the resource ('by an address from a specific collection'), distinguishing it from siblings like get_erc1155_balance (which handles ERC1155 tokens) and check_nft_ownership (which verifies ownership of specific tokens). It explicitly clarifies it returns count, not token IDs.

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 by specifying 'from a specific collection' and clarifying it returns count, not token IDs, which helps differentiate from get_erc1155_balance. However, it lacks explicit guidance on when to use alternatives like check_nft_ownership for verifying specific token ownership or get_nft_info for collection metadata.

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

get_nft_infoA

Get detailed information about a specific NFT (ERC721 token), including collection name, symbol, token URI, and current owner if available.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
tokenAddressYesThe contract address of the NFT collection (e.g., '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' for Bored Ape Yacht Club)
tokenIdYesThe ID of the specific NFT token to query (e.g., '1234')

TDQS

A3.8/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. It discloses some return fields but doesn't mention network behavior, error conditions, authentication, or the read-only nature beyond the 'Get' verb. The 'if available' caveat is the only behavioral nuance.

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?

A single, well-structured sentence with a clear verb, resource, and relevant return fields. No filler or redundancy. Front-loaded with the action and immediately understandable.

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 low-complexity tool with full schema coverage, the description adequately covers purpose and return fields. Without an output schema or annotations, it could benefit from mentioning network behavior or error handling, but it's sufficient for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter semantics beyond naming the fields returned, which is baseline for full schema coverage.

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 gets detailed info about a specific NFT (ERC721 token) and lists key fields (collection name, symbol, token URI, current owner). This distinguishes it from sibling tools like get_nft_collection_info (collection-level) and get_nfts_by_owner (owner-level).

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 implies usage for querying a specific NFT token, which is clear context. It doesn't explicitly name alternatives or state when not to use it, but the scope is well-defined and there are no exclusions or misleading hints.

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

get_supported_networksB

Get list of supported networks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full burden for behavioral disclosure. 'Get list' implies a read-only operation, but it doesn't specify what 'supported networks' means (e.g., blockchain networks, API-supported networks), whether there are rate limits, authentication requirements, or what format the list returns. This leaves significant behavioral gaps.

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

Conciseness5/5

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

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

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 parameterless read operation with no output schema, the description is minimally adequate but incomplete. It states what the tool does but lacks context about what 'supported networks' entails, return format, or behavioral constraints. Given the simplicity (0 params, no annotations), it's functional but could be more informative.

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 schema description coverage is 100% (empty schema is fully described). The description doesn't need to add parameter information, so it meets the baseline expectation for parameterless tools. No additional semantic value is required or provided.

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 'Get list of supported networks' clearly states the verb ('Get') and resource ('supported networks'), making the purpose immediately understandable. However, it doesn't differentiate from siblings like 'get_chain_info' which might provide similar network-related information, preventing 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. With siblings like 'get_chain_info' that might overlap, there's no indication of when this specific tool is appropriate or what distinguishes it from other network-related tools.

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

get_transactionB

Get detailed information about a specific transaction by its hash. Includes sender, recipient, value, data, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
txHashYesThe transaction hash to look up (e.g., '0x1234...')

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 the burden of behavioral disclosure. It adds some detail about the return fields (sender, recipient, value, data), but omits potentially important behaviors such as whether pending transactions are supported, error conditions, or the full set of fields included in 'more'. This is moderate transparency, not comprehensive.

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 sentences, front-loaded with the primary action and complemented by a brief list of return fields. Every sentence serves a purpose with no extraneous content, making it highly concise and well-structured.

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

Completeness3/5

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

The description is adequate for a simple lookup tool but lacks completeness: it does not enumerate all return fields beyond the initial examples, nor does it clarify multi-network support or the default network (BSC), which is only in the schema. For an agent, the vague 'and more' and absence of output schema leave uncertainty about the full response shape.

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

Parameters3/5

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

The input schema already provides full descriptions for both parameters (txHash and network), including default and example. The description adds no additional parameter semantics beyond what the schema offers, so it neither enhances nor detracts from the baseline score for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool retrieves detailed information for a specific transaction by hash, including fields like sender, recipient, value, and data. This is a specific verb+resource and the purpose is unambiguous, though it does not explicitly differentiate from chain-specific transaction tools like aptos_get_transaction or sui_get_transaction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the many chain-specific transaction lookup tools listed as siblings. The description does not mention that the network parameter allows cross-chain usage or suggest alternatives, leaving the agent to infer the appropriate context.

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

get_transaction_receiptC

Get a transaction receipt by its hash

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
txHashYesThe transaction hash to look up

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but reveals minimal behavioral traits. It states what the tool does but doesn't describe response format, error behavior, rate limits, authentication needs, or what a 'transaction receipt' contains. For a read operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a straightforward lookup tool. Every word earns its place.

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 no annotations and no output schema, the description is insufficiently complete. It doesn't explain what a transaction receipt contains, what format it returns in, or any behavioral aspects. For a blockchain query tool with rich potential output data, this leaves too much undefined for effective agent use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters. The description mentions 'by its hash' which aligns with the 'txHash' parameter but adds no additional semantic context beyond what's in the schema. No parameter-specific guidance is provided in the description, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('transaction receipt'), specifying it's retrieved 'by its hash'. It distinguishes from sibling tools like 'get_transaction' (which likely returns transaction details rather than receipt) and 'get_block_by_hash' (which operates on blocks). However, it doesn't explicitly contrast with these alternatives in the description 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?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention when to choose this over 'get_transaction' (which might return different data) or other blockchain query tools. There's no context about prerequisites, error conditions, or typical use cases.

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

is_contractB

Check if an address is a smart contract or an externally owned account (EOA)

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe wallet or contract address to check
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only check by using 'Check', but does not explicitly state whether it mutates state, how it handles invalid addresses, or what network behavior to expect. For a simple check tool this is adequate, but it lacks details such as error handling or response format.

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, focused sentence that immediately conveys the core purpose. It contains no redundant information or filler, and the key terms (smart contract, EOA, address) are front-loaded. Every word earns its place.

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 with two well-documented parameters, so the description's brevity is partially justified. However, there is no mention of the return value (e.g., boolean or classification), and no coverage of edge cases like network selection defaults. Given the absence of an output schema and the existence of overlapping siblings, the description feels minimally viable but not fully complete.

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

Parameters3/5

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

The input schema already provides descriptions for both 'address' and 'network' (100% coverage), so the description need not repeat them. The schema itself clearly explains each parameter (address to check, network name/chain ID with default). Therefore the description adds no extra parameter semantics, placing it at the baseline of 3.

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 function: checking if an address is a smart contract or an EOA. It specifies the verb 'Check' and the resource 'address', making the purpose unambiguous. However, it does not distinguish this from the similar sibling tool 'check_address_type', so it misses the differentiator needed for 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 'check_address_type' or 'validate_address'. It only states what it does without any context on use cases, prerequisites, or exclusions. This leaves the agent without criteria for selecting this tool over similar checks.

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

read_contractA

Read data from a smart contract by calling a view/pure function

ParametersJSON Schema
NameRequiredDescriptionDefault
abiYesThe ABI of the smart contract function, as a JSON array
argsNoThe arguments to pass to the function
contractAddressYesThe address of the smart contract to interact with
functionNameYesThe name of the function to call on the contract
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc

TDQS

A3.7/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It discloses that the function must be view/pure, implying read-only and no state change, which is useful. However, it does not mention gas costs, possible reverts, error handling, or return value structure.

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, concise sentence with no redundant words. It is front-loaded with the key action and resource.

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 has 5 parameters and no output schema, yet the description gives no information about return values, network behavior, or error conditions. It is minimally adequate for a simple read operation but lacks the richer context an agent would benefit from.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter-level details, just the overall function type, which meets the baseline but does not exceed it.

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 reads data from a smart contract via a view/pure function, which is specific and distinguishes it from write_contract. The verb 'read' and resource 'smart contract' are immediately clear.

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 is implied that this tool is for reading contract state, but no explicit when-to-use or exclusions are given. The sibling tool write_contract exists, but the description does not name it or any alternative, leaving usage determination to the agent.

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

resolve_ensB

Resolve an ENS name to an EVM address (not supported on BSC)

ParametersJSON Schema
NameRequiredDescriptionDefault
ensNameYesENS name to resolve (e.g., 'vitalik.eth')
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.eth

TDQS

B3.3/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 BSC limitation, which is useful context about network support constraints. However, it doesn't describe what happens on successful resolution (format of returned address), error conditions (invalid ENS names, network errors), rate limits, authentication needs, or whether this is a read-only operation. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise - a single sentence with a parenthetical constraint. Every word earns its place: it states the core function and includes a critical limitation. There's no fluff or redundant information. The structure is front-loaded with the primary purpose.

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 2 parameters with 100% schema coverage but no annotations and no output schema, the description provides the basic purpose and one important constraint (BSC limitation). However, for a resolution tool that presumably returns address data, the lack of output schema means the description should ideally mention what gets returned. The description is minimally adequate but leaves gaps about the result format and error behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions ENS names and EVM addresses generally but doesn't provide additional syntax, format, or semantic details about the parameters. Baseline 3 is appropriate when the schema does all the parameter documentation work.

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: 'Resolve an ENS name to an EVM address' - a specific verb (resolve) and resource (ENS name). It distinguishes from siblings by mentioning EVM address resolution, which no other tool explicitly does. However, it doesn't fully differentiate from potential similar resolution tools that might exist, keeping it at 4 rather than 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 provides some usage context with the parenthetical '(not supported on BSC)', which implies when NOT to use it. However, it doesn't explicitly state when TO use it versus alternatives, nor does it mention any of the sibling tools as alternatives for related tasks. The guidance is implied rather than explicit.

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

transfer_erc1155C

Transfer ERC1155 tokens to another address. ERC1155 is a multi-token standard that can represent both fungible and non-fungible tokens in a single contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesThe quantity of tokens to send (e.g., '1' for a single NFT or '10' for 10 fungible tokens)
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the token owner account in hex format (with or without 0x prefix). SECURITY: This is used only for transaction signing and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4
toAddressYesThe recipient wallet address that will receive the tokens
tokenAddressYesThe contract address of the ERC1155 token collection (e.g., '0x76BE3b62873462d2142405439777e971754E8E77')
tokenIdYesThe ID of the specific token to transfer (e.g., '1234')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks critical behavioral details. It doesn't mention that this is a blockchain transaction (implying irreversible changes, gas fees, network confirmation), security risks of private key exposure, or that it modifies on-chain state. The ERC1155 explanation is informative but doesn't cover tool behavior.

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?

Two sentences with zero waste—first states the tool's purpose, second explains ERC1155. Well-structured and front-loaded, though the ERC1155 explanation might be more appropriate as context rather than core description.

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 complex blockchain transaction tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It misses critical context: irreversible nature, gas costs, network dependencies, error handling, and what the tool returns (e.g., transaction hash). The ERC1155 explanation doesn't compensate for these gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond the ERC1155 standard explanation, which doesn't directly clarify individual parameters. Baseline 3 is appropriate since the schema does the heavy lifting.

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 ('Transfer') and resource ('ERC1155 tokens to another address'), and distinguishes ERC1155 from other token standards. However, it doesn't explicitly differentiate from sibling tools like transfer_erc20 or transfer_nft, which handle different token types.

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 transfer_erc20 or transfer_nft. The description mentions ERC1155's multi-token capability but doesn't specify use cases (e.g., batch transfers, semi-fungible tokens) or prerequisites like needing the private key for signing.

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

transfer_erc20C

Transfer ERC20 tokens to an address

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of tokens to send as a string (e.g., '100' for 100 tokens). This will be adjusted for the token's decimals.
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the sender account in hex format (with or without 0x prefix). SECURITY: This is used only for transaction signing and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4
toAddressYesThe recipient address or ENS name that will receive the tokens (e.g., '0x1234...' or 'vitalik.eth')
tokenAddressYesThe contract address or ENS name of the ERC20 token to transfer (e.g., '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' for USDC or 'uniswap.eth')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('transfer') but lacks details on critical behaviors: it doesn't mention that this is a write operation requiring gas fees, potential for transaction failure, confirmation times, or that it modifies blockchain state. The description is minimal and misses key operational context needed for safe use.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to scan. Every word earns its place, and there's no redundant or verbose phrasing.

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 (a blockchain write operation with 5 parameters, no annotations, and no output schema), the description is incomplete. It doesn't address behavioral risks (e.g., irreversible transfers, gas costs), success/failure outcomes, or integration with sibling tools like 'estimate_gas'. For a tool with significant implications, more context is needed to guide safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters with clear descriptions. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain parameter interactions or provide examples). Baseline 3 is appropriate as the schema does the heavy lifting, but the description doesn't compensate or enhance understanding.

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 ('transfer') and resource ('ERC20 tokens'), specifying the target ('to an address'). It distinguishes from siblings like 'transfer_native_token' and 'transfer_nft' by specifying ERC20 tokens, but doesn't explicitly differentiate from 'transfer_erc1155' beyond the token type. The purpose is specific but could be more precise about sibling differentiation.

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 explicit guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites (e.g., needing token approval via 'approve_token_spending'), network selection considerations, or when to choose this over other transfer tools like 'transfer_native_token'. Usage is implied from the name and parameters but not articulated.

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

transfer_native_tokenC

Transfer native tokens (BNB, ETH, MATIC, etc.) to an address

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to send in BNB (or the native token of the network), as a string (e.g., '0.1')
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the sender account in hex format (with or without 0x prefix). SECURITY: This is used only for transaction signing and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4
toYesThe recipient address or ENS name (e.g., '0x1234...' or 'vitalik.eth')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states what the tool does but doesn't disclose critical traits: whether it's a read-only or write operation (implied write from 'transfer'), authentication requirements beyond the private key parameter, rate limits, error conditions, or what happens on failure. The description lacks transparency about the tool's operational 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 a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the essential information without unnecessary elaboration.

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

Completeness2/5

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

For a tool that performs financial transactions (implied by 'transfer') with no annotations and no output schema, the description is insufficient. It doesn't cover authentication needs, security implications, error handling, or return values. Given the complexity and potential risks of token transfers, the description should provide more context about behavior and outcomes.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain parameter interactions, constraints, or provide examples of valid combinations. The baseline score of 3 reflects adequate coverage through the schema alone.

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 ('transfer') and resource ('native tokens') with examples of specific tokens (BNB, ETH, MATIC). It distinguishes from sibling tools like transfer_erc20 and transfer_erc1155 by specifying 'native tokens' rather than token standards. However, it doesn't explicitly mention the blockchain context that would further differentiate it from generic transfers.

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 transfer_erc20 or transfer_nft. It doesn't mention prerequisites (e.g., needing a private key, sufficient balance), nor does it clarify network-specific considerations. The agent must infer usage from the tool name and parameters alone.

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

transfer_nftA

Transfer an NFT (ERC721 token) from one address to another. Requires the private key of the current owner for signing the transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the NFT owner account in hex format (with or without 0x prefix). SECURITY: This is used only for transaction signing and is not stored.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4
toAddressYesThe recipient wallet address that will receive the NFT
tokenAddressYesThe contract address of the NFT collection (e.g., '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' for Bored Ape Yacht Club)
tokenIdYesThe ID of the specific NFT to transfer (e.g., '1234')

TDQS

A4.2/5.0
Behavior4/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 successfully communicates critical behavioral traits: that this is a write/mutation operation (implied by 'Transfer'), requires private key authentication, involves transaction signing, and has security implications. It doesn't mention gas costs, confirmation times, or error conditions, but covers the essential safety profile.

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 perfectly concise with two sentences that each earn their place: the first states the core purpose, and the second provides critical behavioral context about authentication requirements. No wasted words or redundant information.

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 mutation tool with no annotations and no output schema, the description does well by covering the essential safety profile (private key requirement, transaction signing). However, it doesn't mention what happens on success/failure, return values, or gas considerations, which would be helpful given the complexity of blockchain transactions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all 5 parameters. The description adds minimal value beyond the schema, only implying that privateKey belongs to the 'current owner' and that tokens are ERC721. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Transfer an NFT') and resource ('ERC721 token'), including the direction ('from one address to another'). It distinguishes from siblings like transfer_erc20, transfer_erc1155, and transfer_native_token by specifying NFT/ERC721 tokens.

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 clear context about when to use this tool (NFT transfers) and implicitly distinguishes it from other transfer tools by specifying ERC721 tokens. However, it doesn't explicitly state when NOT to use it or name specific alternatives like transfer_erc20 for fungible tokens.

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

write_contractC

Write data to a smart contract by calling a state-changing function

ParametersJSON Schema
NameRequiredDescriptionDefault
abiYesThe ABI of the smart contract function, as a JSON array
argsYesThe arguments to pass to the function
contractAddressYesThe address of the smart contract to interact with
functionNameYesThe name of the function to call on the contract
networkNoNetwork name (e.g. 'bsc', 'opbnb', 'ethereum', 'base', etc.) or chain ID. Supports others main popular networks. Defaults to BSC mainnet.bsc
privateKeyNoPrivate key of the sending account. Used only for transaction signing.0x5a2b7e4d9c8f1a3e6b0d2c5f4e3d2a1b0c9f8e7d6a5b4c3d2e1f0a9b8c7d6e5f4

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'state-changing function' which implies mutation, but doesn't cover critical aspects: transaction costs (gas), network confirmation times, irreversible nature of blockchain writes, authentication requirements (private key usage), or error handling. For a high-stakes write operation, this is insufficient 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 a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately front-loaded with the essential action and target. Every word earns its place in this compact formulation.

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 complex blockchain write operation with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't address transaction lifecycle, error scenarios, cost implications, or return values. Given the high-stakes nature of smart contract interactions and the rich sibling tool ecosystem, more contextual information is needed for safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, providing complete parameter documentation. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., how ABI matches functionName), format requirements, or practical examples. With full schema coverage, the baseline of 3 is appropriate as the description doesn't enhance parameter understanding.

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 ('write data') and target ('smart contract') with the specific mechanism ('calling a state-changing function'), which distinguishes it from read-only operations like 'read_contract'. However, it doesn't explicitly differentiate from other state-changing tools like 'transfer_erc20' or 'approve_token_spending', which are more specific implementations of contract writes.

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 (e.g., needing a private key for signing), contrast with 'read_contract' for non-state-changing calls, or explain when to use more specialized tools like 'transfer_erc20' instead. This leaves the agent without contextual decision-making help.

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. 26 tool updatesv1.0.0
    • First observedapprove_token_spending
    • First observedcheck_nft_ownership
    • First observedestimate_gas
    • First observedget_address_from_private_key
    • First observedget_block_by_hash
    • First observedget_block_by_number
    • First observedget_chain_info
    • First observedget_erc1155_balance
    • First observedget_erc1155_token_uri
    • First observedget_erc20_balance
    • First observedget_erc20_token_info
    • First observedget_latest_block
    • First observedget_native_balance
    • First observedget_nft_balance
    • First observedget_nft_info
    • First observedget_supported_networks
    • First observedget_transaction
    • First observedget_transaction_receipt
    • First observedis_contract
    • First observedread_contract
    • First observedresolve_ens
    • First observedtransfer_erc1155
    • First observedtransfer_erc20
    • First observedtransfer_native_token
    • First observedtransfer_nft
    • First observedwrite_contract

TDQS

B3.4/5.0

Scored across 26 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific blockchain operations like balance checks, transfers, contract interactions, and network queries. Some overlap exists between get_erc20_balance/get_erc20_token_info and get_nft_balance/get_nft_info, but descriptions clarify their differences. No tools appear to do exactly the same thing.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case exclusively. The naming convention is predictable with clear action-object pairs like get_balance, transfer_token, read_contract, making the tool set easy to navigate and understand.

Tool Count3/5

With 26 tools, the count feels heavy for a blockchain interaction server, though not extreme. The tools cover many specific operations, but some could potentially be consolidated or parameterized. The number is borderline high but still manageable given the comprehensive scope.

Completeness5/5

The tool set provides excellent coverage for blockchain operations including token transfers (native, ERC20, ERC1155, NFT), balance queries, contract interactions (read/write), network information, transaction details, and utility functions. All major blockchain interaction patterns are represented with no obvious gaps for the domain.

Maintenance

ActivityInactive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers