Rootstock MCP Server
Uses environment variables through .env files for configuration of blockchain endpoints, network parameters, and wallet credentials.
Incorporates ESLint for code quality checks in the development workflow.
Provides standardized interfaces for interacting with the Rootstock blockchain (a Bitcoin sidechain compatible with Ethereum), enabling wallet management, transaction operations, and smart contract interactions.
Leverages Ethers.js library for Rootstock blockchain interactions, supporting operations like wallet creation, token transfers, contract deployment, and blockchain queries.
Uses Node.js as the runtime environment for the MCP server, requiring version 18 or higher for proper functionality.
Integrates Prettier for consistent code formatting across the codebase.
Implemented in TypeScript 5.0+, providing type safety and improved developer experience when working with the MCP server.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Rootstock MCP Servercheck my wallet balance for 0x742d35Cc6634C0532925a3b8D4C9db96590c6C87"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Rootstock MCP Server
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:
π§ Explore Tools: View all available tools
π¬ Interactive Chat: Try it in the playground
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
Option A: Deploy to Smithery (Recommended)
# 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 deployOption 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 build2. Configuration
# Copy the example environment file
cp .env.example .env
# Edit the configuration
nano .envConfigure 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=0x742d35Cc6634C0532925a3b8D4C9db96590c6C873. Usage
Standalone Mode
npm startDevelopment Mode
npm run devMCP 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 importmnemonic(optional): Mnemonic phrase to importname(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 addresstokenAddress(optional): ERC20 token contract address
send_transaction
Send native tokens or ERC20 tokens.
Parameters:
to(required): Recipient addressamount(required): Amount to sendtokenAddress(optional): ERC20 token contract addressgasLimit(optional): Gas limitgasPrice(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 numberblockHash(optional): Block hash
get_network_info
Get current network information and status.
estimate_gas
Estimate gas cost for a transaction.
Parameters:
to(required): Recipient addressvalue(optional): Value to senddata(optional): Transaction data
Smart Contracts
call_contract
Call a smart contract method (read-only).
Parameters:
contractAddress(required): Contract addressmethodName(required): Method nameparameters(optional): Method parametersabi(optional): Contract ABI
send_contract_transaction
Send a transaction to a smart contract.
Parameters:
contractAddress(required): Contract addressmethodName(required): Method nameparameters(optional): Method parametersabi(optional): Contract ABIvalue(optional): Ether value to sendgasLimit(optional): Gas limitgasPrice(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 supplymintable(optional): Whether the token should be mintable (default: false)gasLimit(optional): Gas limitgasPrice(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 addressto(required): Address to mint tokens toamount(required): Amount of tokens to mintgasLimit(optional): Gas limitgasPrice(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.mdScripts
# 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 testsContributing
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureCommit your changes:
git commit -m 'Add amazing feature'Push to the branch:
git push origin feature/amazing-featureOpen a Pull Request
π Security
Private Keys: Never commit private keys to version control
Environment Variables: Use
.envfiles for sensitive configurationNetwork 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
Model Context Protocol for the standardized interface
Ethers.js for Ethereum interactions
The Rootstock blockchain community
Available Tools
19 toolscall_contractC
Call a smart contract method (read-only)
| Name | Required | Description | Default |
|---|---|---|---|
| abi | No | Optional contract ABI | |
| contractAddress | Yes | Smart contract address | |
| methodName | Yes | Method name to call | |
| parameters | No | Method parameters |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the wallet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| decimals | No | Token decimals (default: 18) | |
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| initialSupply | Yes | Initial token supply | |
| mintable | No | Whether the token should be mintable (default: false) | |
| name | Yes | Token name (e.g., "My Token") | |
| symbol | Yes | Token symbol (e.g., "MTK") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| mintable | No | Whether the NFT should be mintable (default: false) | |
| name | Yes | NFT collection name (e.g., "My NFT Collection") | |
| symbol | Yes | NFT collection symbol (e.g., "MYNFT") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Optional transaction data | |
| to | Yes | Recipient address | |
| value | No | Optional value to send (in ether) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address to check balance for | |
| tokenAddress | No | Optional ERC20 token contract address |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| blockHash | No | Block hash (alternative to blockNumber) | |
| blockNumber | No | Block number (alternative to blockHash) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tokenAddress | Yes | Contract address of the NFT | |
| tokenId | No | Optional token ID to get specific token info |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tokenAddress | Yes | ERC20 token contract address |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Transaction hash |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| mnemonic | No | Mnemonic phrase to import (alternative to private key) | |
| name | No | Optional name for the wallet | |
| privateKey | No | Private key to import (alternative to mnemonic) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| to | Yes | Address to mint NFT to | |
| tokenAddress | Yes | Contract address of the mintable NFT | |
| tokenId | Yes | Token ID for the new NFT | |
| tokenURI | No | Metadata URI for the NFT (optional) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount of tokens to mint | |
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| to | Yes | Address to mint tokens to | |
| tokenAddress | Yes | ERC20 token contract address |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| abi | No | Optional contract ABI | |
| contractAddress | Yes | Smart contract address | |
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| methodName | Yes | Method name to call | |
| parameters | No | Method parameters | |
| value | No | Optional ether value to send |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to send (in token units, not wei) | |
| gasLimit | No | Optional gas limit | |
| gasPrice | No | Optional gas price | |
| to | Yes | Recipient address | |
| tokenAddress | No | Optional ERC20 token contract address (for token transfers) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address to set as current |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
v1.0.0- First observed
call_contract - First observed
create_wallet - First observed
deploy_erc20_token - First observed
deploy_erc721_token - First observed
estimate_gas - First observed
get_balance - First observed
get_block - First observed
get_current_wallet - First observed
get_network_info - First observed
get_nft_info - First observed
get_token_info - First observed
get_transaction - First observed
import_wallet - First observed
list_wallets - First observed
mint_nft - First observed
mint_tokens - First observed
send_contract_transaction - First observed
send_transaction - First observed
set_current_wallet
TDQS
Scored across 19 tools
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.
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.
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).
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
A Model Context Protocol (MCP) server for Selise Blocks Cloud integration
Provide AI agents and automation tools with contextual access to blockchain data including balanceβ¦
MEOK ABCI Bridge MCP β read-only Tendermint / Cosmos blockchain query for agents. Built-in registry
Hosted MCP server for live Bittensor chain reads and self-custodial on-chain writes.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA Model Context Protocol server providing tools for querying Bitcoin blockchain data via Blockchain Data and Query APIs, supporting various BTC information retrieval functions.1-
- -licenseNot gradedqualityNot gradedmaintenanceA 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-
- FlicenseBqualityDmaintenanceA Model Context Protocol server that allows AI assistants like Claude to directly query cryptocurrency and blockchain project data from RootData, including project information, organization details, and search results.36-
- -licenseNot gradedqualityNot gradedmaintenanceBackend 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-