pick.tools

Blockscout blockscout

Blockchain explorer data across many EVM chains.

Auth
keyless
Health
up probed
Vendor
blockscout.com
Categories
crypto, data

Endpoint

https://mcp.blockscout.com/mcp (streamable-http)

Authentication

Keyless: the server answers without a credential.

From an agent (picker mode): call_tool with server=blockscout

Tools (16)

Name Title Description
direct_api_call – Call a raw Blockscout API endpoint for advanced or chain-specific data.
Input schema
{
  "type": "object",
  "title": "direct_api_callArguments",
  "required": [
    "chain_id",
    "endpoint_path"
  ],
  "properties": {
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The pagination cursor from a previous response to get the next page of results."
    },
    "method": {
      "enum": [
        "GET",
        "POST"
      ],
      "type": "string",
      "title": "Method",
      "default": "GET",
      "description": "HTTP method used for the upstream call. Use POST with json_body."
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "json_body": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Json Body",
      "default": null,
      "description": "JSON request body for POST requests."
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    },
    "query_params": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Query Params",
      "default": null,
      "description": "Optional query parameters forwarded to the Blockscout API."
    },
    "endpoint_path": {
      "type": "string",
      "title": "Endpoint Path",
      "description": "The Blockscout API path to call (e.g., '/api/v2/stats'); do not include query strings — pass all query parameters via query_params to avoid double-encoding."
    }
  }
}
get_address_by_ens_name – Useful for when you need to convert an ENS domain name (e.g. "blockscout.eth")
Input schema
{
  "type": "object",
  "title": "get_address_by_ens_nameArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name",
      "description": "ENS domain name to resolve"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_address_info – Get comprehensive information about an address, including:
Input schema
{
  "type": "object",
  "title": "get_address_infoArguments",
  "required": [
    "chain_id",
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Address to get information about"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_block_info – Get block information like timestamp, gas used, burnt fees, transaction count etc.
Input schema
{
  "type": "object",
  "title": "get_block_infoArguments",
  "required": [
    "chain_id",
    "number_or_hash"
  ],
  "properties": {
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    },
    "number_or_hash": {
      "type": "string",
      "title": "Number Or Hash",
      "description": "Block number or hash"
    },
    "include_transactions": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Include Transactions",
      "default": false,
      "description": "If true, includes a list of transaction hashes from the block."
    }
  }
}
get_block_number – Retrieves the block number and timestamp for a specific date/time or the latest block.
Input schema
{
  "type": "object",
  "title": "get_block_numberArguments",
  "required": [
    "chain_id"
  ],
  "properties": {
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "datetime": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Datetime",
      "default": null,
      "description": "The date and time (ISO 8601 format, e.g. 2025-05-22T23:00:00.00Z) to find the block for. If omitted, returns the latest block."
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_chains_list – Get supported blockchain chains with their chain IDs.
Input schema
{
  "type": "object",
  "title": "get_chains_listArguments",
  "properties": {
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Query",
      "default": null,
      "description": "Optional case-insensitive substring filter applied to chain name, chain ID, native currency, and ecosystem. Prefer narrow text terms over partial numeric chain IDs because matching is substring-based."
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_contract_abi – Get smart contract ABI (Application Binary Interface).
Input schema
{
  "type": "object",
  "title": "get_contract_abiArguments",
  "required": [
    "chain_id",
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Smart contract address"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_tokens_by_address – Get comprehensive ERC20 token holdings for an address with enriched metadata and market data.
Input schema
{
  "type": "object",
  "title": "get_tokens_by_addressArguments",
  "required": [
    "chain_id",
    "address"
  ],
  "properties": {
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The pagination cursor from a previous response to get the next page of results."
    },
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Wallet address"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_token_transfers_by_address – Get ERC-20 token transfers for an address within a specific time range.
Input schema
{
  "type": "object",
  "title": "get_token_transfers_by_addressArguments",
  "required": [
    "chain_id",
    "address",
    "age_from"
  ],
  "properties": {
    "token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Token",
      "default": null,
      "description": "An ERC-20 token contract address to restrict results to a single token. If omitted, returns transfers of all tokens."
    },
    "age_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Age To",
      "default": null,
      "description": "End date and time (e.g 2025-05-22T22:30:00.00Z). Adding this bounds the upper end of the date range started by `age_from`; if omitted, transfers up to the current time are returned."
    },
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The pagination cursor from a previous response to get the next page of results."
    },
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Address which either transfer initiator or transfer receiver"
    },
    "age_from": {
      "type": "string",
      "title": "Age From",
      "description": "Start date and time (e.g 2025-05-22T23:00:00.00Z). Alone, returns all ERC-20 transfers to/from the address since this date."
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
get_transaction_info – Get comprehensive transaction information.
Input schema
{
  "type": "object",
  "title": "get_transaction_infoArguments",
  "required": [
    "chain_id",
    "transaction_hash"
  ],
  "properties": {
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    },
    "transaction_hash": {
      "type": "string",
      "title": "Transaction Hash",
      "description": "Transaction hash"
    },
    "include_raw_input": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Include Raw Input",
      "default": false,
      "description": "If true, includes the raw transaction input data."
    }
  }
}
get_transactions_by_address – Retrieves native currency transfers and smart contract interactions (calls, internal txs) for an address.
Input schema
{
  "type": "object",
  "title": "get_transactions_by_addressArguments",
  "required": [
    "chain_id",
    "address",
    "age_from"
  ],
  "properties": {
    "age_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Age To",
      "default": null,
      "description": "End date and time (e.g 2025-05-22T22:30:00.00Z). Adding this bounds the upper end of the date range started by `age_from`."
    },
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The pagination cursor from a previous response to get the next page of results."
    },
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Address which either sender or receiver of the transaction"
    },
    "methods": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Methods",
      "default": null,
      "description": "A method signature to filter transactions by (e.g 0x304e6ade). Filters the (optionally date-bounded) results to a specific method signature."
    },
    "age_from": {
      "type": "string",
      "title": "Age From",
      "description": "Start date and time (e.g 2025-05-22T23:00:00.00Z). Alone, returns all transactions to/from the address since this date."
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
inspect_contract_code – Inspects a verified contract's source code or metadata.
Input schema
{
  "type": "object",
  "title": "inspect_contract_codeArguments",
  "required": [
    "chain_id",
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "title": "Address",
      "description": "The address of the smart contract."
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain."
    },
    "file_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "File Name",
      "default": null,
      "description": "The name of the source file to inspect. If omitted, returns contract metadata and the list of source files."
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
lookup_token_by_symbol – Search for token addresses by symbol or name. Returns multiple potential
Input schema
{
  "type": "object",
  "title": "lookup_token_by_symbolArguments",
  "required": [
    "chain_id",
    "symbol"
  ],
  "properties": {
    "symbol": {
      "type": "string",
      "title": "Symbol",
      "description": "Token symbol or name to search for"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
nft_tokens_by_address – Retrieve NFT tokens (ERC-721, ERC-404, ERC-1155) owned by an address, grouped by collection.
Input schema
{
  "type": "object",
  "title": "nft_tokens_by_addressArguments",
  "required": [
    "chain_id",
    "address"
  ],
  "properties": {
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The pagination cursor from a previous response to get the next page of results."
    },
    "address": {
      "type": "string",
      "title": "Address",
      "description": "NFT owner address"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    }
  }
}
read_contract – Calls a smart contract function (view/pure, or non-view/pure simulated via eth_call) and returns the
Input schema
{
  "type": "object",
  "title": "read_contractArguments",
  "required": [
    "chain_id",
    "address",
    "abi",
    "function_name"
  ],
  "properties": {
    "abi": {
      "type": "object",
      "title": "Abi",
      "description": "The JSON ABI for the specific function being called. This should be a dictionary that defines the function's name, inputs, and outputs. The function ABI can be obtained using the `get_contract_abi` tool.",
      "additionalProperties": true
    },
    "args": {
      "type": "string",
      "title": "Args",
      "default": "[]",
      "description": "A JSON string containing an array of arguments. Example: \"[\"0xabc...\"]\" for a single address argument, or \"[]\" for no arguments. Order and types must match ABI inputs. Addresses: use 0x-prefixed strings; Numbers: prefer integers (not quoted); numeric strings like \"1\" are also accepted and coerced to integers. Bytes: keep as 0x-hex strings."
    },
    "block": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        }
      ],
      "title": "Block",
      "default": "latest",
      "description": "The block identifier to read the contract state from. Can be a block number (e.g., 19000000) or a string tag (e.g., 'latest'). Defaults to 'latest'."
    },
    "address": {
      "type": "string",
      "title": "Address",
      "description": "Smart contract address"
    },
    "chain_id": {
      "type": "string",
      "title": "Chain Id",
      "description": "The ID of the blockchain"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Session Id",
      "default": null,
      "description": "Opaque session identifier."
    },
    "function_name": {
      "type": "string",
      "title": "Function Name",
      "description": "The symbolic name of the function to be called. This must match the `name` field in the provided ABI."
    }
  }
}
__unlock_blockchain_analysis__ – Initializes a Blockscout MCP session: returns server reference data, the
Input schema
{
  "type": "object",
  "title": "__unlock_blockchain_analysis__Arguments",
  "properties": {}
}

Calls, last 30 days

2026-10-07 to 2026-11-05 · 0 calls

No relayed calls in the last 30 days.

Probes

Last 6, newest at the top. Probes carry no credential.
Probed at Outcome HTTP Latency ms
ok 200 605
ok 200 730
ok 200 316
ok 200 703
ok 200 725
ok 200 282

Connect via pick.tools

Claude Code

claude mcp add --transport http pick https://pick.tools/mcp

JSON config (mcpServers)

{
  "mcpServers": {
    "pick": {
      "type": "http",
      "url": "https://pick.tools/mcp"
    }
  }
}

One pick.tools connection reaches every keyless and API-key server in the catalog.

For Blockscout

pick.tools probes this server hourly, without a credential, as pick.tools-probe/1 (+https://pick.tools/docs/for-vendors). Calls relayed for agents arrive as pick.tools/1 (+https://pick.tools/docs/for-vendors). For vendors lists the egress IPs and how to opt out.