| name | blockscout-mcp |
| description | Use when querying onchain data through Blockscout MCP. Covers contract source retrieval, transaction analysis, address balance queries, event log queries, and token information. |
Blockscout MCP Integration
Overview
Blockscout provides a comprehensive API for querying onchain data. Through MCP (Model Context Protocol), you can access contract sources, transaction details, address information, and event logs programmatically.
Blockscout API Endpoints
Base URLs by chain:
| Chain | Blockscout URL |
|---|
| Ethereum | https://eth.blockscout.com/api/v2 |
| Base | https://base.blockscout.com/api/v2 |
| Optimism | https://optimism.blockscout.com/api/v2 |
| Arbitrum | https://arbitrum.blockscout.com/api/v2 |
| Gnosis | https://gnosis.blockscout.com/api/v2 |
Contract Source Retrieval
curl "https://base.blockscout.com/api/v2/smart-contracts/0xContractAddress"
Using cast:
cast etherscan-source 0xContractAddress \
--chain base \
-d ./downloaded-source
Address Queries
curl "https://base.blockscout.com/api/v2/addresses/0xAddress"
curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-balances"
curl "https://base.blockscout.com/api/v2/addresses/0xAddress/transactions"
curl "https://base.blockscout.com/api/v2/addresses/0xAddress/internal-transactions"
curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-transfers"
Transaction Analysis
curl "https://base.blockscout.com/api/v2/transactions/0xTxHash"
curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/logs"
curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/internal-transactions"
curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/token-transfers"
curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/state-changes"
Event Log Queries
curl "https://base.blockscout.com/api?module=logs&action=getLogs\
&address=0xContractAddress\
&fromBlock=0\
&toBlock=latest\
&topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
Token Information
curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress"
curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/holders"
curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/transfers"
curl "https://base.blockscout.com/api/v2/tokens/0xNFTAddress/instances"
MCP Usage Patterns
Query Contract State
const contractInfo = await blockscoutMcp.getContract({
chain: 'base',
address: '0xContractAddress',
});
const decodedTx = await blockscoutMcp.decodeTransaction({
chain: 'base',
txHash: '0xTxHash',
abi: contractInfo.abi,
});
Monitor Contract Events
const logs = await blockscoutMcp.getLogs({
chain: 'base',
address: '0xContractAddress',
fromBlock: 'latest-1000',
toBlock: 'latest',
topic0: '0x...',
});
Investigate a Transaction
const tx = await blockscoutMcp.getTransaction({ chain: 'base', hash: '0x...' });
const logs = await blockscoutMcp.getTransactionLogs({ chain: 'base', hash: '0x...' });
const internal = await blockscoutMcp.getInternalTxs({ chain: 'base', hash: '0x...' });
const stateChanges = await blockscoutMcp.getStateChanges({ chain: 'base', hash: '0x...' });
Blockscout vs Etherscan API
| Feature | Blockscout | Etherscan |
|---|
| Open source | Yes | No |
| V2 API | REST, well-structured | Legacy format |
| Self-hostable | Yes | No |
| Multi-chain | Unified API | Separate domains |
| Rate limits | Generous | Restrictive |
| API key required | Usually no | Yes |
| State changes | Available | Limited |
Useful Blockscout Queries for Debugging
curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xAddr" | jq '.is_verified'
curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xProxy" | jq '.implementations'
curl -s "https://base.blockscout.com/api/v2/addresses/0xAddr/transactions?limit=10"
curl -s "https://base.blockscout.com/api/v2/search?q=MyToken"
curl -s "https://base.blockscout.com/api/v2/blocks/18000000"
Integration Checklist