blockscout-mcp-server
The blockscout-mcp-server is a read-only multichain EVM blockchain analysis server that queries on-chain data through the Blockscout REST API, designed for LLM clients.
Key capabilities:
Onboarding guard — A mandatory first tool (
__unlock_blockchain_analysis__) ensures agents understand usage rules before proceeding.Chain discovery — List all supported chains (bundled + custom), filterable by name or chain ID.
Address lookup — Get balance, type (EOA vs. contract), and metadata for any address.
Token balances — Retrieve ERC-20/721/1155 token balances held by an address.
Token transfers — List token transfer events for an address or within a specific transaction.
Transaction history & details — Fetch native transactions by address or full details (status, value, gas, decoded input) by hash.
Block info — Retrieve block details by number or hash, or get the latest block height.
Event logs — Fetch event logs emitted by a contract/address (large fields truncated).
Smart contract analysis — Get verified contract ABIs, source code, and compiler metadata.
NFT holdings — List ERC-721/1155 NFTs owned by an address.
Token search — Look up tokens by symbol or name to find their contract addresses.
Raw API access — An escape hatch (
direct_api_call) to call any Blockscout/api/v2endpoint directly.Pagination — All list tools support cursor-based pagination for efficient traversal of large datasets.
Custom chains — Register or override chains via a
CHAINS_FILEenvironment variable.
Provides tools for querying on-chain data from EVM-compatible blockchains, including Ethereum, via the Blockscout API. Allows retrieving address balances, transaction details, token balances, block information, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@blockscout-mcp-servershow me the latest block on Ethereum"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
blockscout-mcp-server
A read-only stdio MCP server that gives AI agents multichain EVM on-chain data — addresses, transactions, blocks, logs, tokens, NFTs, and contract source — through the Blockscout REST API.
This isnot the official Blockscout MCP server. It is a custom, independently built server maintained by an individual developer, and it is not affiliated with or endorsed by the Blockscout team.
Quick start
npx downloads the published package and runs it — nothing to install manually. Works from any
project;
{
"mcpServers": {
"blockscout": {
"command": "npx",
"args": ["-y", "blockscout-mcp-server"],
}
}
}point CHAINS_FILE at that project's chains file (a relative ./chains.json resolves
against the client's working directory).
{
"mcpServers": {
"blockscout": {
"command": "npx",
"args": ["-y", "blockscout-mcp-server"],
"env": {
"CHAINS_FILE": "./chains.json",
"ONLY_CHAINS_FILE": "true"
}
}
}
}The chain registry and env are read once at startup. After changing config or code, restart (reconnect) the server in your MCP client. A ready-to-edit
.mcp.example.jsonis included.
Related MCP server: sui-analytics-mcp
Supported chains
These chains are registered out of the box from the bundled snapshot
(src/chains/bundled.json) — no configuration required. The chain argument of
any tool accepts either the name (ethereum) or the numeric chain ID (1).
Chain name | Chain ID | Blockscout instance |
| 1 | |
| 10 | |
| 100 | |
| 8453 | |
| 42161 | |
| 534352 | |
| 11155111 |
Call the get_chains_list tool to see the chains actually registered on a running
server.
Custom chains
Point CHAINS_FILE at a JSON file describing extra chains (or overriding bundled ones).
Each entry needs a name, chainId, and Blockscout instance url:
[
{ "name": "my-l2", "chainId": 42, "url": "https://scan.my-l2.io" }
]If CHAINS_FILE is set but the file is missing or malformed, the server exits immediately (fail-fast).
Set ONLY_CHAINS_FILE=true to register only the chains from CHAINS_FILE and exclude the
bundled snapshot entirely. It requires CHAINS_FILE to be set (otherwise no chains would exist and
the server fails fast). The default (false) merges bundled chains with CHAINS_FILE.
Local development
The MCP Inspector is wired up as a dev dependency, so you can walk through the MCP handshake and call tools by hand without hooking the server into a real client.
git clone https://github.com/imelon2/blockscout-mcp-server.git
cd blockscout-mcp-server
pnpm install
pnpm run inspectpnpm run inspect builds first, then opens the Inspector UI — pick the stdio transport
and point it at node dist/index.js. Two shortcuts:
License
MIT
Available Tools
16 toolsdirect_api_callCall a raw Blockscout API endpointA
Escape hatch: call any Blockscout REST v2 endpoint not covered by a dedicated tool. endpoint_path is relative to /api/v2 (e.g. "/addresses/0x.../counters"). Response is capped in size.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Optional pagination cursor from a previous response. | |
| query_params | No | Optional query string parameters as a string map. | |
| endpoint_path | Yes | Path relative to /api/v2, starting with '/'. Example: "/addresses/0xabc.../counters". |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states the response is capped in size and the endpoint path is relative to /api/v2. It does not discuss error handling or mutation, but for an escape hatch this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no unnecessary words. The first sentence defines purpose, the second provides parameter guidance and response constraint. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of an escape hatch tool with 4 parameters and an output schema, the description is complete. It explains the tool's purpose, input format, pagination via cursor, and response size cap. The output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds minimal parameter-specific information beyond what is in the schema, such as emphasizing that endpoint_path is relative to /api/v2 with an example. Baseline is 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is an escape hatch for calling any Blockscout REST v2 endpoint not covered by a dedicated tool, with a specific verb 'call' and resource 'any Blockscout REST v2 endpoint'. This distinguishes it from sibling tools which handle specific endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used when no dedicated tool exists ('not covered by a dedicated tool'). It provides an example endpoint path and mentions response size cap, but does not explicitly list when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_address_infoGet address infoA
Get balance, type (account vs contract), and metadata for an address on a chain. Use this first when asked about a wallet or contract.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| address | Yes | The 0x-prefixed address (account or contract) to look up. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states what the tool returns but doesn't discuss read-only nature, error handling, or rate limits. Adequate for a simple lookup, but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and outputs, second gives usage guidance. Front-loaded with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the tool is simple, the description covers purpose, usage, and chain discovery. No obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. Description adds value by referencing get_chains_list for chain discovery and specifying '0x-prefixed address', going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gets balance, type, and metadata for an address on a chain, and distinguishes it from siblings by recommending it as the first tool for wallet/contract queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Use this first when asked about a wallet or contract', providing clear context. Lacks explicit mention of when not to use it, but the guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_infoGet block infoA
Get details for a block by number or hash: timestamp, miner, gas used, and tx count.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | Block number (e.g. "19000000") or 0x-prefixed block hash. | |
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states the tool returns specific details but does not disclose error behavior (e.g., what happens if block not found), rate limits, or authentication requirements. For a read-only tool, this is minimally acceptable but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence. It efficiently conveys the tool's purpose and the specific data it returns. Every word is meaningful; there is no redundancy or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters, both required, and an output schema (not shown). The description mentions key return fields, which is helpful. For a simple block query tool, the description is nearly complete, though it could note that the output schema provides the full structure. Overall, it covers the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for both parameters (block and chain). The tool description reinforces that block can be a number or hash, but adds no new semantic detail beyond the schema. Given full schema coverage, the baseline score is 3; the description does not significantly improve parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'details for a block by number or hash'. It lists specific fields returned (timestamp, miner, gas used, tx count), making the tool's purpose unambiguous. While it doesn't explicitly differentiate from sibling tools, the set of siblings (e.g., get_block_number, get_address_info) are sufficiently distinct that confusion is minimal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions using get_chains_list for chain discovery, which is a parameter hint, not a usage guideline. There is no statement about when not to use it or which tool to use for other scenarios (e.g., getting a block by number only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_block_numberGet latest block numberA
Get the latest (most recent) block height for a chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It only states the purpose and does not disclose any behavioral traits (e.g., read-only nature, rate limits, output format). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exceptionally concise: two sentences with no unnecessary words. Information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and existence of an output schema, the description is adequate but could be more complete by mentioning the return type (integer) or typical usage. The output schema covers return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. The description adds useful context: chain can be name or ID, and directs to get_chains_list for options, going beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('latest block height for a chain'), clearly distinguishing it from siblings that get block info, chain lists, etc. It is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions using get_chains_list for parameter discovery, but no when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chains_listList supported chainsA
List all chains this server can query (bundled registry + any custom chains from CHAINS_FILE). Optionally filter by name or chain ID.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional case-insensitive substring filter over chain name or chain ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the data sources and optional filter, which is adequate. However, it lacks details like sorting, pagination, or behavior with no filter. The description adds some context beyond the schema but is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the purpose and optional filter. No extraneous words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an existing output schema, the description adequately covers the source and filter. It is reasonably complete without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (one parameter with description). The tool's description essentially repeats the schema's description of the filter parameter, adding no new semantic meaning. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all chains the server can query, mentioning sources (bundled registry + custom chains). This distinguishes it from sibling tools like get_address_info or direct_api_call, which serve other purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for discovering available chains but does not explicitly state when to use it vs. alternatives or when not to use it. No usage exclusions or references to other tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contract_abiGet contract ABIA
Get the ABI of a verified smart contract. Returns the ABI array only.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| address | Yes | The 0x-prefixed smart contract address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. States that it returns only the ABI array, which adds some transparency, but lacks disclosure of error behavior, rate limits, or need for verification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, return values are covered. Description is adequate for a simple tool but could mention contract verification requirement. Still fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. Description does not add additional semantic value beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'ABI of a verified smart contract', clearly stating what is returned ('ABI array only'). Distinguishes from sibling tools like inspect_contract_code that deal with source code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., contract must be verified) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logsGet event logs by addressA
List event logs emitted by a contract/address. Large data fields are truncated. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Opaque pagination cursor from a previous response's pagination.next_cursor. | |
| address | Yes | The 0x-prefixed contract/address whose logs to fetch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It transparently discloses that large 'data' fields are truncated and that results are paginated. These are important behavioral traits for the agent to know. Could also mention ordering or error handling, but current disclosure is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the primary purpose and then add key behavioral notes. Every sentence serves a purpose with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and three well-documented parameters, the description adequately covers the main purpose, pagination, and truncation. It could optionally mention ordering or filter capabilities, but is mostly complete for a simple log listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the input schema (100% coverage). The tool description does not add additional parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List event logs emitted by a contract/address.' It uses a specific verb ('List') and resource ('event logs'), and distinguishes from sibling tools like get_transactions_by_address and get_token_transfers_by_address by specifying logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions pagination and truncation of large data fields, providing some usage context. However, it does not explicitly state when to use this tool versus siblings such as get_transactions_by_address or get_token_transfers_by_address, nor does it provide guidance on 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.
get_tokens_by_addressGet token balances by addressA
List ERC-20/721/1155 token balances held by an address. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Opaque pagination cursor from a previous response's pagination.next_cursor. | |
| address | Yes | The 0x-prefixed address (account or contract) to look up. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a read operation ('List') and pagination, but lacks details on permissions, rate limits, or behavior on empty results. This is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and key feature (pagination). No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and clear required parameters, the description covers the essential: purpose, pagination, and resource type. It could mention that balances are current, but it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it merely restates the concept of listing balances by address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'ERC-20/721/1155 token balances', and the scope 'by address'. It also notes pagination. This distinguishes it from siblings like 'get_token_transfers_by_address'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching token balances but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with alternatives like 'nft_tokens_by_address'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_transfers_by_addressGet token transfers by addressA
List token transfer events involving an address (in and out). Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Opaque pagination cursor from a previous response's pagination.next_cursor. | |
| address | Yes | The 0x-prefixed address (account or contract) to look up. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry the burden. It mentions 'in and out' and 'paginated', but lacks details like data freshness, rate limits, permission requirements, or whether it returns all token types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no unnecessary words. Every part adds value: purpose, scope, and pagination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema covering return values. Description covers purpose and pagination. Could mention required chain/address format incompleteness, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description does not add significant parameter-specific 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists token transfer events involving an address, both incoming and outgoing, and that it is paginated. This distinguishes it from siblings like get_token_transfers_by_transaction and get_transactions_by_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to list transfers for an address. It does not provide when-not-to-use guidance or mention alternatives explicitly, but the context is clear given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_transfers_by_transactionGet token transfers by transactionC
List token transfers that occurred within a single transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | The 0x-prefixed transaction hash. | |
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden of behavioral disclosure. It only states 'list token transfers' without mentioning safety (read-only), rate limits, or error states, which is insufficient for a mutation-ambiguous tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise (one sentence) and front-loaded. However, it could be expanded minimally to add value without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are covered. However, the description omits context about token standards, pagination, or limitations, making it minimally complete for a blockchain data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description adds no additional semantic value beyond 'list token transfers', so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists token transfers within a single transaction, using specific verb 'list' and resource 'token transfers' scoped to a transaction. This distinguishes it from siblings like get_token_transfers_by_address, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives. It does not mention prerequisites, exclusions, or context, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transaction_infoGet transaction infoB
Get full details for a transaction by hash: status, value, gas, and decoded input.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | The 0x-prefixed transaction hash. | |
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as rate limits, authentication requirements, error handling for invalid hashes, or whether the tool is read-only. For a tool with no annotations, the description should carry more burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads key information (tool purpose and output details). It is concise and well-structured, though could be slightly more detailed without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple 2-parameter tool and presence of an output schema, the description is adequate but lacks usage guidance and behavioral transparency. It covers the core purpose but is incomplete for full autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds little beyond the schema, listing output fields but not enhancing parameter meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving full transaction details by hash, including status, value, gas, and decoded input. This distinguishes it from sibling tools like get_block_info or get_address_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions using get_chains_list for supported chains but provides no explicit guidance on when to use this tool versus alternatives like get_transactions_by_address or inspect_contract_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactions_by_addressGet transactions by addressA
List native transactions involving an address (sent and received). Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Opaque pagination cursor from a previous response's pagination.next_cursor. | |
| address | Yes | The 0x-prefixed address (account or contract) to look up. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses pagination and bidirectional nature (sent/received). No annotations exist, so description carries full burden. Missing details like ordering, limit, or response handling, but adequate for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with action. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior (list, paginated, native transactions) but could explicitly contrast with token transfer tools. Output schema exists, so return format is covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all parameters. The tool description adds no additional parameter insight beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('List'), resource ('native transactions'), and scope ('involving an address (sent and received)'). Distinguishes from siblings like 'get_token_transfers_by_address' (token transfers) and 'get_transaction_info' (single transaction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for listing native transactions involving an address but lacks explicit when-not-to-use or alternative tools. No guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_contract_codeInspect contract source codeA
Get verified source code and compiler metadata for a smart contract.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| address | Yes | The 0x-prefixed smart contract address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states what the tool returns, omitting crucial details like whether the contract must be verified (implied but not stated), error conditions, or any mutability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise, and front-loaded sentence containing only essential information. Every word is meaningful, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description appropriately omits return value details. It could mention that only verified contracts are supported, but otherwise the description is sufficient for a straightforward retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters having descriptive names and schema descriptions (chain includes examples, address specifies format). The tool description adds no extra semantic value beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving verified source code and compiler metadata for a smart contract. It uses a specific verb and resource, distinguishing it from sibling tools like get_contract_abi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_contract_abi) or any prerequisites. The purpose is clear but lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_token_by_symbolLook up token by symbolA
Search for tokens by symbol or name on a chain. Returns candidate tokens with their contract addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| symbol | Yes | Token symbol or name to search for, e.g. "USDC". |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It only mentions the return type (candidate tokens with contract addresses) but omits behavioral traits such as behavior on no match, rate limits, authorization needs, or pagination. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: first states purpose, second states outcome. No extraneous content. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 string parameters, no nesting, output schema exists), the description covers the core functionality. It would benefit from mentioning default behavior on no match (e.g., empty list), but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds value by giving examples ('ethereum' or '1' for chain, 'USDC' for symbol) and a usage hint for chain. This exceeds the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'tokens by symbol or name on a chain', and distinguishes from sibling tools like get_tokens_by_address which search by address. It also specifies the return type (candidate tokens with contract addresses).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (search by symbol or name on a chain) and even references get_chains_list for chain discovery. However, it does not explicitly exclude cases or mention alternatives, though the sibling list is broad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nft_tokens_by_addressGet NFT tokens by addressA
List NFT (ERC-721/1155) tokens owned by an address. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain name or numeric chain ID, e.g. "ethereum" or "1". Use get_chains_list to discover supported chains. | |
| cursor | No | Opaque pagination cursor from a previous response's pagination.next_cursor. | |
| address | Yes | The 0x-prefixed owner address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses pagination behavior, which is important for agents. It's a read-only operation, implied by 'List'. No misleading statements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loading the core purpose and adding a critical behavioral detail (paginated). No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description adequately covers purpose, scope, and pagination. Could mention error handling or empty results, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all three parameters described). The description adds value by suggesting using get_chains_list for the chain parameter, aiding correct invocation. This goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (List), resource (NFT tokens owned by an address), and specific token standards (ERC-721/1155). It distinguishes from sibling tools like get_tokens_by_address, which likely handle non-NFT tokens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. Usage is implied by the name and description, but no direct comparisons or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
__unlock_blockchain_analysis__Unlock blockchain analysis (start here)A
MANDATORY FIRST STEP for AI agents. Returns usage rules and conventions for this server. Call this once before invoking any other tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| notes | No | |
| pagination | No | |
| instructions | No | |
| data_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the tool as returning usage rules and conventions, implying safe, read-only behavior. Lacks mention of idempotency or effects of repeated calls, but given no annotations, the disclosure is adequate for its simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with essential information front-loaded: 'MANDATORY FIRST STEP.' No unnecessary words—every sentence carries key guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (implied to detail the rules), the description fully covers the tool's purpose and usage. It tells the agent exactly what to do and why, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%, so no additional parameter documentation is needed. The baseline of 4 is appropriate as the description adds no extra meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is the mandatory first step that returns usage rules and conventions, distinguishing it from all sibling tools that perform blockchain analysis tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'MANDATORY FIRST STEP' and 'Call this once before invoking any other tool,' providing unambiguous when-to-use and ordering instructions.
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.
16 tool updates
v0.1.0- First observed
__unlock_blockchain_analysis__ - First observed
direct_api_call - First observed
get_address_info - First observed
get_block_info - First observed
get_block_number - First observed
get_chains_list - First observed
get_contract_abi - First observed
get_logs - First observed
get_token_transfers_by_address - First observed
get_token_transfers_by_transaction - First observed
get_tokens_by_address - First observed
get_transaction_info - First observed
get_transactions_by_address - First observed
inspect_contract_code - First observed
lookup_token_by_symbol - First observed
nft_tokens_by_address
TDQS
Each tool targets a distinct blockchain data type or operation—address, block, transaction, token, contract, chain, logs, etc. No two tools have overlapping purposes; even the escape hatch `direct_api_call` is clearly separate from dedicated tools.
The majority of tools follow a `get_<resource>` pattern, but there are exceptions like `lookup_token_by_symbol`, `inspect_contract_code`, `nft_tokens_by_address`, and the unusual `__unlock_blockchain_analysis__`. While still readable, this mix of conventions introduces inconsistency.
With 16 tools covering core blockchain explorer functionality—addresses, blocks, transactions, tokens, contracts, chains—the count is well-scoped. It is slightly above the ideal 3-15 range but still reasonable for the domain.
The tool set covers the main blockchain query needs: address details, block info, transactions, token balances, transfers, contract ABI/source, logs, and chains list. Minor gaps like pending transactions or general search exist, but the escape hatch `direct_api_call` mitigates them effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Blockscout MCP — multi-chain block-explorer aggregate
Etherscan MCP — multichain block-explorer API (Etherscan V2)
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server with 43 tools for blockchain data — token lookups, wallet balances, live chain queries across 10+ networks, and full API documentation search.27187Apache 2.0
- AlicenseAqualityAmaintenanceRead-only MCP server for Sui blockchain analytics with 44 tools covering wallets, DeFi, NFTs, token prices, transactions, fund tracing, pools, staking, Move decompilation, and MVR name resolution.191711MIT
- AlicenseNot gradedqualityCmaintenanceProvides multichain block-explorer data from Etherscan via MCP tools for token balances, contract ABI, and source code.6MIT

Pharos MCP Serverofficial
FlicenseAqualityCmaintenanceEnables querying Pharos blockchain data (EVM-compatible) through MCP, with read-only tools for blocks, transactions, balances, and contract calls, plus optional transaction broadcasting when self-hosted.14-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/imelon2/blockscout-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server