Skip to content

com.blockscout/mcp-server

by blockscout.com · remote · no sign-in to list tools · v0.19.0 · published by com.blockscout

MCP server for Blockscout

Changes · 3

16 tools: 3 change things and 13 only read.

Scanned Oct 21, 2026

6 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http blockscout https://mcp.blockscout.com/mcp

Findings

Matches of fixed checks, with the text they matched.

6 warn
  • The description contains "any other tool", wording about other tools or servers.

    Matched text

    description: "...ol exactly once per session, before any other tool, and reuse its payload for the rest..."

    What this check looks for
  • The server marks "__unlock_blockchain_analysis__" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "__unlock_blockchain_analysis__" says "unlock": a word for a change.

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "..."address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "abi": {..."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "..."args": "["0xF977814e90dA44bFA03b6295A0616a897441aceC"]" } }..."

    What this check looks for
  • The server marks "read_contract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "read_contract" says "read": a word for reading.

    What this check looks for
  • The server marks "direct_api_call" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "direct_api_call" says "call": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

16 tools

Changes things 3Claude Code: ask
  • __unlock_blockchain_analysis__Initializes a Blockscout MCP session: returns server reference data, the `blockscout-analysis` skill pointer, and the URI resolution rule.2 findings

    Why it is in this group

    • The name "__unlock_blockchain_analysis__" says "unlock": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains "any other tool", wording about other tools or servers.

      Matched text

      description: "...ol exactly once per session, before any other tool, and reuse its payload for the rest..."

      What this check looks for
    • Warn

      The server marks "__unlock_blockchain_analysis__" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "__unlock_blockchain_analysis__" says "unlock": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Initializes a Blockscout MCP session: returns server reference data, the `blockscout-analysis` skill pointer, and the URI resolution rule. Call this tool exactly once per session, before any other tool, and reuse its payload for the rest of the session; do not call it again.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • direct_api_callCall a raw Blockscout API endpoint for advanced or chain-specific data.1 finding

    Why it is in this group

    • The name "direct_api_call" says "call": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "direct_api_call" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "direct_api_call" says "call": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Call a raw Blockscout API endpoint for advanced or chain-specific data. Before the first call to this tool in a session, read `blockscout-mcp://skill/SKILL.md` (the operating rules), then `blockscout-mcp://skill/references/blockscout-api-index.md` (the authoritative index of callable endpoints); skip both reads only if this skill content is already in context. Recalled Blockscout API knowledge is not a substitute: endpoint paths, parameters, and response shapes vary across Blockscout versions and per-chain deployments. Supports POST requests with a JSON body for endpoints like JSON RPC. **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages (GET only).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • read_contractCalls a smart contract function (view/pure, or non-view/pure simulated via eth_call) and returns the decoded result.3 findings

    Why it is in this group

    • The name "read_contract" says "read": a word for reading.
    • The description's first verb is "call": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "..."address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "abi": {..."

      What this check looks for
    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "..."args": "["0xF977814e90dA44bFA03b6295A0616a897441aceC"]" } }..."

      What this check looks for
    • Warn

      The server marks "read_contract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "read_contract" says "read": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Calls a smart contract function (view/pure, or non-view/pure simulated via eth_call) and returns the decoded result. This tool provides a direct way to query the state of a smart contract. Example: To check the USDT balance of an address on Ethereum Mainnet, you would use the following arguments: { "tool_name": "read_contract", "params": { "chain_id": "1", "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "abi": { "constant": true, "inputs": [{"name": "_owner", "type": "address"}], "name": "balanceOf", "outputs": [{"name": "balance", "type": "uint256"}], "payable": false, "stateMutability": "view", "type": "function" }, "function_name": "balanceOf", "args": "["0xF977814e90dA44bFA03b6295A0616a897441aceC"]" } }

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 13Claude Code: allow
  • get_address_by_ens_nameUseful for when you need to convert an ENS domain name (e.g.No findings

    Why it is in this group

    • The name "get_address_by_ens_name" says "get": a word for reading.
    Description, as the server wrote it
    Useful for when you need to convert an ENS domain name (e.g. "blockscout.eth") to its corresponding Ethereum address.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_address_infoGet comprehensive information about an address, including: - Address existence check - Native token (ETH) balance (provided as is, without adjusting by decimals) - First transactio…No findings

    Why it is in this group

    • The name "get_address_info" says "get": a word for reading.
    Description, as the server wrote it
    Get comprehensive information about an address, including: - Address existence check - Native token (ETH) balance (provided as is, without adjusting by decimals) - First transaction details (block number and timestamp) for age calculation - ENS name association (if any) - Contract status (whether the address is a contract, whether it is verified) - Proxy contract information (if applicable): determines if a smart contract is a proxy contract (which forwards calls to implementation contracts), including proxy type and implementation addresses - Token details (if the contract is a token): name, symbol, decimals, total supply, etc. Essential for address analysis, contract investigation, token research, and DeFi protocol analysis.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_block_infoGet block information like timestamp, gas used, burnt fees, transaction count etc.No findings

    Why it is in this group

    • The name "get_block_info" says "get": a word for reading.
    Description, as the server wrote it
    Get block information like timestamp, gas used, burnt fees, transaction count etc. Can optionally include the list of transaction hashes contained in the block. Transaction hashes are omitted by default; request them only when you truly need them, because on high-traffic chains the list may exhaust the context.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_block_numberRetrieves the block number and timestamp for a specific date/time or the latest block.No findings

    Why it is in this group

    • The name "get_block_number" says "get": a word for reading.
    Description, as the server wrote it
    Retrieves the block number and timestamp for a specific date/time or the latest block. Use when you need a block height for a specific point in time (e.g., "block at 2024-01-01") or the current chain tip. If `datetime` is provided, finds the block immediately preceding that time. If omitted, returns the latest indexed block.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_chains_listGet supported blockchain chains with their chain IDs.No findings

    Why it is in this group

    • The name "get_chains_list" says "get": a word for reading.
    Description, as the server wrote it
    Get supported blockchain chains with their chain IDs. Ethereum Mainnet is `chain_id` `1`; use this tool to resolve any other chain. Use this when another tool needs a supported `chain_id` and only the chain name, ecosystem, or native currency is known. Prefer a narrow `query` to avoid returning the full registry to the agent. Do not rely on partial numeric chain ID queries such as `1`, because matching is substring-based and may return many chains.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_contract_abiGet smart contract ABI (Application Binary Interface).No findings

    Why it is in this group

    • The name "get_contract_abi" says "get": a word for reading.
    Description, as the server wrote it
    Get smart contract ABI (Application Binary Interface). An ABI defines all functions, events, their parameters, and return types. The ABI is required to format function calls or interpret contract data.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_token_transfers_by_addressGet ERC-20 token transfers for an address within a specific time range.No findings

    Why it is in this group

    • The name "get_token_transfers_by_address" says "get": a word for reading.
    Description, as the server wrote it
    Get ERC-20 token transfers for an address within a specific time range. **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_tokens_by_addressGet comprehensive ERC20 token holdings for an address with enriched metadata and market data.No findings

    Why it is in this group

    • The name "get_tokens_by_address" says "get": a word for reading.
    Description, as the server wrote it
    Get comprehensive ERC20 token holdings for an address with enriched metadata and market data. Returns detailed token information including contract details (name, symbol, decimals), market metrics (exchange rate, market cap, volume), holders count, and actual balance (provided as is, without adjusting by decimals). Essential for portfolio analysis, wallet auditing, and DeFi position tracking. **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_transaction_infoGet comprehensive transaction information.No findings

    Why it is in this group

    • The name "get_transaction_info" says "get": a word for reading.
    Description, as the server wrote it
    Get comprehensive transaction information. Unlike standard eth_getTransactionByHash, this tool returns enriched data including decoded input parameters, detailed token transfers with token metadata, transaction fee breakdown (priority fees, burnt fees) and categorized transaction types. By default, the raw transaction input is omitted if a decoded version is available to save context; request it with `include_raw_input=True` only when you truly need the raw hex data. Essential for transaction analysis, debugging smart contract interactions, tracking DeFi operations.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • get_transactions_by_addressRetrieves native currency transfers and smart contract interactions (calls, internal txs) for an address.No findings

    Why it is in this group

    • The name "get_transactions_by_address" says "get": a word for reading.
    Description, as the server wrote it
    Retrieves native currency transfers and smart contract interactions (calls, internal txs) for an address. **EXCLUDES TOKEN TRANSFERS**: Filters out direct token balance changes (ERC-20, etc.). You'll see calls *to* token contracts, but not the `Transfer` events. For token history, use `get_token_transfers_by_address`. A single tx can have multiple records from internal calls. Requires an `age_from` date to scope results for performance and relevance. **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • inspect_contract_codeInspects a verified contract's source code or metadata.No findings

    Why it is in this group

    • The name "inspect_contract_code" says "inspect": a word for reading.
    Description, as the server wrote it
    Inspects a verified contract's source code or metadata.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • lookup_token_by_symbolSearch for token addresses by symbol or name.No findings

    Why it is in this group

    • The name "lookup_token_by_symbol" says "lookup": a word for reading.
    Description, as the server wrote it
    Search for token addresses by symbol or name. Returns multiple potential matches based on symbol or token name similarity. Only the first 7 matches from the Blockscout API are returned.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • nft_tokens_by_addressRetrieve NFT tokens (ERC-721, ERC-404, ERC-1155) owned by an address, grouped by collection.No findings

    Why it is in this group

    • The description's first verb is "retrieve": a word for reading.
    Description, as the server wrote it
    Retrieve NFT tokens (ERC-721, ERC-404, ERC-1155) owned by an address, grouped by collection. Provides collection details (type, address, name, symbol, total supply, holder count) and individual token instance data (ID, name, description, external URL, metadata attributes). Essential for a detailed overview of an address's digital collectibles and their associated collection data. **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.19.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http blockscout https://mcp.blockscout.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__blockscout__get_block_info",
      "mcp__blockscout__get_block_number",
      "mcp__blockscout__get_address_by_ens_name",
      "mcp__blockscout__get_transactions_by_address",
      "mcp__blockscout__get_token_transfers_by_address",
      "mcp__blockscout__lookup_token_by_symbol",
      "mcp__blockscout__get_contract_abi",
      "mcp__blockscout__inspect_contract_code",
      "mcp__blockscout__get_address_info",
      "mcp__blockscout__get_tokens_by_address",
      "mcp__blockscout__nft_tokens_by_address",
      "mcp__blockscout__get_transaction_info",
      "mcp__blockscout__get_chains_list"
    ],
    "ask": [
      "mcp__blockscout____unlock_blockchain_analysis__",
      "mcp__blockscout__read_contract",
      "mcp__blockscout__direct_api_call"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as blockscout. Review it before you use it.