Skip to main content
Glama
cuongpo

Rootstock MCP Server

by cuongpo

πŸš€ Rootstock MCP Server

License: MIT Node.js TypeScript

Model Context Protocol server for Rootstock blockchain interactions

The Rootstock MCP Server is a developer- and user-oriented backend service that enables seamless interaction with the Rootstock blockchain using the Model Context Protocol (MCP). This server provides standardized APIs for querying, transacting, and managing assets on Rootstock, making it easy for developers, users, and AI agents to build and integrate with Rootstock-based applications.

οΏ½ Try It Now

Live Demo on Smithery:

Related MCP server: UniversalDeFi AI

�🌟 Features

Core Capabilities

  • Standardized MCP Interface: Expose Rootstock blockchain operations via MCP endpoints

  • Wallet Management: Create, import, and manage multiple wallets

  • Transaction Operations: Send native tokens and ERC20 tokens

  • ERC20 Token Deployment: Deploy standard and mintable ERC20 tokens

  • Token Management: Get token information and mint tokens (for mintable contracts)

  • Blockchain Queries: Query balances, transactions, blocks, and network information

  • Smart Contract Interactions: Call and transact with smart contracts

  • Gas Estimation: Estimate transaction costs before sending

Developer Tools

  • Comprehensive Documentation: Complete API reference and examples

  • TypeScript Support: Full type safety and IntelliSense

  • Error Handling: Detailed error messages nd debugging information

  • Flexible Configuration: Environment-based configuration system

πŸ“‹ Requirements

  • Node.js v18 or higher

  • npm or yarn package manager

  • Rootstock blockchain RPC endpoint access

πŸš€ Quick Start

1. Installation

# Install Smithery CLI
npm install -g @smithery/cli

# Login to Smithery
smithery login

# Clone and deploy
git clone https://github.com/cuongpo/rootstock-mcp-server.git
cd rootstock-mcp-server
npm run build:smithery
smithery deploy

Option B: Local Installation

# Clone the repository
git clone https://github.com/cuongpo/rootstock-mcp-server.git
cd rootstock-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

2. Configuration

# Copy the example environment file
cp .env.example .env

# Edit the configuration
nano .env

Configure your environment variables:

# Rootstock Testnet Configuration
ROOTSTOCK_RPC_URL=https://public-node.testnet.rsk.co
ROOTSTOCK_CHAIN_ID=31
ROOTSTOCK_NETWORK_NAME=Rootstock Testnet
ROOTSTOCK_CURRENCY_SYMBOL=tRBTC
ROOTSTOCK_EXPLORER_URL=https://explorer.testnet.rootstock.io

# Wallet Configuration (comma-separated for multiple wallets)
ROOTSTOCK_PRIVATE_KEYS=your_private_key_here
ROOTSTOCK_ADDRESSES=0x742d35Cc6634C0532925a3b8D4C9db96590c6C87
ROOTSTOCK_CURRENT_ADDRESS=0x742d35Cc6634C0532925a3b8D4C9db96590c6C87

3. Usage

Standalone Mode

npm start

Development Mode

npm run dev

MCP Client Integration

Add to your MCP client configuration:

{
  "mcpServers": {
    "rootstock-mcp": {
      "command": "node",
      "args": ["path/to/rootstock-mcp-server/build/index.js"],
      "env": {
        "ROOTSTOCK_RPC_URL": "https://public-node.testnet.rsk.co",
        "ROOTSTOCK_CHAIN_ID": "31",
        "ROOTSTOCK_NETWORK_NAME": "Rootstock Testnet",
        "ROOTSTOCK_CURRENCY_SYMBOL": "tRBTC",
        "ROOTSTOCK_PRIVATE_KEYS": "your_private_key_here",
        "ROOTSTOCK_CURRENT_ADDRESS": "your_address_here"
      }
    }
  }
}

πŸ› οΈ Available Tools

Wallet Management

create_wallet

Create a new wallet with a generated mnemonic phrase.

Parameters:

  • name (optional): Wallet name

Example:

{
  "name": "create_wallet",
  "arguments": {
    "name": "MyWallet"
  }
}

import_wallet

Import an existing wallet using private key or mnemonic.

Parameters:

  • privateKey (optional): Private key to import

  • mnemonic (optional): Mnemonic phrase to import

  • name (optional): Wallet name

list_wallets

List all available wallets.

set_current_wallet

Set the active wallet for transactions.

Parameters:

  • address (required): Wallet address

get_current_wallet

Get current active wallet information.

Balance & Transactions

get_balance

Get wallet balance (native or ERC20 tokens).

Parameters:

  • address (required): Wallet address

  • tokenAddress (optional): ERC20 token contract address

send_transaction

Send native tokens or ERC20 tokens.

Parameters:

  • to (required): Recipient address

  • amount (required): Amount to send

  • tokenAddress (optional): ERC20 token contract address

  • gasLimit (optional): Gas limit

  • gasPrice (optional): Gas price

get_transaction

Get transaction details by hash.

Parameters:

  • hash (required): Transaction hash

Blockchain Queries

get_block

Get block information.

Parameters:

  • blockNumber (optional): Block number

  • blockHash (optional): Block hash

get_network_info

Get current network information and status.

estimate_gas

Estimate gas cost for a transaction.

Parameters:

  • to (required): Recipient address

  • value (optional): Value to send

  • data (optional): Transaction data

Smart Contracts

call_contract

Call a smart contract method (read-only).

Parameters:

  • contractAddress (required): Contract address

  • methodName (required): Method name

  • parameters (optional): Method parameters

  • abi (optional): Contract ABI

send_contract_transaction

Send a transaction to a smart contract.

Parameters:

  • contractAddress (required): Contract address

  • methodName (required): Method name

  • parameters (optional): Method parameters

  • abi (optional): Contract ABI

  • value (optional): Ether value to send

  • gasLimit (optional): Gas limit

  • gasPrice (optional): Gas price

ERC20 Token Management

deploy_erc20_token

Deploy a new ERC20 token contract.

Parameters:

  • name (required): Token name (e.g., "My Token")

  • symbol (required): Token symbol (e.g., "MTK")

  • decimals (optional): Token decimals (default: 18)

  • initialSupply (required): Initial token supply

  • mintable (optional): Whether the token should be mintable (default: false)

  • gasLimit (optional): Gas limit

  • gasPrice (optional): Gas price

Example:

{
  "name": "deploy_erc20_token",
  "arguments": {
    "name": "My Token",
    "symbol": "MTK",
    "decimals": 18,
    "initialSupply": "1000000",
    "mintable": true
  }
}

get_token_info

Get information about an ERC20 token.

Parameters:

  • tokenAddress (required): ERC20 token contract address

Example:

{
  "name": "get_token_info",
  "arguments": {
    "tokenAddress": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87"
  }
}

mint_tokens

Mint tokens (only for mintable tokens).

Parameters:

  • tokenAddress (required): ERC20 token contract address

  • to (required): Address to mint tokens to

  • amount (required): Amount of tokens to mint

  • gasLimit (optional): Gas limit

  • gasPrice (optional): Gas price

Example:

{
  "name": "mint_tokens",
  "arguments": {
    "tokenAddress": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87",
    "to": "0x1234567890123456789012345678901234567890",
    "amount": "1000"
  }
}

πŸ—οΈ Development

Project Structure

rootstock-mcp-server/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts              # Main MCP server
β”‚   β”œβ”€β”€ rootstock-client.ts   # Blockchain client
β”‚   β”œβ”€β”€ wallet-manager.ts     # Wallet management
β”‚   └── types.ts              # Type definitions
β”œβ”€β”€ build/                    # Compiled JavaScript
β”œβ”€β”€ docs/                     # Documentation
β”œβ”€β”€ examples/                 # Example code
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── README.md

Scripts

# Development
npm run dev          # Run in development mode
npm run build        # Build TypeScript
npm run start        # Run built version

# Code Quality
npm run lint         # Run ESLint
npm run format       # Format with Prettier
npm test            # Run tests

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Commit your changes: git commit -m 'Add amazing feature'

  4. Push to the branch: git push origin feature/amazing-feature

  5. Open a Pull Request

πŸ”’ Security

  • Private Keys: Never commit private keys to version control

  • Environment Variables: Use .env files for sensitive configuration

  • Network Security: Use HTTPS endpoints in production

  • Wallet Security: Store mnemonic phrases securel

πŸ“š Documentation

🀝 Community

  • Developers: Contribute to backend or frontend development, API design, or documentation

  • Testers: Help stress-test the gateway, identify bugs, and provide UX feedback

  • Content Creators: Assist with user guides, tutorials, and community outreach

  • Community Support: Help onboard new users and foster engagement

πŸ“„ License

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

πŸ™ Acknowledgments

Available Tools

19 tools
call_contractC

Call a smart contract method (read-only)

ParametersJSON Schema
NameRequiredDescriptionDefault
abiNoOptional contract ABI
contractAddressYesSmart contract address
methodNameYesMethod name to call
parametersNoMethod parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states 'read-only' without disclosing other behavioral traits like network requirements, error handling, rate limits, or what happens with invalid inputs. This is inadequate for a contract interaction 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 front-loads the core purpose ('call a smart contract method') with a key constraint ('read-only'). There's zero wasted text, making it appropriately sized and well-structured.

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

Completeness2/5

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

Given the complexity of smart contract interactions, no annotations, and no output schema, the description is insufficient. It lacks details on return values, error cases, network dependencies, or prerequisites, leaving significant gaps for agent understanding.

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. The description adds no additional meaning about parameters beyond implying they're for calling methods, 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 ('call') and resource ('smart contract method'), specifying it's read-only. However, it doesn't differentiate from sibling tools like 'send_contract_transaction' which likely performs write operations, missing explicit sibling distinction.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. The description mentions 'read-only' but doesn't specify when to choose this over other contract interaction tools like 'send_contract_transaction' or 'estimate_gas', leaving usage context unclear.

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

create_walletA

Create a new Hyperion wallet with a generated mnemonic phrase

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the wallet

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 full burden. It mentions the wallet is 'new' and uses a 'generated mnemonic phrase', which hints at creation behavior, but lacks critical details like whether this requires authentication, what happens if a wallet already exists, if the mnemonic is stored securely, or any rate limits. For a tool that likely involves sensitive operations, this is insufficient.

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 front-loads the core action ('Create a new Hyperion wallet') and adds necessary detail ('with a generated mnemonic phrase') without any wasted words. It is appropriately sized for the tool's complexity.

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

Completeness2/5

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

Given the lack of annotations and output schema, and the tool's likely complexity (creating a cryptographic wallet), the description is incomplete. It misses behavioral details (e.g., security implications, error handling) and does not explain return values (e.g., wallet address, mnemonic). For a tool with no structured safety or output information, more descriptive context is needed.

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

Parameters4/5

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

The input schema has 100% description coverage for its single parameter ('name'), so the baseline is 3. The description adds value by clarifying the overall purpose (creating a wallet with a mnemonic), which provides context for the optional 'name' parameter, but does not elaborate on parameter-specific semantics beyond what the schema states.

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 ('Create a new Hyperion wallet') and the resource ('wallet'), with additional detail about the method ('with a generated mnemonic phrase'). It distinguishes from sibling tools like 'import_wallet' (which imports existing wallets) and 'list_wallets' (which lists existing ones).

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 context by specifying 'new' wallet creation with a generated mnemonic, suggesting this is for initial setup rather than importing existing wallets. However, it does not explicitly state when not to use it (e.g., for existing wallets) or name alternatives like 'import_wallet', leaving some guidance implicit.

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

deploy_erc20_tokenC

Deploy a new ERC20 token contract

ParametersJSON Schema
NameRequiredDescriptionDefault
decimalsNoToken decimals (default: 18)
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
initialSupplyYesInitial token supply
mintableNoWhether the token should be mintable (default: false)
nameYesToken name (e.g., "My Token")
symbolYesToken symbol (e.g., "MTK")

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 action without disclosing critical behavioral traits. It doesn't mention that this is a write operation (implied by 'Deploy'), potential costs (gas fees), irreversible effects, or required permissions (e.g., wallet authentication). This leaves significant gaps for safe agent 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, front-loaded sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a straightforward deployment tool, 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 deploying a smart contract with no annotations and no output schema, the description is incomplete. It fails to address key contextual aspects like transaction outcomes, error handling, or integration with sibling tools (e.g., wallet management), leaving the agent under-informed for safe operation.

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

Parameters3/5

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

The description adds no parameter semantics beyond the input schema, which has 100% coverage with detailed descriptions for all 7 parameters. This meets the baseline of 3, as the schema adequately documents parameters like 'decimals', 'initialSupply', and 'mintable', but the description doesn't enhance understanding with examples or context.

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 ('Deploy') and resource ('a new ERC20 token contract'), making the purpose immediately understandable. It distinguishes from siblings like 'deploy_erc721_token' by specifying ERC20, but doesn't explicitly contrast with other deployment or token-related tools beyond 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 like 'deploy_erc721_token' for NFTs or 'mint_tokens' for existing tokens. The description lacks context about prerequisites, such as needing a wallet or network setup, which are implied by sibling tools but not stated.

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

deploy_erc721_tokenC

Deploy a new ERC721 (NFT) token contract

ParametersJSON Schema
NameRequiredDescriptionDefault
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
mintableNoWhether the NFT should be mintable (default: false)
nameYesNFT collection name (e.g., "My NFT Collection")
symbolYesNFT collection symbol (e.g., "MYNFT")

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 'deploy' which implies a write operation, but fails to mention critical aspects like gas costs, transaction finality, permissions required, or potential side effects. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of deploying a smart contract with no annotations and no output schema, the description is insufficient. It lacks details on return values, error conditions, network dependencies, or integration with other tools like 'estimate_gas' or 'send_transaction', leaving the agent with incomplete 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?

The input schema has 100% description coverage, so the schema fully documents all 5 parameters. The description adds no additional parameter information beyond what's in the schema, such as explaining interactions between parameters or usage examples. This 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 'deploy' and the resource 'ERC721 (NFT) token contract', making the purpose specific and understandable. However, it doesn't explicitly differentiate from its sibling 'deploy_erc20_token' beyond the token type mentioned in parentheses, which is somewhat implied but not directly contrasted.

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 'deploy_erc20_token' or 'mint_nft', nor does it mention prerequisites such as needing a wallet or network setup. It lacks context for decision-making in the broader toolset.

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

estimate_gasC

Estimate gas cost for a transaction

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoOptional transaction data
toYesRecipient address
valueNoOptional value to send (in ether)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it works: whether it's a simulation, requires network access, has rate limits, returns specific units (e.g., wei/gwei), or handles errors. For a tool that likely interacts with a blockchain, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is extremely conciseβ€”a single, direct sentence that states the core purpose without any fluff. It's front-loaded and wastes no words, making it easy for an agent to parse quickly while communicating the essential function.

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 transactions and the lack of annotations or output schema, the description is insufficiently complete. It doesn't explain what the estimate represents (e.g., gas units, cost in ETH), whether it's for the current network state, or how it should be used in practice. For a tool with no structured output documentation, 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?

The description adds no parameter semantics beyond what's already in the schema, which has 100% coverage with clear descriptions for all three parameters. The baseline score of 3 reflects adequate parameter documentation through the schema alone, with the description providing no additional value in this dimension.

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: estimating gas cost for a transaction. It specifies the verb ('estimate') and resource ('gas cost'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'send_transaction' or 'send_contract_transaction' that might also involve gas considerations, 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. It doesn't mention whether this should be used before sending transactions, how it relates to tools like 'send_transaction' or 'call_contract', or any prerequisites. The agent must 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_balanceB

Get the balance of a wallet address (native tokens or ERC20 tokens)

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesWallet address to check balance for
tokenAddressNoOptional ERC20 token contract address

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool reads balances but doesn't specify whether it requires authentication, network connectivity, rate limits, error conditions, or what the return format looks like. This is inadequate for a tool that likely interacts with blockchain networks.

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 with the essential information.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the balance return value looks like (e.g., numeric, formatted), units, or error handling. Given the complexity of blockchain interactions, more behavioral 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?

The description adds minimal value beyond the input schema, which already has 100% coverage with clear parameter descriptions. It mentions 'native tokens or ERC20 tokens' which hints at the tokenAddress parameter's purpose, but doesn't provide additional context like format requirements or examples.

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 ('wallet address'), and distinguishes between native tokens and ERC20 tokens. It precisely communicates what the tool does without being vague or tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_token_info' or 'list_wallets', nor does it mention any prerequisites or exclusions. It only states what the tool does, not when it should be selected.

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

get_blockC

Get block information by number or hash

ParametersJSON Schema
NameRequiredDescriptionDefault
blockHashNoBlock hash (alternative to blockNumber)
blockNumberNoBlock number (alternative to blockHash)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states what the tool does, not how it behaves. It lacks details on error handling, rate limits, permissions, or return format, which are critical for a read operation in a blockchain context.

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 and appropriately sized for a simple lookup tool.

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 'block information' includes, error cases, or behavioral traits, leaving gaps for a tool in a complex domain like blockchain.

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 fully. The description adds minimal value by implying the parameters are alternatives, but doesn't provide additional syntax or format details beyond what the schema offers.

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 ('block information'), specifying the lookup mechanism ('by number or hash'). It distinguishes from siblings like get_transaction or get_balance by focusing on blocks, though it doesn't explicitly contrast with them.

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. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the purpose alone.

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

get_current_walletB

Get the current active wallet information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose if this is a read-only operation, what permissions are needed, error conditions, or the format of returned information, which is insufficient for a tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for a simple tool with no parameters, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'current active wallet information' includes, such as balance, address, or network details, nor does it cover behavioral aspects like error handling or dependencies, which are crucial for proper tool invocation.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add parameter details, but this is acceptable as there are no parameters to document, aligning with the baseline for zero parameters.

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

Purpose4/5

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

The description clearly states the action ('Get') and the resource ('current active wallet information'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_wallets' or 'get_balance', which also retrieve wallet-related information, so it lacks specific sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing an active wallet set, or compare it to siblings like 'list_wallets' for broader information or 'get_balance' for specific data, leaving usage context unclear.

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

get_network_infoB

Get current network information and status

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 the full burden of behavioral disclosure. It states the tool retrieves information, implying a read-only operation, but lacks details on permissions, rate limits, response format, or error conditions. For a tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool with no parameters, making it easy to parse and understand quickly.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks depth. It doesn't explain what 'network information and status' entails (e.g., blockchain network details, node health, gas prices), which could be crucial for an agent to use it effectively in context with sibling tools.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, aligning with the schema. A baseline of 4 is applied since the schema fully handles parameters, and the description doesn't add unnecessary details.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current network information and status'), making it immediately understandable. However, it doesn't differentiate from siblings like 'get_block' or 'get_transaction' that also retrieve information, missing an opportunity to clarify its unique scope.

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_block' or 'get_transaction' that fetch specific blockchain data, there's no indication of whether this tool is for general network metadata, connectivity status, or other purposes, leaving usage context ambiguous.

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

get_nft_infoB

Get information about an ERC721 NFT contract or specific token

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenAddressYesContract address of the NFT
tokenIdNoOptional token ID to get specific token info

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states what the tool does, not behavioral traits like read-only nature, error conditions, rate limits, or response format. It doesn't disclose if this requires authentication or network connectivity.

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 purpose without unnecessary words. It's appropriately sized and front-loaded with the core functionality.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what information is returned, error handling, or behavioral constraints, leaving significant gaps for an AI agent to understand the tool's operation.

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. The description adds minimal value by implying tokenId is optional for specific token info, but doesn't provide additional context beyond what the schema already states.

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 verb 'Get information about' and specifies the resource as 'ERC721 NFT contract or specific token'. It distinguishes from siblings like get_token_info (likely for fungible tokens) and mint_nft (for creation).

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 'contract or specific token', but doesn't explicitly state when to use this vs. alternatives like get_token_info or call_contract. No guidance on prerequisites or exclusions is provided.

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

get_token_infoC

Get information about an ERC20 token

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenAddressYesERC20 token contract address

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 but only states what the tool does, not how it behaves. It doesn't mention whether this is a read-only operation, what network it queries, potential rate limits, error conditions, or what specific information is returned about the token.

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 immediately communicates the core purpose without unnecessary words. It's appropriately sized for a simple lookup tool with one parameter.

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

Completeness2/5

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

For a blockchain query tool with no annotations and no output schema, the description is insufficient. It doesn't explain what specific token information is returned (name, symbol, decimals, total supply, etc.), what network it operates on, or whether authentication is required, leaving significant gaps for an AI agent.

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

Parameters3/5

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

The schema has 100% description coverage, with the single parameter 'tokenAddress' clearly documented as 'ERC20 token contract address'. The description doesn't add any additional parameter context beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'information about an ERC20 token', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_balance' or 'get_nft_info' that also retrieve information about blockchain assets, missing an opportunity for clearer distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_balance' (for wallet balances) and 'get_nft_info' (for NFT metadata), there's no indication of when token information retrieval is appropriate versus other blockchain data queries.

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

get_transactionC

Get details of a transaction by hash

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesTransaction hash

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 but only states what the tool does without disclosing behavioral traits. It lacks details on permissions, rate limits, error handling, or what 'details' include, which is insufficient for a tool with potential complexity.

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, front-loading the core action and resource. It is appropriately sized for a simple tool, 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 no annotations and no output schema, the description is incomplete. It doesn't explain what 'details' entail, potential return values, or error cases, which is inadequate for a tool that might involve network or data retrieval complexities.

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

Parameters3/5

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

The description adds minimal meaning beyond the input schema, which has 100% coverage for the single parameter 'hash'. It implies the parameter is used to fetch details but doesn't elaborate on format or constraints, 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 details') and resource ('transaction by hash'), making the purpose specific and understandable. However, it does not differentiate from siblings like 'get_block' or 'get_token_info' beyond the resource type, which slightly limits distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this is for retrieving confirmed transactions only or how it differs from other data-fetching tools in the sibling list, leaving usage context implied at best.

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

import_walletC

Import an existing wallet using private key or mnemonic phrase

ParametersJSON Schema
NameRequiredDescriptionDefault
mnemonicNoMnemonic phrase to import (alternative to private key)
nameNoOptional name for the wallet
privateKeyNoPrivate key to import (alternative to mnemonic)

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 ('import') but doesn't cover critical aspects like whether this requires authentication, what happens to existing wallets, potential rate limits, error conditions, or the expected outcome (e.g., if the wallet becomes the current one). This is inadequate for a mutation tool with zero annotation coverage.

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

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 fluff. It's front-loaded with the core action and resources, making it easy to parse quickly. 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 the complexity of a wallet import operation (a mutation with security implications), no annotations, and no output schema, the description is insufficient. It lacks details on behavioral traits, success/failure outcomes, and integration with sibling tools (e.g., whether the imported wallet becomes current). This leaves significant gaps 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?

The input schema has 100% description coverage, clearly documenting all three parameters (mnemonic, name, privateKey) and their relationships (alternatives). The description adds minimal value by mentioning 'private key or mnemonic phrase', which is already covered in the schema. 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 verb ('import') and resource ('existing wallet') along with the specific methods ('using private key or mnemonic phrase'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'create_wallet', which creates a new wallet rather than importing an existing one.

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. For example, it doesn't mention prerequisites (e.g., needing a private key or mnemonic), when to choose this over 'create_wallet', or any constraints like network compatibility. This leaves the agent without contextual usage cues.

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

list_walletsB

List all available wallets

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?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'List all available wallets' implies a read-only operation that returns wallet identifiers or metadata, but it doesn't specify critical behaviors: whether it requires authentication, returns paginated results, includes deleted/inactive wallets, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves in practice.

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 ('List all available wallets') that front-loads the core action and resource. It wastes no words on redundancy or fluff, making it easy to parse quickly. Every word earns its place by directly contributing to understanding the tool's function.

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 simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks context about the return format (e.g., list of wallet names, IDs, or full objects), error conditions, or integration with sibling tools. For a basic list operation, this might suffice, but it doesn't provide enough detail for confident use in complex scenarios.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is given because the schema fully documents the lack of parameters, and the description doesn't need to compensateβ€”it correctly focuses on the tool's purpose rather than unnecessary parameter explanations.

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 'List all available wallets' clearly states the verb ('List') and resource ('wallets'), making the purpose immediately understandable. It distinguishes from siblings like 'create_wallet' (creation vs listing) and 'check_balance' (listing vs querying specific data), though it doesn't explicitly differentiate from 'process_command' which is more ambiguous. The description is specific enough to understand the tool's function without being tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether wallets must exist), compare it to siblings like 'check_balance' (which might list balances rather than wallets), or specify scenarios where listing is appropriate (e.g., before selecting a wallet for another operation). The agent must infer usage from the tool name and context alone.

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

mint_nftC

Mint a new NFT for mintable ERC721 contracts

ParametersJSON Schema
NameRequiredDescriptionDefault
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
toYesAddress to mint NFT to
tokenAddressYesContract address of the mintable NFT
tokenIdYesToken ID for the new NFT
tokenURINoMetadata URI for the NFT (optional)

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. While 'mint' implies a write operation, the description doesn't disclose critical behavioral traits: whether this requires specific permissions/wallet access, if it's irreversible/destructive, what gas costs or rate limits apply, or what the response looks like (transaction hash, confirmation, etc.). For a blockchain write operation with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for the tool's complexity and front-loads the core purpose immediately. Every word earns its place in conveying the essential function.

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 blockchain write operation with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects (permissions, irreversibility, costs), provide usage context, explain what happens after minting, or clarify the relationship with sibling tools. The agent lacks sufficient context to use this tool safely and effectively despite the good parameter documentation in the schema.

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 6 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain parameter relationships, format requirements (e.g., address validation), or provide examples. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't add value beyond the structured schema.

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

Purpose4/5

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

The description clearly states the action ('mint') and resource ('new NFT for mintable ERC721 contracts'), providing a specific verb+resource combination. It distinguishes from siblings like 'mint_tokens' (likely for fungible tokens) and 'deploy_erc721_token' (deployment rather than minting). However, it doesn't explicitly differentiate from 'send_contract_transaction' which could also be used for minting operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a deployed ERC721 contract), when not to use it (e.g., for non-mintable contracts), or direct alternatives among the sibling tools. The agent must infer usage context 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.

mint_tokensC

Mint tokens (only for mintable tokens)

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of tokens to mint
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
toYesAddress to mint tokens to
tokenAddressYesERC20 token contract address

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it mints tokens for mintable ones. It doesn't disclose behavioral traits like required permissions, whether it's a write operation, gas implications, or what happens on failure. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words. However, it's under-specified rather than concise, as it lacks necessary details for a mutation tool, slightly reducing its effectiveness.

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 mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover return values, error conditions, or practical usage context, leaving significant gaps for an AI agent to understand the tool fully.

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 documents all parameters. The description adds no meaning beyond the schema, such as explaining 'mintable tokens' in relation to 'tokenAddress' or clarifying gas parameter usage. 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.

Purpose3/5

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

The description states the verb 'mint' and resource 'tokens', but is vague about what 'mintable tokens' means and doesn't differentiate from sibling 'mint_nft'. It specifies a constraint ('only for mintable tokens') but lacks clarity on what qualifies as mintable.

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 like 'send_transaction' or 'mint_nft'. The constraint 'only for mintable tokens' implies a prerequisite but doesn't explain how to determine mintability or when to choose other tools.

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

send_contract_transactionC

Send a transaction to a smart contract method

ParametersJSON Schema
NameRequiredDescriptionDefault
abiNoOptional contract ABI
contractAddressYesSmart contract address
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
methodNameYesMethod name to call
parametersNoMethod parameters
valueNoOptional ether value to send

TDQS

C2.7/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 mentions 'Send a transaction' which implies a write operation that could modify blockchain state, but it doesn't disclose critical behaviors like required permissions (e.g., wallet authentication), potential costs (gas fees), irreversible effects, or error handling. This leaves significant gaps for safe and effective 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 and directly states the tool's action without unnecessary details, 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 transactions, no annotations, and no output schema, the description is incomplete. It fails to address key aspects like return values (e.g., transaction hash), error cases, or dependencies on other tools (e.g., 'get_current_wallet'). For a mutation tool with high stakes, this leaves the agent under-informed.

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 7 parameters (e.g., contractAddress, methodName, gasLimit). The description adds no additional meaning beyond the schema, such as explaining parameter interactions or usage examples. Baseline 3 is appropriate as the schema handles the heavy lifting, but no extra value is provided.

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

Purpose3/5

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

The description 'Send a transaction to a smart contract method' states a clear verb ('Send') and resource ('smart contract method'), but it's vague about what this entails compared to siblings like 'send_transaction' or 'call_contract'. It doesn't specify if this is for write operations, deployment, or other contract interactions, leaving room for ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With siblings like 'call_contract' (likely for read-only calls) and 'send_transaction' (likely for general transactions), the description lacks context on prerequisites, such as needing a wallet or network connection, or exclusions, making it hard for an agent to choose correctly.

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

send_transactionC

Send native tokens or ERC20 tokens to another address

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to send (in token units, not wei)
gasLimitNoOptional gas limit
gasPriceNoOptional gas price
toYesRecipient address
tokenAddressNoOptional ERC20 token contract address (for token transfers)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It fails to disclose critical behavioral traits: whether this is a read-only or destructive operation (likely destructive for sending tokens), authentication needs, rate limits, or what happens on failure (e.g., transaction reversion).

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 front-loads the core purpose without unnecessary details, 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?

For a complex, likely destructive tool with no annotations and no output schema, the description is inadequate. It omits essential context: expected outputs (e.g., transaction hash), error handling, dependencies on other tools like 'set_current_wallet', and how it differs from sibling 'send_contract_transaction'.

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. The description adds no additional meaning beyond implying 'tokenAddress' is for ERC20 transfers, which is already clear from the schema. 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 action ('send') and resources ('native tokens or ERC20 tokens'), specifying what the tool does. It distinguishes from some siblings like 'get_balance' or 'deploy_erc20_token', but could better differentiate from 'send_contract_transaction' which might handle similar 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?

No guidance is provided on when to use this tool versus alternatives like 'send_contract_transaction' or 'mint_tokens'. The description lacks context about prerequisites, such as needing a wallet set via 'set_current_wallet', or exclusions for specific token types.

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

set_current_walletC

Set the current active wallet for transactions

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesWallet address to set as current

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 mentions setting an active wallet but fails to explain key behaviors: whether this changes global state, requires specific permissions, affects subsequent transactions, or has any side effects like persistence across sessions.

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 is 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.

Completeness2/5

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

For a state-changing tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral impact, error conditions, or what happens after setting the wallet, leaving significant gaps in understanding how to use this tool effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting the single 'address' parameter. The description adds no additional semantic context beyond what the schema provides, such as format examples or validation rules, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Set') and the resource ('current active wallet for transactions'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'create_wallet' or 'import_wallet', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'create_wallet' or 'import_wallet', nor does it mention prerequisites such as needing an existing wallet address. It only states what the tool does, not when to invoke it.

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. 19 tool updatesv1.0.0
    • First observedcall_contract
    • First observedcreate_wallet
    • First observeddeploy_erc20_token
    • First observeddeploy_erc721_token
    • First observedestimate_gas
    • First observedget_balance
    • First observedget_block
    • First observedget_current_wallet
    • First observedget_network_info
    • First observedget_nft_info
    • First observedget_token_info
    • First observedget_transaction
    • First observedimport_wallet
    • First observedlist_wallets
    • First observedmint_nft
    • First observedmint_tokens
    • First observedsend_contract_transaction
    • First observedsend_transaction
    • First observedset_current_wallet

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity, covering specific actions like contract calls, wallet management, token deployments, and transaction handling. The descriptions clearly differentiate between read-only operations (call_contract, get_balance) and state-changing ones (send_transaction, deploy_erc20_token), ensuring agents can accurately select the right tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., call_contract, create_wallet, get_balance, send_transaction), with no deviations in style or convention. This predictability makes the tool set easy to navigate and understand at a glance.

Tool Count4/5

With 19 tools, the count is slightly high but reasonable for a blockchain server covering wallets, tokens, contracts, and transactions. It provides comprehensive functionality without being overwhelming, though it edges toward the upper limit of typical well-scoped servers (3-15 tools).

Completeness5/5

The tool set offers complete CRUD/lifecycle coverage for the Rootstock blockchain domain, including wallet creation/management, token deployment/minting, contract interactions, and transaction handling. No obvious gaps exist; agents can perform all essential operations from querying to executing transactions.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A backend service that executes transactions across multiple blockchains, enabling users to manage wallets, transfer tokens, and interact with smart contracts using the Model Context Protocol framework.
    1
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Backend service that enables users to connect with Binance exchange for viewing portfolio data, converting tokens, and executing trades with minimal market impact through the Model Context Protocol framework.
    23
    -