Skip to main content
Glama
covalenthq

GoldRush MCP Server

by covalenthq

GoldRush MCP Server

NPM Version NPM Downloads GitHub license GitHub last commit GitHub contributors GitHub issues GitHub pull requests

GitHub stars GitHub forks

šŸ“– Documentation


This project provides a MCP (Model Context Protocol) server that exposes Covalent's GoldRush APIs as MCP resources and tools. It is implemented in TypeScript using @modelcontextprotocol/sdk and @covalenthq/client-sdk.


Table of Contents


Related MCP server: 3xpl MCP Server

Key Features

Model Context Protocol (MCP) is a message protocol for connecting context or tool-providing servers with LLM clients. This server allows an LLM client to:

  • Call Covalent GoldRush API endpoints as MCP Tools

  • Read from MCP Resources that give chain info, quote currencies, chain statuses, etc.

  • Flexible Transport Support: Unified server supporting both STDIO and HTTP transports

  • Command-line Interface: Easy configuration via CLI arguments

  • Fully testable with Vitest for testing each group of tools.

  • Modular architecture where each service is implemented as a separate module, making the codebase easier to maintain and extend.


Getting Started

GoldRush API key

Using any of the GoldRush developer tools requires an API key. Get yours at https://goldrush.dev/platform/auth/register/

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

{
    "mcpServers": {
        "goldrush": {
            "command": "npx",
            "args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
            "env": {
                "GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
            }
        }
    }
}

For more details follow the official MCP Quickstart for Claude Desktop Users

Usage with Claude Code CLI

$ claude mcp add goldrush -e GOLDRUSH_API_KEY=<YOUR_API_KEY_HERE> -- npx -y @covalenthq/goldrush-mcp-server@latest

For more details see Set up Model Context Protocol (MCP)

Usage with Cursor

  1. Open Cursor Settings

  2. Go to Features > MCP

  3. Click + Add new global MCP server

  4. Add this to your ~/.cursor/mcp.json:

{
    "mcpServers": {
        "goldrush": {
            "command": "npx",
            "args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
            "env": {
                "GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
            }
        }
    }
}

For project specific configuration, add the above to a .cursor/mcp.json file in your project directory. This allows you to define MCP servers that are only available within that specific project.

After adding, refresh the MCP server list to see the new tools. The Composer Agent will automatically use any MCP tools that are listed under Available Tools on the MCP settings page if it determines them to be relevant. To prompt tool usage intentionally, simply tell the agent to use the tool, referring to it either by name or by description.

See Example LLM Flow

Usage with Windsurf

Add this to your ~/.codeium/windsurf/mcp_config.json file:

{
    "mcpServers": {
        "goldrush": {
            "command": "npx",
            "args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
            "env": {
                "GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
            }
        }
    }
}

Programmatic Usage

The server supports both STDIO and HTTP transports for different integration scenarios:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
    command: "npx",
    args: ["-y", "@covalenthq/goldrush-mcp-server@latest"],
    env: { GOLDRUSH_API_KEY: "your_api_key_here" },
});

const client = new Client(
    {
        name: "example-client",
        version: "1.0.0",
    },
    {
        capabilities: {
            tools: {},
        },
    }
);

await client.connect(transport);

// List tools and call them
const tools = await client.listTools();
console.log(
    "Available tools:",
    tools.tools.map((tool) => tool.name).join(", ")
);

const result = await client.callTool({
    name: "token_balances",
    arguments: {
        chainName: "eth-mainnet",
        address: "0xfC43f5F9dd45258b3AFf31Bdbe6561D97e8B71de",
        quoteCurrency: "USD",
        nft: false,
    },
});
console.log("Token balances:", result.content);

HTTP Transport (For Web Integrations)

# Start the HTTP server
node dist/index.js --transport http --port 3000

Then make HTTP requests:

const response = await fetch("http://localhost:3000/mcp", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization: "Bearer YOUR_GOLDRUSH_API_KEY",
    },
    body: JSON.stringify({
        jsonrpc: "2.0",
        id: 1,
        method: "tools/call",
        params: {
            name: "token_balances",
            arguments: {
                chainName: "eth-mainnet",
                address: "0xfC43f5F9dd45258b3AFf31Bdbe6561D97e8B71de",
                quoteCurrency: "USD",
                nft: false,
            },
        },
    }),
});

const result = await response.json();
console.log("Token balances:", result);

Example LLM Flow

  1. An LLM-based application starts.

  2. It spawns or connects to this MCP server.

  3. The LLM decides to call a tool like transaction_summary to gather data about a wallet.

  4. The server calls the Covalent endpoint under the hood, returns JSON to the LLM, which then uses it in the conversation context.


Tools

Tools are a powerful primitive in the Model Context Protocol (MCP) that enable servers to expose executable functionality to clients. Through tools, LLMs can interact with external systems, perform computations, and take actions in the real world.

Tools are designed to be model-controlled, meaning that tools are exposed from servers to clients with the intention of the AI model being able to automatically invoke them (with a human in the loop to grant approval).

  1. bitcoin_hd_wallet_balances

    • Fetch balances for each active child address derived from a Bitcoin HD wallet. This tool provides detailed balance data for Bitcoin wallets identified by an xpub key. Required: walletAddress - The xpub key of the HD wallet. Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc). Returns complete balance details including total balance, available balance, and transaction history summary.

  2. bitcoin_non_hd_wallet_balances

    • Fetch Bitcoin balance for a non-HD address. Response includes spot prices and other metadata. This tool provides detailed balance data for regular Bitcoin addresses. Required: walletAddress - The Bitcoin address to query. Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc). Returns complete balance details including total balance, available balance, and transaction count.

  3. bitcoin_transactions

    • Fetch transactions for a specific Bitcoin address with full transaction details. Required: address - The Bitcoin address to query. Optional: pageSize - Number of results per page (default 100), pageNumber - Page number (default 0). Returns a paginated list of transactions with timestamps, amounts, inputs, outputs, and fees.

  4. block

    • Commonly used to fetch and render a single block for a block explorer. Requires chainName (blockchain network) and blockHeight (block number). Returns comprehensive block data including timestamp, transaction count, size, miner information, and other blockchain-specific details.

  5. block_heights

    • Commonly used to get all the block heights within a particular date range. Requires chainName (blockchain network), startDate (YYYY-MM-DD format), and endDate (YYYY-MM-DD or 'latest'). Optional pagination parameters include pageSize (default 10) and pageNumber (default 0). Returns block heights, timestamps, and related data for blocks within the specified date range, useful for historical analysis and time-based blockchain queries.

  6. erc20_token_transfers

    • Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency for value conversion, contractAddress to filter by specific token, startingBlock/endingBlock to set range, pageSize (default 10) and pageNumber (default 0). Returns token transfer events with timestamps, values, and transaction details.

  7. gas_prices

    • Get real-time gas estimates for different transaction speeds on a specific network, enabling users to optimize transaction costs and confirmation times. Requires chainName (blockchain network) and eventType (erc20, nativetokens, or uniswapv3). Optional parameter quoteCurrency allows conversion to different currencies (USD, EUR, etc). Returns estimated gas prices for low, medium, and high priority transactions for the specified event type.

  8. historical_portfolio_value

    • Commonly used to render a daily portfolio balance for an address broken down by the token. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency for value conversion, days (timeframe to analyze, default 7). Returns portfolio value time series data showing value changes over the specified timeframe.

  9. historical_token_balances

    • Commonly used to fetch the historical native and fungible (ERC20) tokens held by an address at a given block height or date. Required: chainName (blockchain network), address (wallet address). Optional: quoteCurrency for value conversion, blockHeight or date to specify point in time, nft (include NFTs, default false), noNftFetch, noSpam, and noNftAssetMetadata (all default true). Returns token balances as they existed at the specified historical point.

  10. historical_token_prices

    • Commonly used to get historic prices of a token between date ranges. Supports native tokens. Required: chainName (blockchain network), quoteCurrency (price currency), contractAddress (token contract), from (start date YYYY-MM-DD), to (end date YYYY-MM-DD). Optional: pricesAtAsc (set to true for chronological ascending order, default is false for descending order). Returns historical token prices for the specified time range.

  11. log_events_by_address

    • Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions. Requires chainName (blockchain network) and contractAddress (the address emitting events). Optional parameters include block range (startingBlock, endingBlock) and pagination settings (pageSize default 10, pageNumber default 0). Returns decoded event logs for the specified contract, useful for monitoring specific smart contract activity and analyzing on-chain events.

  12. log_events_by_topic

    • Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain. Requires chainName (blockchain network) and topicHash (the event signature hash). Optional parameters include block range (startingBlock, endingBlock), secondaryTopics for filtering by additional parameters, and pagination settings (pageSize default 10, pageNumber default 0). Returns decoded event logs matching the specified topic hash, ideal for tracking specific event types across multiple contracts on a blockchain.

  13. multichain_address_activity

    • Gets a summary of wallet activity across all supported blockchains. Requires walletAddress. Optional parameter testnets (default false) determines whether to include testnet activity. Returns a comprehensive summary of chain activity including transaction counts, first/last activity timestamps, and activity status across all networks.

  14. multichain_balances

    • Gets token balances for a wallet address across multiple blockchains. Requires walletAddress. Optional parameters include chains array to specify networks, quoteCurrency for value conversion, limit (default 10), pagination (before), and cutoffTimestamp to filter by time. Use this to get a comprehensive view of token holdings across different blockchains.

  15. multichain_transactions

    • Gets transactions for multiple wallet addresses across multiple blockchains. Requires addresses array. Optional parameters include chains array, pagination (before/after), limit (default 10), quoteCurrency for value conversion, and options to include logs (withLogs, withDecodedLogs). Use this to analyze transaction history across different networks simultaneously.

  16. native_token_balance

    • Get the native token balance (ETH, BNB, MATIC, etc.) for a specified wallet address on a blockchain. Required: chainName (blockchain network) and walletAddress. Optional: quoteCurrency for value conversion and blockHeight for historical queries. Returns detailed balance information including formatted amounts and USD values.

  17. nft_check_ownership

    • Commonly used to verify ownership of NFTs (including ERC-721 and ERC-1155) within a collection. Required: chainName (blockchain network), walletAddress (wallet address), collectionContract (NFT collection). Optional: traitsFilter (filter by trait types), valuesFilter (filter by trait values). Returns ownership status and matching NFTs if owned.

  18. nft_for_address

    • Commonly used to get all NFTs owned by a specific wallet address on a blockchain. Useful for NFT portfolio viewers. Required: chainName (blockchain network), walletAddress (wallet address). Optional: noSpam (exclude spam NFTs, default true), noNftAssetMetadata (exclude detailed metadata, default false), withUncached (include uncached items, default false). Returns a comprehensive list of all NFTs owned by the specified wallet.

  19. pool_spot_prices

    • Get the spot token pair prices for a specified pool contract address. Supports pools on Uniswap V2, V3 and their forks. Required: chainName (blockchain network), contractAddress (pool contract address). Optional: quoteCurrency (price currency) for value conversion. Returns spot token pair prices with pool details and token metadata.

  20. token_approvals

    • Commonly used to get a list of approvals across all token contracts categorized by spenders for a wallet's assets. Required: chainName (blockchain network, e.g. eth-mainnet or 1), walletAddress (wallet address, supports ENS, RNS, Lens Handle, or Unstoppable Domain). Returns a list of ERC20 token approvals and their associated security risk levels.

  21. token_balances

    • Commonly used to fetch the native and fungible (ERC20) tokens held by an address. Required: chainName (blockchain network), address (wallet address). Optional: quoteCurrency for value conversion, nft (include NFTs, default false), noNftFetch, noSpam, and noNftAssetMetadata (all default true) to control data returned. Returns detailed token balance information including spot prices and metadata.

  22. token_holders

    • Used to get a paginated list of current or historical token holders for a specified ERC20 or ERC721 token. Required: chainName (blockchain network), tokenAddress (token contract address). Optional: blockHeight or date for historical data, pageSize and pageNumber for pagination. Returns list of addresses holding the token with balance amounts and ownership percentages.

  23. transaction

    • Commonly used to fetch and render a single transaction including its decoded log events. Required: chainName (blockchain network), txHash (transaction hash). Optional: quoteCurrency (currency to convert to, USD by default), noLogs (exclude event logs, true by default), withInternal (include internal transactions, false by default), withState (include state changes, false by default), withInputData (include input data, false by default). Tracing features (withInternal, withState, withInputData) supported on the following chains: eth-mainnet. Returns comprehensive details about the specified transaction.

  24. transaction_summary

    • Commonly used to fetch the earliest and latest transactions, and the transaction count for a wallet. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency, withGas (include gas usage statistics). Returns summary of transaction activity for the specified wallet.

  25. transactions_for_address

    • Commonly used to fetch and render the most recent transactions involving an address. Required: chainName (blockchain network), walletAddress (wallet address), page (page number). Optional: quoteCurrency, noLogs, blockSignedAtAsc (chronological order). Returns transactions for the specified page of results.

  26. transactions_for_block

    • Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions. Required: chainName (blockchain network), blockHeight (block number or latest). Optional: quoteCurrency, noLogs (exclude event logs). Returns all transactions from the specified block.


Resources

Resources are a core primitive in the Model Context Protocol (MCP) that allow servers to expose data and content that can be read by clients and used as context for LLM interactions.

Resources are designed to be application-controlled, meaning that the client application can decide how and when they should be used. Different MCP clients may handle resources differently. For example:

  • Claude Desktop currently requires users to explicitly select resources before they can be used

  • Other clients might automatically select resources based on heuristics

  • Some implementations may even allow the AI model itself to determine which resources to use

Resources exposed by the GoldRush MCP server are split into static and dynamic types:

  • Static resources (src/resources/staticResources.ts):

    • config://supported-chains

    • config://quote-currencies

  • Dynamic resources (src/resources/dynamicResources.ts):

    • status://all-chains

    • status://chain/{chainName}

Dynamic resources fetch real-time data from the Covalent API on each request, ensuring current information.


Development

Prerequisites

  • Node.js v18 or higher

  • npm, yarn, or pnpm

  • GOLDRUSH_API_KEY environment variable containing a valid GoldRush API key

Installation

git clone https://github.com/covalenthq/goldrush-mcp-server.git
cd goldrush-mcp-server
npm install

Then build:

npm run build

Running the MCP Server

The server supports multiple transport options:

# Start with default STDIO transport (recommended for MCP clients)
npm run start

# Or explicitly specify STDIO transport
npm run start:stdio

# Start with HTTP transport on port 3000
npm run start:http

# Custom configuration with CLI arguments
node dist/index.js --transport http --port 8080
node dist/index.js --transport stdio --api-key YOUR_KEY_HERE

Transport Options

  • STDIO (default): Direct MCP protocol communication via stdin/stdout - ideal for MCP clients like Claude Desktop

  • HTTP: RESTful HTTP server with /mcp endpoint - useful for web integrations

Command Line Arguments

  • --transport, -t: Choose transport type (stdio or http)

  • --port, -p: Set HTTP port (default: 3000)

  • --api-key, -k: Provide API key directly

  • --help, -h: Show usage information

STDIO transport spawns the MCP server on stdin/stdout where MCP clients can connect directly. HTTP transport starts a server that accepts POST requests to /mcp with Bearer token authentication.

Example Client

You can run the example client that will spawn the server as a child process via STDIO:

npm run example

This attempts a few Covalent calls and prints out the responses.

Running the Tests

npm run test

This runs the entire test suite covering each service.

Setting GOLDRUSH_API_KEY

You must set the GOLDRUSH_API_KEY environment variable to a valid key from the Covalent platform.
For example on Linux/macOS:

export GOLDRUSH_API_KEY=YOUR_KEY_HERE

Or on Windows:

set GOLDRUSH_API_KEY=YOUR_KEY_HERE

File Layout

goldrush-mcp-server
ā”œā”€ā”€ src
│   ā”œā”€ā”€ index.ts                 # Main entry point with CLI parsing
│   ā”œā”€ā”€ server.ts                # Unified server with STDIO and HTTP transports
│   ā”œā”€ā”€ server-stdio.ts          # Legacy STDIO-only server (backup)
│   ā”œā”€ā”€ services/                # Modular service implementations
│   │   ā”œā”€ā”€ AllChainsService.ts  # Cross-chain service tools
│   │   ā”œā”€ā”€ BalanceService.ts    # Balance-related tools
│   │   ā”œā”€ā”€ BaseService.ts       # Basic blockchain tools
│   │   ā”œā”€ā”€ BitcoinService.ts    # Bitcoin-specific tools
│   │   ā”œā”€ā”€ NftService.ts        # NFT-related tools
│   │   ā”œā”€ā”€ PricingService.ts    # Pricing-related tools
│   │   ā”œā”€ā”€ SecurityService.ts   # Security-related tools
│   │   └── TransactionService.ts# Transaction-related tools
│   ā”œā”€ā”€ resources/               # Resource implementations
│   │   ā”œā”€ā”€ staticResources.ts   # Static configuration resources
│   │   └── dynamicResources.ts  # Dynamic chain status resources
│   ā”œā”€ā”€ utils/                   # Utility functions and constants
│   │   ā”œā”€ā”€ constants.ts         # Shared constants
│   │   └── helpers.ts           # Helper functions
│   └── example-client.ts        # Example LLM client using STDIO transport
ā”œā”€ā”€ test
│   ā”œā”€ā”€ AllChainsService.test.ts
│   ā”œā”€ā”€ BalanceService.test.ts
│   ā”œā”€ā”€ BaseService.test.ts
│   ā”œā”€ā”€ BitcoinService.test.ts
│   ā”œā”€ā”€ NftService.test.ts
│   ā”œā”€ā”€ PricingService.test.ts
│   ā”œā”€ā”€ Resources.test.ts
│   ā”œā”€ā”€ SecurityService.test.ts
│   └── TransactionService.test.ts
ā”œā”€ā”€ eslint.config.mjs            # ESLint configuration
ā”œā”€ā”€ package.json                 # Project dependencies and scripts
ā”œā”€ā”€ package-lock.json            # Locked dependencies
ā”œā”€ā”€ tsconfig.json                # TypeScript configuration
ā”œā”€ā”€ LICENSE                      # MIT license
└── README.md                    # Project documentation

Debugging

Using Inspector

https://modelcontextprotocol.io/docs/tools/inspector

npx @modelcontextprotocol/inspector node dist/index.js

Contributing

We welcome contributions from the community! If you have suggestions, improvements, or new spam contract addresses to add, please open an issue or submit a pull request. Feel free to check issues page.

Show your support

Give a ā­ļø if this project helped you!

License

This project is MIT licensed.

Available Tools

27 tools
bitcoin_hd_wallet_balancesA

Fetch balances for each active child address derived from a Bitcoin HD wallet. This tool provides detailed balance data for Bitcoin wallets identified by an xpub key. Required: walletAddress - The xpub key of the HD wallet. Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc). Returns complete balance details including total balance, available balance, and transaction history summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesThe xpub key of the Bitcoin HD wallet to get balances for. Must be a valid extended public key.
quoteCurrencyNoCurrency to quote Bitcoin values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool fetches balances and returns details like total balance, but does not disclose authentication, rate limits, or side effects. It is adequate for a simple read operation.

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

Conciseness4/5

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

The description is relatively short with three sentences plus a parameter list. It front-loads the purpose. Some redundancy exists (return details restated), but overall it is concise.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema), the description covers purpose, inputs, and output summary sufficiently. It mentions transaction history summary, which adds useful context.

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

Parameters3/5

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

Schema description coverage is 100%, and the description essentially repeats the parameter info. It adds no new meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it fetches balances for each active child address derived from a Bitcoin HD wallet, specifying the resource and action. It distinguishes from sibling tool 'bitcoin_non_hd_wallet_balances' by explicitly mentioning HD wallet and xpub key.

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

Usage Guidelines4/5

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

The description clearly lists required and optional parameters, providing context on when to use the tool. However, it does not explicitly contrast with alternatives like 'bitcoin_non_hd_wallet_balances' or state when not to use it.

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

bitcoin_non_hd_wallet_balancesA

Fetch Bitcoin balance for a non-HD address. Response includes spot prices and other metadata. This tool provides detailed balance data for regular Bitcoin addresses. Required: walletAddress - The Bitcoin address to query. Optional: quoteCurrency - The currency for price conversion (USD, EUR, etc). Returns complete balance details including total balance, available balance, and transaction count.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesThe Bitcoin address to get balance for. Must be a valid non-HD Bitcoin address.
quoteCurrencyNoCurrency to quote Bitcoin values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses that the response includes spot prices, metadata, total balance, available balance, and transaction count. However, it does not explain the meaning of 'non-HD' nor any potential limitations or prerequisites beyond the required parameter.

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

Conciseness4/5

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

The description is clear but slightly verbose with five sentences. It could be more streamlined without losing essential information.

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

Completeness3/5

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

Lacking an output schema, the description provides some return field details but does not fully specify the structure or clarify key concepts like 'non-HD', leaving some uncertainty for the agent.

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

Parameters3/5

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

Schema coverage is 100% and the description largely reiterates the schema's information (required vs optional, enum values). It adds minimal new meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool fetches Bitcoin balance for a non-HD address, using specific verbs and resource, and distinguishes from sibling 'bitcoin_hd_wallet_balances' by specifying 'non-HD'.

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

Usage Guidelines3/5

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

The description implies usage for non-HD addresses by naming the tool accordingly, but does not explicitly contrast with alternatives or provide when-to-use guidance for the sibling 'bitcoin_hd_wallet_balances'.

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

bitcoin_transactionsA

Used to fetch the full transaction history of a Bitcoin wallet. Required: address - The Bitcoin address to query transactions for. Optional: pageSize - Number of results per page (default: 10). Optional: pageNumber - Page number for pagination (default: 0, first page). Returns comprehensive transaction details including timestamps, amounts, and transaction IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe Bitcoin address to get transaction history for. Must be a valid Bitcoin address.
pageSizeNoNumber of transactions to return per page. Default is 10, maximum is 100.
pageNumberNoPage number for pagination, starting from 0. Default is 0.

TDQS

A3.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It describes return values (timestamps, amounts, transaction IDs) and pagination behavior. It implies a read-only operation, but does not explicitly state that it is non-destructive or any side effects.

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

Conciseness5/5

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

Description is concise and well-structured: a clear opening sentence, followed by parameter descriptions and return value summary. No unnecessary words.

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

Completeness4/5

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

Given no output schema, the description covers return values adequately. It addresses pagination and key parameter details. Lacks mention of error handling or edge cases, but overall sufficient for a straightforward query tool.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for each parameter. The description restates some schema info (required address, optional pageSize/pageNumber with defaults) and adds context about output, but does not significantly enhance parameter understanding beyond schema.

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

Purpose4/5

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

Clear verb and resource: 'fetch the full transaction history of a Bitcoin wallet.' However, with many sibling transaction tools (e.g., transactions_for_address, multichain_transactions), the description does not differentiate this tool from similar ones.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. While it lists required and optional parameters, it does not explain in what contexts this tool is preferred over siblings like transactions_for_address.

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

blockA

Commonly used to fetch and render a single block for a block explorer.Requires chainName (blockchain network) and blockHeight (block number). Returns comprehensive block data including timestamp, transaction count, size, miner information, and other blockchain-specific details.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
blockHeightYesThe block number to retrieve. Can be a specific block number or 'latest' for the most recent block.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses output fields (timestamp, transaction count, etc.) but omits behavioral traits such as error handling, rate limits, or authentication needs. Adequate but not comprehensive.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the main purpose and key parameters. No redundant or unnecessary content.

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

Completeness4/5

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

For a simple 2-parameter tool with no output schema, the description covers purpose, required inputs, and key output fields. Lacks error handling or edge cases, but overall sufficient.

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

Parameters3/5

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

Schema coverage is 100%, and the description's parameter info barely adds value beyond the schema. It mentions blockHeight can be 'latest', but that's already in schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (fetch and render), resource (single block), and context (block explorer). It distinguishes from siblings like 'transactions_for_block' and 'block_heights' by focusing on comprehensive block data retrieval.

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

Usage Guidelines3/5

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

The description implies usage for block data retrieval but lacks explicit guidance on when to use this tool vs alternatives like 'block_heights' or 'transactions_for_block'. No exclusion criteria or when-not-to-use advice is provided.

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

block_heightsA

Commonly used to get all the block heights within a particular date range. Requires chainName (blockchain network), startDate (YYYY-MM-DD format), and endDate (YYYY-MM-DD or 'latest'). Optional pagination parameters include pageSize (default 10) and pageNumber (default 0). Returns block heights, timestamps, and related data for blocks within the specified date range, useful for historical analysis and time-based blockchain queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
startDateYesStart date for the query in YYYY-MM-DD format (e.g., '2023-01-01').
endDateYesEnd date for the query in YYYY-MM-DD format or 'latest' for current date.
pageSizeNoNumber of block heights to return per page. Default is 10, maximum is 100.
pageNumberNoPage number for pagination, starting from 0. Default is 0.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It clarifies required parameters, pagination defaults, and return data (block heights, timestamps). Does not disclose rate limits or authentication, but the read-only nature is implied and no contradictions.

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

Conciseness5/5

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

Three sentences: purpose, parameters, and returns. No unnecessary words, front-loaded with the common use case. Every sentence adds value.

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

Completeness4/5

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

Describes return data as 'block heights, timestamps, and related data' which is slightly vague but adequate. Lacks output schema, but the description covers key aspects. Pagination and required parameters are clear.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description restates schema details (format, defaults) without adding new meaning beyond what is already in the schema.

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

Purpose5/5

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

Description states 'get all the block heights within a particular date range', specifying the verb (get), resource (block heights), and scope (date range). It clearly distinguishes from sibling tools like 'block' which retrieves a single block.

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

Usage Guidelines3/5

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

Description implies usage for historical analysis and time-based queries but does not explicitly state when not to use or mention alternatives like 'block' or 'transactions_for_block'. Provides some context but lacks direct guidance.

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

erc20_token_transfersA

Commonly used to render the transfer-in and transfer-out of a token along with historical prices from an address. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency for value conversion, contractAddress to filter by specific token, startingBlock/endingBlock to set range, pageSize (default 10) and pageNumber (default 0). Returns token transfer events with timestamps, values, and transaction details.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get ERC20 transfers for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
quoteCurrencyNoCurrency to quote transfer values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
contractAddressYesSpecific ERC20 token contract address to filter transfers. If null, returns transfers for all ERC20 tokens.
startingBlockNoStarting block number to begin search from. Use with endingBlock to define a range.
endingBlockNoEnding block number to search until. Use with startingBlock to define a range.
pageSizeNoNumber of transfers to return per page. Default is 10, maximum is 100.
pageNumberNoPage number for pagination, starting from 0. Default is 0.

TDQS

A3.9/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It transparently indicates the tool is a read-only query returning transfer events, with no side effects or destructive actions mentioned.

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

Conciseness4/5

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

The description is well-structured with main purpose first, then parameter details. At 2-3 sentences it is appropriately sized, though some redundancy with schema exists.

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

Completeness4/5

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

Given no output schema, the description adequately describes return types (timestamps, values, transaction details). With 100% param coverage, it is complete for its complexity.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions; the description adds default values for pageSize and pageNumber and mentions the return format, but does not significantly extend beyond the schema.

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

Purpose5/5

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

The description clearly states it retrieves 'transfer-in and transfer-out of a token along with historical prices from an address,' using specific verbs and resources. This distinguishes it from sibling tools like token_balances or transactions_for_address.

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

Usage Guidelines3/5

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

The description lists required and optional parameters, implying when to use, but does not explicitly state when not to use or compare with alternatives like log_events_by_address or historical_token_balances.

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

gas_pricesA

Get real-time gas estimates for different transaction speeds on a specific network, enabling users to optimize transaction costs and confirmation times. Requires chainName (blockchain network) and eventType (erc20, nativetokens, or uniswapv3). Optional parameter quoteCurrency allows conversion to different currencies (USD, EUR, etc). Returns estimated gas prices for low, medium, and high priority transactions for the specified event type.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to get gas prices for (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
eventTypeYesType of transaction to estimate gas for: 'erc20' for token transfers, 'nativetokens' for native transfers, 'uniswapv3' for DEX swaps.
quoteCurrencyNoCurrency to quote gas costs in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It reveals that the tool is read-only, returns estimates for low/medium/high priority, and supports currency conversion. It does not cover rate limits or error behavior, but for a simple read tool this is adequate.

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

Conciseness4/5

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

The description is concise at three sentences, front-loading the main purpose. It avoids redundancy and unnecessary detail. A slight improvement could be breaking into bullet points, but it remains highly readable.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately covers the input parameters, the return type (low, medium, high estimates), and optional currency conversion. It lacks details on unit or error handling, but for a straightforward gas price tool, it is reasonably complete.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for all parameters. The description adds context by explaining the meaning of eventType options and the conversion purpose of quoteCurrency, but does not provide significant new information beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('get'), resource ('real-time gas estimates'), and context ('for different transaction speeds on a specific network'). It effectively distinguishes from sibling tools that focus on balances, transactions, or NFTs, as no other sibling provides gas price estimates.

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

Usage Guidelines4/5

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

The description explicitly lists required parameters (chainName, eventType) and explains their role, as well as the optional quoteCurrency. It provides enough context for when to use the tool, though it does not explicitly mention alternatives or when not to use it. However, the sibling set does not overlap in functionality, making this less critical.

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

historical_portfolio_valueB

Commonly used to render a daily portfolio balance for an address broken down by the token. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency for value conversion, days (timeframe to analyze, default 7). Returns portfolio value time series data showing value changes over the specified timeframe.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get portfolio history for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
quoteCurrencyNoCurrency to quote portfolio values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
daysNoNumber of days of historical data to retrieve. Default is 7 days.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return type (time series data) but does not disclose any other behavioral traits such as pagination, rate limits, data freshness, or that it is a read-only operation. For a tool with no annotations, 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.

Conciseness4/5

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

The description is concise, fitting into a single sentence plus a brief list. It is front-loaded with the core purpose and then enumerates parameters efficiently. However, it could be slightly more structured by separating parameter details from the purpose statement.

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

Completeness2/5

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

The tool has four parameters, two with enums, and no output schema. The description mentions it returns time series data but does not explain the structure of the output (e.g., fields like date, value, token). Given the complexity, the description is incomplete for an agent to understand the full response format.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes parameters well. The description adds minimal value beyond the schema, only restating required fields and the default for days. It provides no additional context for parameter values or constraints.

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

Purpose5/5

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

The description clearly states the tool renders a daily portfolio balance for an address broken down by token. The verb 'render' and resource 'portfolio balance' are specific, and it distinguishes itself from sibling tools like historical_token_balances by focusing on portfolio value.

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

Usage Guidelines3/5

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

The description lists required and optional parameters, which provides basic usage guidance. However, it does not explicitly explain when to use this tool versus alternatives like historical_token_balances or historical_token_prices, nor does it mention constraints or prerequisites.

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

historical_token_balancesA

Commonly used to fetch the historical native and fungible (ERC20) tokens held by an address at a given block height or dateRequired: chainName (blockchain network), address (wallet address). Optional: quoteCurrency for value conversion, blockHeight or date to specify point in time, nft (include NFTs, default false), noNftFetch, noSpam, and noNftAssetMetadata (all default true). Returns token balances as they existed at the specified historical point.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
addressYesThe wallet address to get historical token balances for. Must be a valid blockchain address.
quoteCurrencyNoCurrency to quote token values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
nftNoInclude NFT token balances in the response. Default is false.
noNftFetchNoSkip fetching NFT metadata. Default is true for better performance.
noSpamNoFilter out spam/scam tokens from results. Default is true.
noNftAssetMetadataNoSkip fetching NFT asset metadata. Default is true for better performance.
blockHeightNoSpecific block height to get historical balances from. Cannot be used with date parameter.
dateNoSpecific date to get historical balances from (YYYY-MM-DD format). Cannot be used with blockHeight parameter.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses defaults for boolean flags and states it returns balances as they existed historically. Does not describe output format or rate limits, but for a read operation, it is fairly transparent.

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

Conciseness3/5

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

The description is a single run-on sentence that lacks clear structure. While it front-loads the core purpose, the parameter listing feels cluttered and could be broken into cleaner segments for better readability.

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

Completeness3/5

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

Given the complexity (9 parameters, no output schema), the description covers parameter usage well but omits return structure, pagination, or limits. This leaves the agent partially informed about the response format.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by summarizing required vs optional, listing parameter names, highlighting defaults, and noting mutual exclusivity of blockHeight and date. This goes beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool fetches historical token balances for an address at a given block height or date. It explicitly mentions the required and optional parameters, distinguishing it from current balance tools like 'token_balances'.

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

Usage Guidelines4/5

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

The description implies historical vs current context through name and parameter hints, and explicitly notes mutual exclusivity of blockHeight and date. However, it does not directly compare to sibling tools or state when not to use this tool.

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

historical_token_pricesB

Get the historical prices of one (or many) large cap ERC20 tokens between specified date ranges. Also supports native tokens. Required: chainName (blockchain network), quoteCurrency (price currency), contractAddress (token contract), from (start date YYYY-MM-DD), to (end date YYYY-MM-DD). Optional: pricesAtAsc (set to true for chronological ascending order, default is false for descending order). Returns historical token prices for the specified time range.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
quoteCurrencyYesCurrency to quote token prices in (e.g., 'USD', 'EUR'). This determines the currency for historical price data.
contractAddressYesThe token contract address to get historical prices for. Use the native token address for native token prices. Supports ENS, RNS, Lens Handle, and Unstoppable Domain resolution.
fromYesStart date for historical price data in YYYY-MM-DD format (e.g., '2023-01-01').
toYesEnd date for historical price data in YYYY-MM-DD format (e.g., '2023-12-31').
pricesAtAscNoSort prices in ascending chronological order. Default is false (descending order, newest first).

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It mentions token support and domain resolution but omits rate limits, error handling, response format, and whether multiple tokens are supported (ambiguity from 'one (or many)').

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

Conciseness4/5

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

The description is concise with a clear separation of required and optional parameters. It is front-loaded with purpose. Could be slightly more structured for readability.

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

Completeness2/5

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

Given no output schema, the description should detail return format but only says 'Returns historical token prices'. The ambiguity around 'one (or many)' tokens and lack of pagination or error handling leaves significant gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds context (native token support, default sort order) but largely reiterates schema descriptions without significant additional meaning.

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

Purpose5/5

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

The description clearly states the tool retrieves historical prices for ERC20 and native tokens within date ranges, using specific verbs 'Get' and 'supports'. It distinguishes from siblings like 'historical_token_balances' by focusing on prices.

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

Usage Guidelines3/5

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

The description lists required and optional parameters but does not explicitly state when to use this tool versus alternatives like 'historical_token_balances' or 'pool_spot_prices'. Usage context is implied but not formally contrasted.

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

log_events_by_addressB

Commonly used to get all the event logs emitted from a particular contract address. Useful for building dashboards that examine on-chain interactions.Requires chainName (blockchain network) and contractAddress (the address emitting events). Optional parameters include block range (startingBlock, endingBlock) and pagination settings (pageSize default 10, pageNumber default 0). Returns decoded event logs for the specified contract, useful for monitoring specific smart contract activity and analyzing on-chain events.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
contractAddressYesThe smart contract address to get event logs from. Supports ENS, RNS, Lens Handle, and Unstoppable Domain resolution.
startingBlockNoStarting block number to begin search from. Use with endingBlock to define a range.
endingBlockNoEnding block number to search until. Use with startingBlock to define a range.
pageSizeNoNumber of log events to return per page. Default is 10, maximum is 100.
pageNumberNoPage number for pagination, starting from 0. Default is 0.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that the tool returns decoded event logs and requires a contract address and chain, but lacks details on side effects, rate limits, or data freshness.

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

Conciseness3/5

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

The description is somewhat dense with two long sentences; it could be more structured (e.g., bullet points). It is not overly verbose, but lacks ideal conciseness.

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

Completeness3/5

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

The tool has 6 parameters, no output schema, and moderate complexity. The description covers the core purpose and parameters but omits details on pagination behavior or error handling.

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

Parameters3/5

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

The input schema has 100% coverage, and the description restates key parameters. It adds value by mentioning ENS resolution for contractAddress but does not provide additional meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool retrieves event logs from a specific contract address and is used for dashboards and monitoring. However, it does not explicitly differentiate from sibling tool 'log_events_by_topic'.

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

Usage Guidelines3/5

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

The description explains typical use cases and lists required and optional parameters, but does not specify when to avoid this tool or suggest alternatives.

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

log_events_by_topicA

Commonly used to get all event logs of the same topic hash across all contracts within a particular chain. Useful for cross-sectional analysis of event logs that are emitted on-chain.Requires chainName (blockchain network) and topicHash (the event signature hash). Optional parameters include block range (startingBlock, endingBlock), secondaryTopics for filtering by additional parameters, and pagination settings (pageSize default 10, pageNumber default 0). Returns decoded event logs matching the specified topic hash, ideal for tracking specific event types across multiple contracts on a blockchain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
topicHashYesThe event signature hash (topic[0]) to search for. This is the keccak256 hash of the event signature.
startingBlockNoStarting block number to begin search from. Use with endingBlock to define a range.
endingBlockNoEnding block number to search until. Use with startingBlock to define a range.
secondaryTopicsNoAdditional topic filters (topic[1], topic[2], topic[3]) to narrow down the search.
pageSizeNoNumber of log events to return per page. Default is 10, maximum is 100.
pageNumberNoPage number for pagination, starting from 0. Default is 0.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are present, so the description bears full burden. It mentions pagination defaults and queries across contracts, but does not disclose rate limits, authentication needs, or behavior on invalid parameters.

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

Conciseness4/5

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

The description is concise and front-loaded with purpose and usage, then lists parameters. It is efficient with no fluff, though could be more structured with bullet points.

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

Completeness3/5

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

No output schema is provided, and while required and optional parameters are explained, the return format is only briefly mentioned as 'decoded event logs.' Additional details on pagination behavior or block range limits would improve completeness.

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

Parameters3/5

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

Schema coverage is 100% with solid parameter descriptions. The description adds context (e.g., block range, secondaryTopics) but does not significantly augment the schema details.

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

Purpose5/5

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

The description clearly states the tool retrieves event logs by topic hash across all contracts on a given chain, distinguishing it from similar tools like log_events_by_address which filter by address.

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

Usage Guidelines3/5

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

The description indicates it is 'commonly used' for cross-sectional analysis but does not explicitly state when to use alternatives like log_events_by_address or provide exclusions.

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

multichain_address_activityA

Commonly used to locate chains which an address is active on with a single API call. Requires walletAddress. Optional parameter testnets (default false) determines whether to include testnet activity. Returns a comprehensive summary of chain activity including transaction counts, first/last activity timestamps, and activity status across all networks.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesThe wallet address to analyze activity for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
testnetsNoWhether to include testnet activity in the analysis. Default is false (mainnet only).

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes the return summary (transaction counts, timestamps, status) and implies a read-only analysis, but does not explicitly state behavioral traits like safety, permissions, or side effects. It is adequate but not comprehensive.

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

Conciseness5/5

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

The description is highly concise with three sentences: first states purpose, second details parameters, third summarizes returns. Every sentence is essential and front-loaded. No wasted words.

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

Completeness4/5

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

Given the tool has only 2 parameters, no output schema, and no annotations, the description covers purpose, parameters with resolution details, and return summary. It is complete enough for a straightforward tool but could mention error handling or edge cases (e.g., invalid address).

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

Parameters4/5

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

The input schema already has 100% description coverage, but the description adds valuable context: walletAddress can accept ENS, RNS, Lens Handle, or Unstoppable Domains with automatic resolution. It also clarifies the testnets default and effect. This goes beyond schema, justifying a 4.

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

Purpose4/5

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

The description clearly states the tool's purpose: to locate chains an address is active on with a single API call. It specifies the required walletAddress and optional testnets. While it doesn't explicitly distinguish from sibling tools like multichain_balances or multichain_transactions, the unique focus on activity (transaction counts, timestamps, status) is evident.

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

Usage Guidelines3/5

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

The description provides context ('Commonly used to locate chains') and notes the single-call efficiency, but lacks explicit guidance on when not to use or alternatives. It does not mention scenarios where this tool is inappropriate or suggest other tools for different needs.

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

multichain_balancesA

Fetch paginated spot & historical native and token balances for a single address on up to 10 EVM chains with one API call. Requires walletAddress. Optional parameters include chains array to specify networks, quoteCurrency for value conversion, limit (default 10), pagination (before), and cutoffTimestamp to filter by time. Use this to get a comprehensive view of token holdings across different blockchains.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesThe wallet address to get token balances for. Must be a valid blockchain address.
quoteCurrencyNoCurrency to quote token values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
beforeNoPagination cursor to get balances before this point. Use the 'before' value from previous response.
limitNoMaximum number of token balances to return. Default is 10, maximum is 100.
chainsNoArray of blockchain networks to query balances from. Can be chain names or chain IDs. If not specified, queries all supported chains.
cutoffTimestampNoUnix timestamp to filter balances by last activity. Only returns tokens with activity after this time.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, description carries full burden. It implies read-only ('Fetch') and mentions pagination, but lacks details on data freshness, rate limits, or side effects. Adequate but not thorough.

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

Conciseness5/5

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

Three well-structured sentences: purpose, parameter list, use case. No fluff, every sentence adds value.

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

Completeness4/5

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

Covers main functionality with 6 parameters described. Missing response structure details, but given no output schema, the description provides sufficient context for the agent to use it.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by explaining each parameter's role in context, such as cutoffTimestamp for filtering by time and chains for network specification. Exceeds baseline.

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

Purpose5/5

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

The description clearly states the tool fetches paginated spot and historical balances for a single address across up to 10 EVM chains, distinguishing it from single-chain siblings like token_balances and bitcoin_balances.

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

Usage Guidelines4/5

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

It explicitly notes required walletAddress, optional parameters (chains, quoteCurrency, limit, before, cutoffTimestamp), and the use case for comprehensive cross-chain view. Slightly lacking explicit alternatives or when-not-to-use, but still clear context.

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

multichain_transactionsA

Fetch paginated transactions for up to 10 EVM addresses and 10 EVM chains with one API call. Useful for building Activity Feeds. Requires addresses array. Optional parameters include chains array, pagination (before/after), limit (default 10), quoteCurrency for value conversion, and options to include logs (withLogs, withDecodedLogs). Use this to analyze transaction history across different networks simultaneously.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainsNoArray of blockchain networks to query. Can be chain names (e.g., 'eth-mainnet') or chain IDs (e.g., 1). If not specified, queries all supported chains.
addressesNoArray of wallet addresses to get transactions for. Each address should be a valid blockchain address.
limitNoMaximum number of transactions to return per request. Default is 10, maximum is 100.
beforeNoPagination cursor to get transactions before this point. Use the 'before' value from previous response.
afterNoPagination cursor to get transactions after this point. Use the 'after' value from previous response.
withLogsNoInclude transaction logs in the response. Default is false.
withDecodedLogsNoInclude decoded transaction logs in the response. Only applicable when withLogs is true. Default is false.
quoteCurrencyNoCurrency to quote token values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It mentions pagination, defaults, and optional logs inclusion, but lacks details on error handling for exceeding address/chain limits, rate limits, or data freshness. The description is adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise with three sentences, front-loading the main action and purpose. Every sentence provides essential information without redundancy or filler, making it easy to scan.

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

Completeness3/5

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

Given the lack of an output schema, the description does not explain what the response contains (e.g., transaction fields, pagination cursors). With 8 parameters and no annotations, the description covers core functionality but leaves gaps about return values and edge cases, making it somewhat incomplete.

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

Parameters4/5

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

Although parameter descriptions in the schema are complete (100% coverage), the tool description adds value by summarizing key optional parameters, clarifying limits (up to 10 addresses/chains) and the requirement of the addresses array (though the schema marks it optional, which is a minor inconsistency). This extra context helps the agent understand usage beyond raw schema.

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

Purpose5/5

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

The description clearly states the tool fetches paginated transactions for up to 10 EVM addresses and 10 EVM chains in one call, which is specific and distinct from sibling tools like single-chain transaction fetchers. It also mentions use for building Activity Feeds, further clarifying its purpose.

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

Usage Guidelines4/5

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

The description indicates the tool is useful for analyzing transaction history across multiple networks and building activity feeds, providing clear context. However, it does not explicitly state when not to use it or contrast with alternatives like transactions_for_address or multichain_address_activity, so it misses some exclusion guidance.

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

native_token_balanceB

Lightweight endpoint to just get the native token balance for an EVM address. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency for value conversion, blockHeight for historical balance. Returns native token balance with current market value and token metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get native token balance for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
quoteCurrencyNoCurrency to quote native token value in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
blockHeightNoSpecific block height to get historical native token balance from.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only mentions 'lightweight' and return content, but fails to disclose behavioral traits like read-only nature, error conditions, or rate limits. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and key parameters. Every sentence adds value, no fluff.

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

Completeness4/5

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

For a simple get-balance tool with full schema coverage and no output schema, description covers purpose, parameters, and return value. Missing minor details like response format or error handling, but sufficient for selection.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. Description adds minimal value by summarizing the parameters and adding return context (market value, metadata). Baseline score of 3 is appropriate.

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

Purpose4/5

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

Description clearly states it returns native token balance for an EVM address, using specific verb 'get'. Distinguishes from sibling balance tools like 'erc20_token_transfers' and 'token_balances' by specifying 'native token', but does not explicitly differentiate from all siblings.

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

Usage Guidelines3/5

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

Description lists required and optional parameters, implying when to use (quick native token balance check). However, it does not provide explicit guidance on when not to use or suggest alternatives among siblings.

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

nft_check_ownershipB

Commonly used to verify ownership of NFTs (including ERC-721 and ERC-1155) within a collection. Required: chainName (blockchain network), walletAddress (wallet address), collectionContract (NFT collection). Optional: traitsFilter (filter by trait types), valuesFilter (filter by trait values). Returns ownership status and matching NFTs if owned.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to check NFT ownership for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
collectionContractYesThe NFT collection contract address to check ownership in. Must be a valid ERC-721 or ERC-1155 contract address.
traitsFilterNoFilter by specific trait types (comma-separated list of trait names to filter by).
valuesFilterNoFilter by specific trait values (comma-separated list of trait values to match).

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so the description should disclose behavioral traits. It mentions return type (ownership status and matching NFTs) but omits details like read-only nature, pagination, rate limits, or side effects.

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

Conciseness4/5

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

The description is two concise sentences front-loading the purpose, then listing parameters. No wasted words, though additional structure could enhance readability.

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

Completeness3/5

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

For a simple read tool with 5 params and full schema coverage, the description is adequate. It lacks output schema details and sibling differentiation, but overall covers the essential context.

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

Parameters3/5

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

Schema description coverage is 100%, and the description adds no new parameter meaning beyond summarizing required/optional. The description is helpful but not necessary beyond the schema.

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

Purpose4/5

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

The description clearly states the tool verifies ownership of NFTs (ERC-721 and ERC-1155) within a collection. It lists required and optional parameters, and the scope is implicit but distinct from sibling nft_check_ownership_token_id.

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

Usage Guidelines3/5

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

The description implies usage for checking collection-level ownership but does not explicitly differentiate from alternatives like nft_check_ownership_token_id or nft_for_address. No when-not or prerequisites are stated.

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

nft_check_ownership_token_idA

Commonly used to verify ownership of a specific token (ERC-721 or ERC-1155) within a collection. Required: chainName (blockchain network), walletAddress (wallet address), collectionContract (NFT collection), tokenId (specific token ID). Returns ownership status for the specific token ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to check NFT ownership for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
collectionContractYesThe NFT collection contract address. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
tokenIdYesThe specific token ID to check ownership for.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only says 'Returns ownership status' but does not disclose whether the operation is read-only, has side effects, or any constraints like rate limits. This is minimal transparency.

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

Conciseness5/5

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

Four concise sentences: one states purpose, one lists required parameters, and one describes output. No wasted words; front-loaded with use case.

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

Completeness3/5

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

No output schema exists, but the description only says 'Returns ownership status' without detailing the format (e.g., boolean, object). With 4 required params and no output schema, a bit more information about the return value would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description merely restates parameter names and uses without adding substantial meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states 'verify ownership of a specific token (ERC-721 or ERC-1155) within a collection,' using a specific verb and resource. It distinguishes from sibling 'nft_check_ownership' by specifying token ID.

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

Usage Guidelines4/5

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

Provides clear context for when to use (verify ownership of specific token) and lists all required parameters. However, it does not mention alternatives or exclusions, such as when to use the sibling tool 'nft_check_ownership'.

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

nft_for_addressA

Commonly used to render the NFTs (including ERC721 and ERC1155) held by an address. Required: chainName (blockchain network name), walletAddress (wallet address or ENS/domain). Optional: noSpam (filter spam, default true), noNftAssetMetadata (exclude metadata for faster response, default true), withUncached (fetch uncached metadata, may be slower, default false). Returns complete details of NFTs in the wallet including metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get NFTs for. Can be a wallet address or ENS/domain name.
noSpamNoFilter out spam/scam NFTs from results. Default is true.
noNftAssetMetadataNoSkip fetching NFT asset metadata for faster response. Default is true.
withUncachedNoFetch uncached metadata directly from source (may be slower but more up-to-date). Default is false.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions optional parameters that affect behavior (filtering spam, excluding metadata, uncached fetching) and notes it returns 'complete details including metadata'. However, it does not specify pagination, data limits, or potential performance implications for wallets with many NFTs.

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

Conciseness5/5

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

The description is extremely concise: two sentences. The first sentence clearly states the purpose, and the second lists parameters and return. Every word earns its place, and the key information is front-loaded.

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

Completeness3/5

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

Given no output schema and 5 parameters, the description covers the main function and parameter effects. However, it lacks details on return structure (e.g., format of NFT details), pagination, and any limits on result size. This leaves some ambiguity for an agent needing to use the output effectively.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description restates required and optional parameters similarly to the schema descriptions, adding only the note that walletAddress can be ENS/domain and that return includes metadata. It does not provide deeper semantics beyond what the schema already conveys.

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

Purpose5/5

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

The description explicitly states the tool retrieves NFTs (ERC721/ERC1155) held by an address, with a specific verb 'render' and resource 'NFTs'. It clearly distinguishes from sibling tools like nft_check_ownership by focusing on all NFTs for an address rather than ownership checks for specific tokens.

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

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives. It only lists required and optional parameters without explaining scenarios where nft_check_ownership or nft_check_ownership_token_id would be more appropriate. No explicit exclusions or context for selection among siblings.

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

pool_spot_pricesA

Get the spot token pair prices for a specified pool contract address. Supports pools on Uniswap V2, V3 and their forks. Required: chainName (blockchain network), contractAddress (pool contract address). Optional: quoteCurrency (price currency) for value conversion. Returns spot token pair prices with pool details and token metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
contractAddressYesThe liquidity pool contract address to get spot prices for. Must be a valid Uniswap V2/V3 or compatible DEX pool address.
quoteCurrencyNoCurrency to quote pool token values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates a read-only operation and describes the return content, but does not detail error handling, rate limits, or other side effects. This is adequate but not rich.

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

Conciseness5/5

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

The description is concise: four sentences covering purpose, supported protocols, required/optional parameters, and return values. No unnecessary words, each sentence earns its place.

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

Completeness4/5

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

Although there is no output schema, the description adequately describes the return (spot prices with pool details and metadata). All parameters are documented. The tool's complexity is low, and the description provides sufficient context for an agent to use it correctly.

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

Parameters4/5

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

The input schema covers all parameters with descriptions (100% coverage). The description adds value by clarifying the purpose of quoteCurrency for value conversion and specifying supported DEX types, which goes beyond schema details.

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

Purpose5/5

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

The description clearly states the tool retrieves spot token pair prices for a given pool contract address, specifying supported DEX types (Uniswap V2/V3 and forks). This uniquely distinguishes it from sibling tools which focus on balances, transactions, blocks, etc.

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

Usage Guidelines4/5

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

The description lists required and optional parameters and mentions supported protocols, providing clear context for when to use the tool. No explicit alternatives are needed as no sibling tool performs a similar function.

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

token_approvalsA

Commonly used to get a list of approvals across all token contracts categorized by spenders for a wallet's assets. Required: chainName (blockchain network, e.g. eth-mainnet or 1), walletAddress (wallet address, supports ENS, RNS, Lens Handle, or Unstoppable Domain). Returns a list of ERC20 token approvals and their associated security risk levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get token approvals for. Supports wallet addresses, ENS, RNS, Lens Handle, or Unstoppable Domain names.

TDQS

A4.1/5.0
Behavior4/5

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

Without annotations, the description discloses the output (list of ERC20 approvals with risk levels) and implies a read-only operation. It does not detail side effects, pagination, or authentication needs, but the straightforward nature of the tool makes this adequate.

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

Conciseness5/5

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

The description is two sentences with front-loaded purpose, no wasted words. It efficiently conveys the tool's function, required inputs, and output.

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

Completeness3/5

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

With no output schema, the description briefly mentions the return value as 'a list of ERC20 token approvals and their associated security risk levels'. This is informative but lacks structural details like fields or pagination, leaving some ambiguity for the AI agent.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description provides examples for chainName and walletAddress, but these largely duplicate the schema descriptions. The mention of ENS support and alternative chain formats adds marginal value.

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

Purpose5/5

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

The description clearly states the tool returns a list of token approvals across contracts, categorized by spenders, for a wallet's assets. It specifies the resource ('approvals') and the action ('get a list'), distinguishing it from sibling tools like token_balances or erc20_token_transfers.

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

Usage Guidelines4/5

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

The description lists required parameters with examples, providing clear context for use. However, it does not explicitly state when to use this tool versus alternatives or mention any prerequisites or exclusions. The lack of exclusions is acceptable given the tool's unique purpose.

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

token_balancesA

Commonly used to fetch the native and fungible (ERC20) tokens held by an address. Required: chainName (blockchain network), address (wallet address). Optional: quoteCurrency for value conversion, nft (include NFTs, default false), noNftFetch, noSpam, and noNftAssetMetadata (all default true) to control data returned. Returns detailed token balance information including spot prices and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
addressYesThe wallet address to get token balances for. Must be a valid blockchain address.
quoteCurrencyNoCurrency to quote token values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
nftNoInclude NFT token balances in the response. Default is false.
noNftFetchNoSkip fetching NFT metadata. Default is true for better performance.
noSpamNoFilter out spam/scam tokens from results. Default is true.
noNftAssetMetadataNoSkip fetching NFT asset metadata. Default is true for better performance.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description bears full burden. It mentions optional parameters to control NFT fetching and spam filtering, and states returns include spot prices and metadata. However, it lacks details on side effects, performance impact, or pagination.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, no fluff. Each sentence adds distinct value: purpose, required/optional, and return type. Ideal conciseness.

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

Completeness3/5

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

Given 7 parameters and no output schema, the description covers basics but lacks details on error handling, pagination, or performance considerations. Adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described. The description adds grouping and default values for boolean parameters, but this is marginal extra value beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool fetches native and ERC20 tokens for an address on a specific chain, with optional NFTs. It uses a specific verb 'fetch' and resource 'tokens held by an address', distinguishing it from siblings like 'native_token_balance' or 'token_holders'.

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

Usage Guidelines3/5

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

The description provides required and optional parameters but offers no guidance on when to use this tool versus siblings (e.g., for current vs historical balances, single chain vs multichain). Usage is implied but not explicitly scoped.

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

token_holdersA

Used to get a paginated list of current or historical token holders for a specified ERC20 or ERC721 token.Required: chainName (blockchain network), tokenAddress (token contract address). Optional: blockHeight or date for historical data, pageSize and pageNumber for pagination. Returns list of addresses holding the token with balance amounts and ownership percentages.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
tokenAddressYesThe token contract address to get holders for. Supports ENS, RNS, Lens Handle, and Unstoppable Domain resolution.
blockHeightNoSpecific block height to get historical token holders from. Cannot be used with date parameter.
dateNoSpecific date to get historical token holders from (YYYY-MM-DD format). Cannot be used with blockHeight parameter.
pageSizeNoNumber of token holders to return per page. Maximum is 100.
pageNumberNoPage number for pagination, starting from 0.

TDQS

A4.4/5.0
Behavior3/5

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

The description explains the tool returns a list of addresses with balances and ownership percentages, and mentions pagination and historical data. However, it does not explicitly state it is read-only or describe error handling, rate limits, or authentication requirements.

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

Conciseness5/5

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

The description is four sentences, front-loads the core purpose, and includes all critical information without unnecessary detail. Each sentence adds value.

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

Completeness5/5

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

Given no output schema, the description adequately explains the return format (list of addresses with balances and percentages) and covers all key parameters and their constraints. It is complete for the tool's complexity.

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

Parameters5/5

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

All parameters are described in the schema, but the description adds value by grouping required vs optional, noting mutual exclusivity of blockHeight and date, providing max pageSize, and mentioning ENS/RNS/Lens/UD resolution for tokenAddress.

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

Purpose5/5

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

The description clearly states the tool gets a paginated list of current or historical token holders for ERC20 or ERC721 tokens. It specifies required and optional parameters, and distinguishes itself from sibling tools like token_balances by focusing on holders.

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

Usage Guidelines4/5

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

The description lists required and optional parameters, indicating when to use historical data features (blockHeight or date). However, it does not explicitly compare to sibling tools or specify when not to use this tool.

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

transactionA

Commonly used to fetch and render a single transaction including its decoded log events. Required: chainName (blockchain network), txHash (transaction hash). Optional: quoteCurrency (currency to convert to, USD by default), noLogs (exclude event logs, true by default), withInternal (include internal transactions, false by default), withState (include state changes, false by default), withInputData (include input data, false by default). Tracing features (withInternal, withState, withInputData) supported on the following chains: eth-mainnet Returns comprehensive details about the specified transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
txHashYesThe transaction hash to get details for. Must be a valid transaction hash.
quoteCurrencyNoCurrency to quote transaction values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
noLogsNoExclude event logs from the response for faster performance. Default is true.
withInternalNoInclude internal transaction traces. Only supported on eth-mainnet. Default is false.
withStateNoInclude state changes in the response. Only supported on eth-mainnet. Default is false.
withInputDataNoInclude transaction input data in the response. Only supported on eth-mainnet. Default is false.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses parameter defaults (e.g., noLogs defaults to true, withInternal defaults to false) and constraints (tracing only on eth-mainnet). However, it does not explicitly state that the tool is read-only, which is generally inferred but not guaranteed.

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

Conciseness4/5

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

The description is well-structured: a brief purpose statement, followed by a clear list of required and optional parameters, and a note on constraints. It is informative without being overly verbose, though it could be slightly more concise by combining sentences.

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

Completeness3/5

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

While the description covers parameters well, it lacks details about the return value, stating only 'Returns comprehensive details about the specified transaction.' Since no output schema is provided, the description could better set expectations about what 'comprehensive details' includes, such as the structure of the response.

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

Parameters4/5

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

The input schema already has 100% coverage, but the description adds value by specifying default values for optional parameters (e.g., quoteCurrency defaults to USD) and highlighting that tracing features are only supported on eth-mainnet. This goes beyond the schema's descriptions, which lack some default context.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'fetch and render a single transaction including its decoded log events.' It uses a specific verb ('fetch and render') and resource ('single transaction'), distinguishing it from sibling tools like 'transactions_for_address' which handle multiple transactions.

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

Usage Guidelines4/5

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

The description lists required and optional parameters, and notes that tracing features are only supported on eth-mainnet. While it does not explicitly state when not to use this tool versus alternatives, the context of 'single transaction' implies appropriate use cases compared to sibling tools for lists. The guidance is clear but not exhaustive.

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

transactions_for_addressB

Commonly used to fetch the transactions involving an address including the decoded log events in a paginated fashion. Required: chainName (blockchain network), walletAddress (wallet address), page (page number). Optional: quoteCurrency, noLogs, blockSignedAtAsc (chronological order). Returns transactions for the specified page of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get transactions for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
pageYesPage number for pagination, starting from 0. Each page contains multiple transactions.
quoteCurrencyNoCurrency to quote transaction values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
noLogsNoExclude event logs from transactions for faster performance. Default is true.
blockSignedAtAscNoSort transactions in ascending chronological order. Default is false (newest first).

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses pagination behavior and inclusion of decoded log events, but lacks details like error handling, response format, or authentication requirements. Adequate but not thorough.

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

Conciseness4/5

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

The description is concise (two sentences) and front-loaded with the core purpose. The second sentence listing parameters is somewhat redundant with the schema, but overall it is structured efficiently.

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

Completeness3/5

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

Given no output schema and 6 parameters, the description covers the basic functionality but misses details like default values (e.g., noLogs defaults to true), page size limits, and error cases. Sufficient for a simple use case but not fully complete.

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

Parameters3/5

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

All parameters have schema descriptions (100% coverage), so the description's parameter summary adds little new information beyond listing with parentheticals. It confirms the required/optional split but does not enhance understanding of parameter semantics.

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

Purpose4/5

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

The description clearly states the tool fetches transactions for an address with decoded log events in a paginated manner, using a specific verb+resource combination. While it doesn't explicitly distinguish from siblings like 'transactions_for_block' or 'log_events_by_address', the mention of 'decoded log events' provides some differentiation.

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

Usage Guidelines2/5

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

The description only says 'commonly used' without specifying when to use this tool versus alternatives. No guidance on when not to use it or which sibling tools might be better suited for different contexts is provided.

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

transactions_for_blockA

Commonly used to fetch all transactions including their decoded log events in a block and further flag interesting wallets or transactions. Required: chainName (blockchain network), blockHeight (block number or latest). Optional: quoteCurrency, noLogs (exclude event logs). Returns all transactions from the specified block.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
blockHeightYesThe block number to get transactions from. Can be a block number or 'latest' for the most recent block.
pageYesPage number for pagination, starting from 0. Each page contains multiple transactions from the block.
quoteCurrencyNoCurrency to quote transaction values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
noLogsNoExclude event logs from transactions for faster performance. Default varies by implementation.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must fully inform about behavior. It mentions that log events are included by default and can be excluded via noLogs, but it omits details about pagination, rate limits, or the exact return format. The page parameter is required but not mentioned, which is a behavioral gap.

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

Conciseness3/5

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

The description is short at two sentences, which is efficient, but the omission of the page parameter and lack of structure (no bullet points or section separation) reduce clarity. It could be more complete without extra length.

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

Completeness3/5

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

Given 5 parameters and no output schema, the description covers the main purpose and some options but fails to mention the required page parameter or clarify the output structure. For a tool that fetches all transactions from a block, additional context like pagination behavior and output fields would be beneficial.

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

Parameters2/5

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

Schema coverage is 100%, so baseline is 3. However, the description incorrectly states that only chainName and blockHeight are required, while the schema also requires 'page'. This omission misleads about parameter semantics and reduces the value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'fetch' and resource 'transactions including decoded log events in a block', and gives a specific use case (flag interesting wallets or transactions). It distinguishes from siblings like transaction (single tx) or transactions_for_address (by address) by focusing on block-level retrieval.

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

Usage Guidelines4/5

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

The description provides a common use case and lists required and optional parameters, implying when to use. However, it does not explicitly state when not to use this tool or mention alternatives among siblings, which would strengthen guidance.

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

transaction_summaryB

Commonly used to fetch the earliest and latest transactions, and the transaction count for a wallet. Required: chainName (blockchain network), walletAddress (wallet address). Optional: quoteCurrency, withGas (include gas usage statistics). Returns summary of transaction activity for the specified wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNameYesThe blockchain network to query (e.g., 'eth-mainnet', 'matic-mainnet', 'bsc-mainnet').
walletAddressYesThe wallet address to get transaction summary for. Passing in an ENS, RNS, Lens Handle, or an Unstoppable Domain resolves automatically.
quoteCurrencyNoCurrency to quote transaction values in (e.g., 'USD', 'EUR'). If not specified, uses default quote currency.
withGasNoInclude gas usage statistics in the summary. Default is false.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, and the description only covers basic usage without disclosing behaviors such as error handling, rate limits, or idempotency. It is minimally adequate for a read-only tool.

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

Conciseness3/5

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

The description is concise but contains filler phrasing ('Commonly used') and could be more direct. The parameter listing is redundant given the schema.

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

Completeness2/5

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

The description lacks details about the return structure (e.g., fields in summary) and does not compensate for the missing output schema, leaving the agent guessing about the response format.

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

Parameters3/5

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

Schema coverage is 100%, and the description reiterates parameter names without adding significant new meaning beyond the schema defaults. The mention of withGas including gas stats adds marginal value.

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

Purpose5/5

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

The description clearly states the tool fetches the earliest and latest transactions and transaction count for a wallet, distinguishing it from sibling tools like transactions_for_address that fetch full lists.

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

Usage Guidelines3/5

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

The description lists required and optional parameters but provides no guidance on when to use this tool versus alternatives like transaction or transactions_for_address.

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. Dates show when Glama detected each change.

  1. 27 tool updatesv0.0.4
    • First observedbitcoin_hd_wallet_balances
    • First observedbitcoin_non_hd_wallet_balances
    • First observedbitcoin_transactions
    • First observedblock
    • First observedblock_heights
    • First observederc20_token_transfers
    • First observedgas_prices
    • First observedhistorical_portfolio_value
    • First observedhistorical_token_balances
    • First observedhistorical_token_prices
    • First observedlog_events_by_address
    • First observedlog_events_by_topic
    • First observedmultichain_address_activity
    • First observedmultichain_balances
    • First observedmultichain_transactions
    • First observednative_token_balance
    • First observednft_check_ownership
    • First observednft_check_ownership_token_id
    • First observednft_for_address
    • First observedpool_spot_prices
    • First observedtoken_approvals
    • First observedtoken_balances
    • First observedtoken_holders
    • First observedtransaction
    • First observedtransaction_summary
    • First observedtransactions_for_address
    • First observedtransactions_for_block

TDQS

A3.6/5.0
Disambiguation3/5

Several tools have overlapping purposes, e.g., various balance tools (token_balances, historical_token_balances, multichain_balances, native_token_balance) and multiple transaction tools (transaction, transactions_for_address, bitcoin_transactions). While descriptions clarify parameters, an agent could easily misselect the wrong tool for a given task.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern with descriptive verb_noun structure. Minor deviations include 'for' prepositions (e.g., transactions_for_address, nft_for_address) but overall naming is predictable and clear.

Tool Count3/5

27 tools exceeds the typical well-scoped range (3-15). While the server covers a broad domain (Bitcoin, EVM, NFTs, tokens, blocks, etc.), the count feels heavy and may overwhelm agents. Some consolidation could improve efficiency.

Completeness4/5

The tool surface is comprehensive for a read-only blockchain data API, covering balances, transactions, blocks, tokens, NFTs, gas, pools, historical data, and approvals. Missing operations like token price current or write actions are intentional due to the server's purpose, but minor gaps exist (e.g., no dedicated current price endpoint).

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to interact with blockchain data across 48 networks via the 3xpl JSON API, supporting tools for transactions, addresses, blocks, and more.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Nerve blockchain JSON-RPC and REST APIs as MCP tools, enabling AI agents to receive, pay, swap, and query balances with local account management and no gas fees.
    1
    -

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/covalenthq/goldrush-mcp-server'

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