EVM MCP Server
This EVM MCP Server provides comprehensive access to Ethereum Virtual Machine blockchain data through JSON-RPC methods, enabling blockchain analytics, smart contract interactions, and network monitoring across any EVM-compatible chain.
Core Capabilities:
Blockchain Data Queries: Retrieve latest block numbers, detailed block information, transaction details by hash, transaction receipts, account balances at any block height, transaction counts (nonces), contract bytecode, and storage values at specific positions.
Smart Contract Interactions: Execute read-only contract calls (eth_call), estimate gas costs (eth_estimateGas), and send pre-signed raw transactions (eth_sendRawTransaction).
Event & Log Monitoring: Query historical event logs (eth_getLogs) with flexible filtering by block range, contract addresses, and event topics/signatures.
Network Information: Access current gas prices, chain IDs, network versions, client versions, listening status, and peer counts.
Utility Functions: Compute Keccak-256 hashes (web3_sha3) and support multiple block references (latest, earliest, pending, specific numbers).
Universal Compatibility: Works with Ethereum (Mainnet, Sepolia, Goerli), Polygon, Arbitrum, Optimism, BNB Smart Chain, Avalanche, Fantom, and any custom EVM network. Compatible with Infura, Alchemy, QuickNode, local nodes (Geth, Erigon), public RPC endpoints, and any JSON-RPC provider. Configurable via RPC_URL and CHAIN_ID environment variables.
Supports Alchemy as an RPC node provider for accessing Ethereum and other EVM-compatible blockchain networks, enabling blockchain queries and operations through Alchemy's infrastructure.
Supports BNB Smart Chain (Binance Smart Chain) mainnet and testnet networks for blockchain operations and data queries through EVM JSON-RPC methods.
Provides comprehensive access to Ethereum Virtual Machine (EVM) JSON-RPC methods for querying blockchain data, checking balances, executing contract calls, estimating gas, retrieving transaction information, and monitoring network events across any EVM-compatible network.
Enables interaction with Fantom Opera blockchain network through EVM-compatible JSON-RPC methods for accessing blockchain data and executing operations.
Provides access to Optimism Layer 2 blockchain networks through EVM-compatible JSON-RPC methods for blockchain data queries and transaction operations.
Enables interaction with Polygon blockchain networks (mainnet and testnet) through EVM JSON-RPC methods for querying transactions, balances, smart contracts, and network data.
Click on "Install 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., "@EVM MCP Servercheck the balance of 0x742d35Cc6634C0532925a3b8D6Ac6e2F0C4C9B7C"
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.
โฝ EVM MCP Server
Complete EVM JSON-RPC access in your AI workflow. Query any EVM-compatible network (Ethereum, Polygon, Arbitrum, Optimism, BSC, and more) through any node provider. Works with Infura, Alchemy, QuickNode, local nodes, and more.
An MCP (Model Context Protocol) server that provides comprehensive access to Ethereum Virtual Machine (EVM) JSON-RPC methods for AI coding environments like Cursor and Claude Desktop.
Why Use EVM MCP?
๐ Any EVM Network โ Ethereum, Polygon, Arbitrum, Optimism, BSC, Avalanche, and more
๐ Any Node Provider โ Infura, Alchemy, QuickNode, local nodes, or custom RPC
๐ 20+ RPC Methods โ Complete access to blockchain data, transactions, and contracts
โก Easy Setup โ One-click install in Cursor or simple manual setup
๐ง Flexible Configuration โ Works with any JSON-RPC compatible endpoint
Related MCP server: MCP Crypto Wallet EVM
Quick Start
Ready to interact with EVM blockchains? Install in seconds:
Install in Cursor (Recommended):
Or install manually:
npm install -g @jamesanz/evm-mcp
# Or from source:
git clone https://github.com/JamesANZ/evm-mcp.git
cd evm-mcp && npm install && npm run buildFeatures
๐ข Blockchain Data
eth_blockNumberโ Get latest block numbereth_getBalanceโ Get account balanceeth_getTransactionCountโ Get transaction count (nonce)eth_getBlockByNumberโ Get block informationeth_getTransactionByHashโ Get transaction detailseth_getTransactionReceiptโ Get transaction receipteth_getCodeโ Get contract bytecodeeth_getStorageAtโ Get storage value
๐ Transactions
eth_callโ Execute contract calleth_estimateGasโ Estimate gas for transactioneth_sendRawTransactionโ Send signed transactioneth_gasPriceโ Get current gas price
๐งช Transaction Simulation (read-only, never broadcasts)
Craft transactions in natural language and simulate them against forked/overridden EVM state. Reports whether a transaction would succeed or revert, the revert reason in plain English, estimated gas, and balance/state changes. Supports address aliases and ENS names (e.g. alice.eth). By default the sender is funded with virtual ETH so a simulation can run "from" any address; set fund: false to use real balances.
simulate_native_transferโ Simulate sending native currency (e.g. "Transfer 100 ETH from A to B")simulate_erc20_transferโ Simulate an ERC20 transfer with human amounts (e.g. "Transfer 10 USDC to alice.eth from fun.eth")simulate_contract_callโ Encode a function signature + args and simulate the callsimulate_transactionโ Simulate a raw transaction (from/to/value/data)encode_function_dataโ Encode calldata from a human-readable signature (pure helper, no RPC)
These tools only use
eth_call,eth_estimateGas, anddebug_traceCall(when the provider supports it). They never sign or send a real transaction. Real state diffs are used whendebug_traceCallis available; otherwise changes are inferred from the decoded intent.
๐ Events & Logs
eth_getLogsโ Get event logs
๐ Network
list_supported_networksโ List configured networks and providerslist_known_addressesโ List configured wallet aliases and known token/contract addresseseth_chainIdโ Get chain IDnet_versionโ Get network versionnet_listeningโ Check if listeningnet_peerCountโ Get peer count
๐ Web3
web3_clientVersionโ Get client versionweb3_sha3โ Hash data with Keccak-256
Installation
Cursor (One-Click)
Click the install link above or use:
cursor://anysphere.cursor-deeplink/mcp/install?name=evm-mcp&config=eyJldm0tbWNwIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiQGphbWVzYW56L2V2bS1tY3AiXX19Manual Installation
Requirements: Node.js 18+ and npm
# Clone and build
git clone https://github.com/JamesANZ/evm-mcp.git
cd evm-mcp
npm install
npm run build
# Set provider API keys
export INFURA_API_KEY="your-infura-api-key"
export DEFAULT_NETWORK="ethereum"
export DEFAULT_PROVIDER="infura"
# Run server
npm startClaude Desktop
Add to claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"evm-mcp": {
"command": "node",
"args": ["/absolute/path/to/evm-mcp/build/index.js"],
"env": {
"INFURA_API_KEY": "your-infura-api-key",
"DEFAULT_NETWORK": "ethereum",
"DEFAULT_PROVIDER": "infura",
"RPC_PROVIDER_ORDER": "infura,alchemy"
}
}
}
}Restart Claude Desktop after configuration.
Configuration
Environment Variables
Variable | Required | Description |
| One of* | Infura project API key (built-in preset) |
| One of* | Alchemy app API key (built-in preset) |
| No | Default chain slug or chain ID (default: |
| No | Provider slug to prefer ( |
| No | Comma-separated provider fallback order (default: |
| One of* | JSON array of user-defined providers |
| One of* | JSON array of user-defined networks |
| No | JSON array of known tokens/contracts (network-scoped) |
| No | JSON array of personal wallet and contract aliases |
*At least one provider API key, custom provider, or custom network with rpcUrl is required.
Built-in Providers (Infura / Alchemy)
Set an API key and the server builds RPC URLs automatically for supported networks:
{
"INFURA_API_KEY": "your-infura-key",
"DEFAULT_NETWORK": "ethereum",
"DEFAULT_PROVIDER": "infura",
"RPC_PROVIDER_ORDER": "infura,alchemy"
}Each RPC tool accepts an optional network parameter (slug, name, or chain ID). When omitted, DEFAULT_NETWORK is used.
{
"tool": "eth_chainId",
"arguments": { "network": "polygon" }
}Use list_supported_networks to discover configured networks and providers.
Custom Providers (CUSTOM_PROVIDERS)
Register any RPC provider by supplying a base URL template and network-specific URLs:
"CUSTOM_PROVIDERS": "[{\"slug\":\"quicknode\",\"apiKeyEnv\":\"QUICKNODE_API_KEY\",\"baseUrl\":\"https://rpc.example.com/v1/{apiKey}\",\"networkUrls\":{\"ethereum\":\"https://eth.quiknode.pro/{apiKey}/\",\"polygon\":\"https://polygon.quiknode.pro/{apiKey}/\"}}]"Absolute
networkUrlsvalues are used directly (with{apiKey}substitution).Relative paths (starting with
/) are appended tobaseUrl.
Custom Networks (CUSTOM_NETWORKS)
Register arbitrary chains by name:
"CUSTOM_NETWORKS": "[{\"name\":\"HyperEVM\",\"slug\":\"hyperevm\",\"chainId\":999,\"rpcUrl\":\"https://rpc.hyperliquid.xyz/evm\"}]"Or route through a provider by setting provider and adding the network slug to that provider's networkUrls.
Known Addresses (KNOWN_ADDRESSES)
Register tokens and contracts by name so tools accept aliases like USDC instead of raw hex addresses. Each entry is scoped to a network:
"KNOWN_ADDRESSES": "[{\"name\":\"USDC\",\"address\":\"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\"network\":\"ethereum\",\"type\":\"token\",\"decimals\":6,\"aliases\":[\"usd-coin\"]}]"Field | Required | Description |
| yes | Primary lookup key |
| yes | Checksummed contract address |
| yes | Chain slug, name, chain ID, or network alias |
| no |
|
| no | Token decimals for formatted balances |
| no | Extra lookup keys |
When eth_getBalance is called with a token alias, the server uses the first configured wallet in WALLET_ADDRESSES as the token holder.
Wallet Addresses (WALLET_ADDRESSES)
Register personal wallets and contracts by alias so you can say "check my personal wallet" instead of pasting hex:
"WALLET_ADDRESSES": "[{\"name\":\"my-wallet\",\"address\":\"0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f\",\"aliases\":[\"personal\",\"my wallet\"],\"description\":\"Main EOA\"}]"Field | Required | Description |
| yes | Primary lookup key |
| yes | Wallet or contract address |
| no | Scope alias to one chain (default: all chains) |
| no | Extra lookup keys |
| no | Human-readable note |
Address aliases work in eth_getBalance, eth_getCode, eth_call, eth_getLogs, and other tools that accept address parameters. Use list_known_addresses to discover configured aliases.
Migration from RPC_URL
- "RPC_URL": "https://mainnet.infura.io/v3/KEY"
- "CHAIN_ID": "1"
+ "INFURA_API_KEY": "KEY"
+ "DEFAULT_NETWORK": "ethereum"
+ "DEFAULT_PROVIDER": "infura"Configuration changes require restarting the MCP server.
Supported Built-in Networks
Ethereum: Mainnet, Sepolia
Polygon: Mainnet, Amoy
Arbitrum: One, Sepolia
Optimism: Mainnet, Sepolia
BNB Smart Chain: Mainnet, Testnet
Avalanche: C-Chain
Base: Mainnet, Sepolia
Any EVM-compatible chain via
CUSTOM_NETWORKS
Usage Examples
Get Latest Block Number
Query the current block number:
{
"tool": "eth_blockNumber",
"arguments": {}
}Get Account Balance
Check an address balance using a hex address or configured alias:
{
"tool": "eth_getBalance",
"arguments": {
"address": "personal",
"blockNumber": "latest"
}
}Get Transaction Details
View transaction information:
{
"tool": "eth_getTransactionByHash",
"arguments": {
"txHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
}
}Call Smart Contract
Execute a contract call:
{
"tool": "eth_call",
"arguments": {
"to": "0xA0b86a33E6441c8C06DDD46C310c0eF8D9441C8F",
"data": "0x70a08231000000000000000000000000742d35Cc6634C0532925a3b8D6Ac6e2F0C4C9B7C"
}
}Get Event Logs
Query contract events:
{
"tool": "eth_getLogs",
"arguments": {
"fromBlock": "0x1234567",
"toBlock": "latest",
"address": "0xA0b86a33E6441c8C06DDD46C310c0eF8D9441C8F",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
}
}Use Cases
Blockchain Analytics โ Query transaction data, balances, and contract states
DeFi Applications โ Monitor token balances, transaction receipts, and smart contract calls
NFT Projects โ Track transfers, metadata, and collection statistics
Development Tools โ Debug transactions, estimate gas, and test smart contracts
Monitoring โ Watch for specific events and transaction patterns
Research โ Analyze blockchain data across multiple EVM networks
Technical Details
Built with: Node.js, TypeScript, MCP SDK, Ethers.js
Dependencies: @modelcontextprotocol/sdk, ethers, zod
Platforms: macOS, Windows, Linux
Environment Variables: See Configuration above.
Contributing
โญ If this project helps you, please star it on GitHub! โญ
Contributions welcome! Please open an issue or submit a pull request.
License
MIT License โ see LICENSE.md for details.
Support
If you find this project useful, consider supporting it:
โก Lightning Network
lnbc1pjhhsqepp5mjgwnvg0z53shm22hfe9us289lnaqkwv8rn2s0rtekg5vvj56xnqdqqcqzzsxqyz5vqsp5gu6vh9hyp94c7t3tkpqrp2r059t4vrw7ps78a4n0a2u52678c7yq9qyyssq7zcferywka50wcy75skjfrdrk930cuyx24rg55cwfuzxs49rc9c53mpz6zug5y2544pt8y9jflnq0ltlha26ed846jh0y7n4gm8jd3qqaautqaโฟ Bitcoin: bc1ptzvr93pn959xq4et6sqzpfnkk2args22ewv5u2th4ps7hshfaqrshe0xtp
ฮ Ethereum/EVM: 0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f
Available Tools
19 toolseth_blockNumberA
Returns the number of the most recent block
| 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 for behavioral disclosure. It states the return value but lacks information about potential errors, rate limits, network dependencies, or whether this is a read-only operation (though implied by 'Returns'). More behavioral context would be helpful given the absence of annotations.
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 function without any wasted words. It's perfectly front-loaded and appropriately sized for a simple query tool with no parameters.
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 completeness. It doesn't specify the return format (e.g., hex string, integer), potential errors, or blockchain context needed for proper use. More contextual information would improve 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?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters is 4, as no parameter explanation is needed.
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 ('Returns') and resource ('the number of the most recent block'), distinguishing it from siblings like eth_getBlockByNumber (which returns full block details) or eth_chainId (which returns chain identifier). It precisely communicates what the tool does without redundancy.
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 for retrieving the latest block number, but provides no explicit guidance on when to use this versus alternatives like eth_getBlockByNumber (for detailed block data) or other blockchain query tools. Usage context is implied rather than stated, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_callB
Executes a new message call immediately without creating a transaction
| Name | Required | Description | Default |
|---|---|---|---|
| blockNumber | No | Block number or 'latest', 'earliest', 'pending' | latest |
| data | Yes | Data to send (hex string) | |
| from | No | From address (optional) | |
| gas | No | Gas limit (optional) | |
| gasPrice | No | Gas price (optional) | |
| to | Yes | Contract address | |
| value | No | Value in wei (optional) |
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 'immediately without creating a transaction,' which hints at read-only behavior, but fails to disclose critical details like whether it requires authentication, rate limits, error handling, or what the return format looks like (e.g., hex data). For a tool with no 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 front-loads the key information ('executes a new message call immediately without creating a transaction'). There's no wasted text, 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 Ethereum RPC calls, no annotations, and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., side effects, error responses), return values, and practical usage context, making it incomplete for effective agent 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?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain interactions between parameters like 'from' and 'gas'). 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 ('executes a new message call') and distinguishes it from creating a transaction, which helps differentiate it from sibling tools like eth_sendRawTransaction. However, it doesn't explicitly contrast with other read-only siblings like eth_getBalance or eth_getCode, which also don't create transactions.
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 for immediate execution without transaction creation, suggesting it's for read-only or simulation purposes. However, it doesn't provide explicit guidance on when to use this versus alternatives like eth_estimateGas (for gas estimation) or other query tools, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_chainIdA
Returns the chain ID of the current network
| 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 full burden. It states the tool returns the chain ID, which implies a read-only operation, but does not disclose behavioral traits such as whether it requires authentication, has rate limits, or what format the return value takes (e.g., integer, hex string). This is a significant gap 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 with zero waste. It is front-loaded with the core purpose ('Returns the chain ID'), making it easy to parse and understand immediately. 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 tool's simplicity (0 parameters, no output schema), the description is complete enough for basic understanding. However, without annotations or output schema, it lacks details on return format, error handling, or network-specific behaviors, which could be important for an AI agent in complex contexts.
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, and schema description coverage is 100% (empty schema). The description does not need to add parameter semantics beyond stating no inputs are required, which it implicitly does by focusing on the return value. Baseline for 0 parameters is 4, as there is nothing to compensate for.
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 ('Returns') and resource ('chain ID of the current network'), distinguishing it from siblings like eth_blockNumber (returns block number) or net_version (returns network ID). It precisely defines what the tool does without 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?
The description implies usage for retrieving the chain ID, but provides no explicit guidance on when to use this tool versus alternatives like net_version (which returns network ID, a related but different concept). It lacks context on specific scenarios or exclusions, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_estimateGasC
Generates and returns an estimate of how much gas is necessary
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data to send (hex string) | |
| from | No | From address | |
| gas | No | Gas limit | |
| gasPrice | No | Gas price | |
| to | No | Contract address (optional for contract creation) | |
| value | No | Value in wei |
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 'Generates and returns an estimate,' implying a read-only, non-destructive operation, but doesn't clarify if it simulates transaction execution, requires network access, has rate limits, or what happens with invalid inputs. For a tool with 6 parameters and no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Generates and returns an estimate of how much gas is necessary') that front-loads the core purpose without unnecessary words. It earns its place by clearly stating the tool's function, 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 (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what the estimate is for (e.g., a transaction), how it's generated (e.g., via simulation), or what the return value looks like (e.g., a gas amount in hex). With no output schema and minimal behavioral context, the description fails to provide enough information for effective tool 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, with each parameter documented (e.g., 'data' as 'Data to send (hex string)'). The description adds no parameter-specific information beyond what the schema provides. According to the rules, with high schema coverage (>80%), the baseline score is 3 even without param info in the description, as the schema adequately covers semantics.
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 purpose ('Generates and returns an estimate of how much gas is necessary'), which is clear but vague. It specifies the verb ('Generates and returns') and resource ('estimate of how much gas'), but doesn't distinguish it from siblings like eth_gasPrice (which returns current gas price) or eth_call (which executes a call without sending a transaction). The description is adequate but lacks specificity about what transaction or operation is being estimated.
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 siblings like eth_call (for simulating calls) or eth_gasPrice (for current gas prices), nor does it specify prerequisites or contexts (e.g., before sending a transaction). Without any usage context, the agent must infer from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_gasPriceA
Returns the current price per gas in wei
| 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. It states the tool returns a value but doesn't mention if it's read-only, requires authentication, has rate limits, or details the return format (e.g., numeric wei value). This leaves significant gaps for a tool 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 no wasted words. It front-loads the core functionality ('Returns the current price per gas in wei'), making it immediately clear and easy to parse.
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 tools and lack of annotations or output schema, the description is insufficient. It doesn't explain the return value format (e.g., integer wei), potential errors, or behavioral traits like network dependencies, leaving the agent with incomplete context for reliable 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 tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description appropriately omits parameter details, focusing on the tool's purpose, which aligns 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 specific action ('Returns') and resource ('current price per gas in wei'), distinguishing it from siblings like eth_blockNumber or eth_estimateGas. It precisely defines what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing the current gas price, but provides no explicit guidance on when to use this versus alternatives (e.g., eth_estimateGas for transaction-specific estimates) or any exclusions. It lacks named alternatives or contextual boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getBalanceC
Returns the balance of the account of given address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Address to check balance for | |
| blockNumber | No | Block number or 'latest', 'earliest', 'pending' | latest |
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 it 'Returns the balance' but doesn't specify units (e.g., wei, ether), error conditions, rate limits, or authentication needs. For a read operation 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 with zero waste. It's front-loaded with the core purpose, making it highly concise and well-structured for quick understanding.
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 queries, no annotations, and no output schema, the description is incomplete. It lacks details on return format (e.g., numeric balance in wei), error handling, or dependencies. For a tool with 2 parameters and rich context signals, this minimal description is inadequate.
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 description coverage is 100%, so the schema already documents both parameters (address and blockNumber) adequately. The description implies the address parameter but doesn't add syntax, format, or contextual details beyond what the schema provides. Baseline 3 is appropriate when the schema handles parameter documentation.
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 ('Returns') and resource ('balance of the account'), making the purpose specific and understandable. It distinguishes from siblings like eth_getTransactionCount or eth_getCode by focusing on balance retrieval. However, it doesn't explicitly contrast with all siblings, 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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or comparisons to other tools (e.g., eth_call for more complex queries). This leaves the agent without explicit usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getBlockByNumberC
Returns information about a block by block number
| Name | Required | Description | Default |
|---|---|---|---|
| blockNumber | Yes | Block number (hex) or 'latest', 'earliest', 'pending' | |
| includeTransactions | No | Include full transaction objects |
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 returns information but does not describe what information is returned, potential errors, rate limits, or authentication needs. For a read operation with no annotation coverage, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Returns information about a block by block number.' It is front-loaded with the core purpose and contains no unnecessary words, 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 blockchain data retrieval and the lack of annotations and output schema, the description is incomplete. It does not explain what specific block information is returned, how to interpret results, or handle edge cases like invalid block numbers. For a tool with rich data output and 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?
Schema description coverage is 100%, with clear descriptions for both parameters in the input schema. The description does not add any additional meaning beyond what the schema provides, such as explaining the format of returned block information or transaction objects. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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: 'Returns information about a block by block number.' It specifies the verb ('returns') and resource ('block'), but does not differentiate it from sibling tools like 'eth_getTransactionByHash' or 'eth_getTransactionReceipt', which also return block-related information. The purpose is clear but lacks 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 does not mention sibling tools like 'eth_blockNumber' (which gets the current block number) or 'eth_getTransactionByHash' (which gets transaction details), nor does it specify use cases or prerequisites. Usage is implied from the purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getCodeC
Returns code at a given address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Contract address | |
| blockNumber | No | Block number or 'latest', 'earliest', 'pending' | latest |
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 states the action ('returns code') but lacks behavioral details like what 'code' entails (e.g., bytecode, runtime code), error conditions (e.g., invalid address), or performance aspects (e.g., response format, potential delays). This leaves significant gaps for a tool with no annotation support.
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 is front-loaded and appropriately sized for its purpose, making it easy to parse without unnecessary elaboration.
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 does not explain what 'code' returns (e.g., bytecode string, hex data) or handle complexities like non-contract addresses, leaving the agent without sufficient context for reliable 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?
Schema description coverage is 100%, so the schema fully documents parameters ('address' as contract address, 'blockNumber' with defaults). The description adds no additional meaning beyond the schema, such as explaining parameter interactions or constraints, meeting the baseline for high 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 'Returns code at a given address' clearly states the verb ('returns') and resource ('code'), making the purpose understandable. However, it does not explicitly differentiate from siblings like 'eth_getStorageAt' (which returns storage data) or 'eth_getBalance' (which returns balance), missing full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 lacks context such as use cases (e.g., verifying contract deployment, analyzing bytecode) or exclusions (e.g., not for non-contract addresses), leaving the agent with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getLogsC
Returns an array of all logs matching a given filter object
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Contract address (optional) | |
| fromBlock | No | Starting block (hex or 'latest', 'earliest', 'pending') | |
| toBlock | No | Ending block (hex or 'latest', 'earliest', 'pending') | |
| topics | No | Array of topic filters (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. It states the tool returns logs but doesn't mention critical behaviors like potential performance impacts for large block ranges, rate limits, or that it's a read-only query (implied by 'Returns' but not explicit). 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 that front-loads the core functionality ('Returns an array of all logs') and specifies the key constraint ('matching a given filter object'). There is no wasted verbiage, making it highly concise and well-structured for quick comprehension.
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 complexity (filtering blockchain logs with 4 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain the structure of returned logs, error conditions, or performance considerations, leaving the agent under-informed for a non-trivial query operation in a blockchain 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 schema description coverage is 100%, with each parameter well-documented in the input schema (e.g., address as contract address, fromBlock/toBlock with hex or special values). The description adds no additional semantic context beyond implying a 'filter object' maps to these parameters, so it meets the baseline for high schema coverage without compensating value.
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 ('Returns an array') and resource ('all logs matching a given filter object'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like eth_getTransactionReceipt or eth_getBlockByNumber, which also retrieve blockchain data, so it misses the highest 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, such as eth_getTransactionReceipt for transaction-specific logs or eth_getBlockByNumber for block-level data. It lacks context about use cases like event monitoring or debugging, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getStorageAtC
Returns the value from a storage position at a given address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Contract address | |
| blockNumber | No | Block number or 'latest', 'earliest', 'pending' | latest |
| position | Yes | Storage position (hex string) |
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 states the tool returns a value but lacks details on behavioral traits: it doesn't specify if this is a read-only operation (implied but not explicit), potential errors (e.g., invalid address), performance considerations, or the format of the returned value (e.g., hex string). This leaves significant gaps for an agent to understand how to handle the tool effectively.
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, clear sentence with no wasted words. It front-loads the core action ('Returns the value') and efficiently conveys the essential purpose, 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 complexity (EVM storage access) and lack of annotations or output schema, the description is insufficient. It doesn't explain the return value format, error conditions, or practical usage context (e.g., for debugging contracts). This leaves the agent with incomplete information to invoke the tool correctly and interpret results.
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 parameters like 'address' as 'Contract address' and 'position' as 'Storage position (hex string)'. The description adds no additional semantic context beyond what the schema provides, such as explaining what a storage position represents in Ethereum or how to derive it. 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 action ('Returns the value') and target ('from a storage position at a given address'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from similar siblings like eth_getBalance or eth_getCode, which also retrieve data from addresses but for different types of data.
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 use cases like inspecting contract state variables, comparing it to eth_call for more complex queries, or specifying prerequisites such as needing a contract address with storage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getTransactionByHashC
Returns the information about a transaction requested by transaction hash
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | Yes | Transaction hash |
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 it 'Returns the information about a transaction', which implies a read-only operation, but doesn't specify what information is included (e.g., sender, receiver, gas, status), whether it's real-time or historical, error conditions (e.g., invalid hash), or performance aspects like rate limits. For a tool with zero annotation coverage, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 resource, making it easy to parse. Every word earns its place, and there's no redundancy or unnecessary elaboration.
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 complexity (querying blockchain transactions), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what information is returned (e.g., transaction details like from, to, value), potential errors, or behavioral traits. For a tool in this context, more detail is needed to fully guide an AI agent, especially without structured output data.
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, with the parameter 'txHash' documented as 'Transaction hash'. The description adds no additional meaning beyond this, as it only repeats 'transaction hash' without elaborating on format (e.g., hex string, length) or constraints. With high schema coverage, the baseline is 3, and the description doesn't compensate with extra 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 action ('Returns the information about a transaction') and the resource ('transaction'), specifying it's requested by 'transaction hash'. It distinguishes from siblings like eth_getTransactionReceipt (which returns receipt data) and eth_getTransactionCount (which counts transactions), though not explicitly. However, it doesn't fully differentiate from all siblings (e.g., eth_getBlockByNumber also returns transaction info within blocks), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 when to choose it over eth_getTransactionReceipt (for receipt data) or eth_getBlockByNumber (for block-level transaction details), nor does it specify prerequisites like needing a valid hash. Usage is implied by the name and description alone, with no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getTransactionCountB
Returns the number of transactions sent from an address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Address to check transaction count for | |
| blockNumber | No | Block number or 'latest', 'earliest', 'pending' | latest |
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 states the tool returns a count but does not disclose behavioral traits such as whether it requires authentication, rate limits, error conditions, or the format of the returned value (e.g., integer, hex). For a tool with no annotation coverage, this leaves significant gaps in understanding its operation.
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, direct sentence with no wasted words, front-loading the core purpose. It is appropriately sized for a simple query tool and efficiently communicates the essential function without unnecessary elaboration.
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 lacks details on return value format, error handling, or behavioral constraints, which are crucial for a tool that interacts with blockchain data. The description alone does not provide enough context for reliable agent 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?
Schema description coverage is 100%, so the schema fully documents both parameters (address and blockNumber). The description does not add any meaning beyond what the schema provides, such as explaining parameter interactions or edge cases. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 ('Returns the number of transactions sent') and the target resource ('from an address'), distinguishing it from siblings like eth_getBalance (returns balance) or eth_getTransactionByHash (returns transaction details). It uses precise terminology that matches the tool's name and domain.
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 for checking transaction counts from addresses, but provides no explicit guidance on when to use this tool versus alternatives like eth_getTransactionByHash (for specific transaction details) or eth_getLogs (for event logs). It lacks context on prerequisites or exclusions, leaving usage inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_getTransactionReceiptC
Returns the receipt of a transaction by transaction hash
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | 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 of behavioral disclosure. It states the tool returns a receipt but does not clarify what a receipt entails (e.g., success status, gas used, logs), whether it's read-only, or any rate limits or error conditions. 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, direct sentence with zero waste, clearly stating the tool's function without unnecessary details. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not explain what a transaction receipt includes (e.g., success indicators, gas details) or potential errors, which are crucial for a tool in a complex domain like blockchain transactions. More context is needed for 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 schema description coverage is 100%, with the parameter 'txHash' well-documented in the schema. The description adds no additional meaning beyond implying the hash is used to fetch the receipt, aligning with the baseline score when the schema handles parameter documentation effectively.
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 ('Returns') and resource ('receipt of a transaction'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'eth_getTransactionByHash', which might retrieve different transaction details, leaving room for slight 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, such as 'eth_getTransactionByHash' for raw transaction data or other siblings for different blockchain queries. The description lacks context on prerequisites or exclusions, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_sendRawTransactionC
Creates new message call transaction or a contract creation
| Name | Required | Description | Default |
|---|---|---|---|
| signedTransactionData | Yes | Signed transaction data (hex string) |
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 tool creates transactions, implying a write operation, but lacks critical details: it doesn't specify that this is a destructive/mutative action, mention authentication needs, rate limits, network effects, or error handling. This is inadequate for a tool that likely modifies blockchain state.
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, front-loaded sentence that directly states the tool's function without any fluff or redundancy. Every word earns its place, making it efficient for quick understanding.
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 complexity (a transaction creation tool in Ethereum, which is inherently mutative and high-stakes), the description is incomplete. With no annotations and no output schema, it fails to address key aspects like behavioral traits (e.g., irreversibility, gas costs), error responses, or return values, 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 description adds no parameter-specific information beyond what the input schema provides. Since schema description coverage is 100% (the single parameter 'signedTransactionData' is well-documented in the schema), the baseline score of 3 applies, as the schema already covers the parameter meaning adequately.
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 specific verbs ('creates new message call transaction or a contract creation'), distinguishing it from read-only siblings like eth_getBalance or eth_call. However, it doesn't explicitly differentiate from other transaction-related tools like eth_estimateGas, which is why it doesn't reach a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 signed transaction data), exclusions, or compare it to siblings like eth_estimateGas for gas estimation or eth_call for simulation, leaving the agent with no contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_listeningA
Returns true if client is actively listening for network connections
| 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 for behavioral disclosure. It states the return value (true/false) but doesn't explain what 'actively listening' means in practice, whether there are timing considerations, error conditions, or what false might indicate. For a diagnostic tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the essential information without any wasted words. It's appropriately sized for a simple diagnostic tool and front-loads the key information (returns true if...).
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 zero-parameter diagnostic tool with no output schema, the description provides the basic return value but lacks context about interpretation, error handling, or typical usage scenarios. It's minimally adequate but doesn't give the agent enough guidance to use the tool effectively in various contexts.
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 zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't waste space discussing non-existent parameters and focuses on the tool's core functionality.
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 ('Returns true') and the resource being checked ('if client is actively listening for network connections'). It distinguishes itself from sibling tools by focusing on network listening status rather than blockchain queries or version information.
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. While it's clear what the tool does, there's no mention of typical use cases, prerequisites, or how it differs from other network-related tools like net_peerCount or net_version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_peerCountA
Returns number of peers currently connected to the client
| 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. It states the tool returns a count but does not specify the format (e.g., integer, hex), whether it's real-time or cached, potential errors, or rate limits. This leaves significant gaps in understanding how the tool 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, clear sentence that directly states the tool's purpose with no wasted words. It is front-loaded and efficiently conveys the essential information without unnecessary elaboration, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no annotations, no output schema), the description is adequate as a basic read operation. However, it lacks details on output format (e.g., numeric or hex representation) and behavioral context (e.g., latency, reliability), which could help the agent use it more effectively 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 tool has zero parameters, and the input schema has 100% description coverage (though empty). The description appropriately omits parameter details, as there are none to explain, making it efficient and avoiding redundancy. A baseline of 4 is justified since no parameters exist to document.
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 ('Returns') and resource ('number of peers currently connected to the client'), distinguishing it from sibling tools like net_listening (connection status) or net_version (network ID). It precisely defines what the tool does without 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?
The description provides no guidance on when to use this tool versus alternatives like net_listening or other network-related tools. It lacks context about typical use cases (e.g., monitoring network health) or prerequisites, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_versionB
Returns the current network id
| 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. It states the tool returns a value, implying a read-only operation, but does not specify whether it requires authentication, has rate limits, or details about the return format (e.g., numeric ID, string). This leaves significant gaps in understanding the tool's behavior beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasteโit directly states the tool's function without fluff or redundancy. It is appropriately sized for a simple, parameterless tool and front-loads the essential information, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 complete but lacks depth. It explains what the tool does but does not provide context on the return value format or how it differs from similar tools like 'eth_chainId'. For a basic read operation, this is adequate but leaves room for improvement in guiding the agent 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 tool has 0 parameters, and the schema description coverage is 100%, so the description does not need to compensate for missing parameter documentation. The baseline for 0 parameters is 4, as there are no parameters to explain, and the description appropriately focuses on the tool's output without unnecessary parameter 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 action ('Returns') and the resource ('the current network id'), making the purpose immediately understandable. It distinguishes from siblings like 'eth_chainId' by specifying 'network id' rather than 'chain id', though the distinction could be more explicit. It avoids tautology by not just restating the tool name 'net_version'.
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, such as 'eth_chainId' or other network-related siblings. It lacks context on prerequisites, typical use cases, or any explicit when/when-not instructions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web3_clientVersionB
Returns the current client version
| 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 returns a value but doesn't specify the return format (e.g., string, object), potential errors, or any side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations, no output schema), the description is minimally adequate but lacks depth. It doesn't explain the return value format or potential use cases, which could help an agent understand how to interpret the result. However, for such a straightforward tool, it meets basic requirements.
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, as there are none, which aligns with the schema and avoids redundancy.
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 ('Returns') and resource ('the current client version'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'net_version' or 'eth_chainId', which might also provide version-related information in different contexts.
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 sibling tools like 'net_version' available, there's no indication of whether this tool is for general client version retrieval, debugging, or specific use cases, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web3_sha3B
Returns Keccak-256 hash of the given data
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data to hash (hex string starting with 0x) |
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 basic function but lacks details on performance, error handling, or any constraints (e.g., input size limits, rate limits). For a cryptographic tool, 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 with zero waste. It's front-loaded with the core purpose and uses precise terminology ('Keccak-256'), 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 tool's low complexity (single parameter, no output schema) and high schema coverage, the description is minimally adequate. However, it lacks context about the hash algorithm's specifics or common use cases, which would be helpful 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?
Schema description coverage is 100%, so the schema already fully documents the single parameter 'data'. The description adds no additional parameter semantics beyond what's in the schema, resulting in a baseline score of 3.
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 ('Returns') and resource ('Keccak-256 hash of the given data'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like other hashing functions, but the specificity of 'Keccak-256' helps distinguish it from general hash 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 sibling tools or suggest contexts where Keccak-256 hashing is appropriate, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap, as they map directly to standard Ethereum JSON-RPC methods. For example, eth_getBalance retrieves account balances, eth_getTransactionByHash fetches transaction details, and web3_clientVersion returns client info, all serving unique functions in the EVM ecosystem.
The tool names follow a highly consistent pattern, using prefixes like 'eth_', 'net_', and 'web3_' followed by descriptive, standard method names in snake_case. This uniformity makes the tools predictable and easy to identify, aligning with Ethereum API conventions.
With 19 tools, this server is well-scoped for an EVM interface, covering essential operations such as querying blocks, transactions, balances, network info, and executing calls. The count is appropriate, providing comprehensive coverage without being overwhelming for the domain.
The tool set offers complete coverage of core EVM functionalities, including reading data (e.g., blocks, balances, logs), writing transactions (e.g., eth_sendRawTransaction), and utility operations (e.g., gas estimation, hashing). There are no obvious gaps, enabling agents to handle typical blockchain interactions seamlessly.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Safety-first EVM and Bitcoin RPC tools for balances, contracts, blocks, and transactions
Read-only on-chain intelligence for AI agents on Base: balances, tokens, gas, tx status.
Provide AI agents and automation tools with contextual access to blockchain data including balanceโฆ
Query real-time blockchain token data across EVM and Solana networks. Access token balances, transfers, prices, holders, NFT ownership, DEX swaps, and liquidity pools. Supports Ethereum, Base, Arbitrum, BSC, Polygon, Solana, and more.
Related MCP Servers
- AlicenseBqualityFmaintenanceProvides tools for AI assistants to interact with the Ethereum blockchain through standard JSON-RPC methods, enabling queries for account balances, gas prices, and smart contract code.34412MIT
- AlicenseBqualityDmaintenanceProvides Claude with access to Ethereum and EVM-compatible blockchain operations, enabling wallet management, transaction handling, contract interactions, and blockchain queries through natural language.4356110MIT

ChainFETCH MCP Serverofficial
AlicenseCqualityDmaintenanceEnables AI-powered analysis of Ethereum blockchain data through semantic search, natural language queries, and structured filtering. Provides comprehensive access to addresses, transactions, blocks, tokens, and smart contracts with real-time blockchain intelligence.26161MIT- FlicenseNot gradedqualityDmaintenanceProvides tools for querying onchain data across 12+ blockchain networks, including token balances, transaction analysis, and smart contract security auditing. It enables users to interact with multiple EVM-compatible chains and perform deep contract evaluations through natural language interfaces.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JamesANZ/evm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server