Skip to main content

blockscout-mcp

Use when querying onchain data through Blockscout MCP. Covers contract source retrieval, transaction analysis, address balance queries, event log queries, and token information.

Aller à l'installation

Informations de source

Dépôt
ccashwell/evm-cortex
Dernière activité de la source
10 avril 2026 à 16:31
Langue détectée de SKILL.md
anglais
Étoiles
129
Forks
18

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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 ```bash # Get verified contract source via API curl "https://base.blockscout.com/api/v2/smart-contracts/0xContractAddress" # Response includes: # - source_code: full Solidity source # - abi: contract ABI # - compiler_version # - optimization_enabled # - constructor_args ``` Using cast: ```bash # Download source from Blockscout-indexed chain cast etherscan-source 0xContractAddress \ --chain base \ -d ./downloaded-source ``` ## Address Queries ```bash # Get address info (balance, tx count, token balances) curl "https://base.blockscout.com/api/v2/addresses/0xAddress" # Get token balances for an address curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-balances" # Get address transactions curl "https://base.blockscout.com/api/v2/addresses/0xAddress/transactions" # Get internal transactions curl "https://base.blockscout.com/api/v2/addresses/0xAddress/internal-transactions" # Get token transfers curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-transfers" ``` ## Transaction Analysis ```bash # Get transaction details curl "https://base.blockscout.com/api/v2/transactions/0xTxHash" # Get transaction logs (events) curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/logs" # Get internal transactions for a tx curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/internal-transactions" # Get token transfers in a transaction curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/token-transfers" # Get transaction state changes curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/state-changes" ``` ## Event Log Queries ```bash # Get logs by contract address curl "https://base.blockscout.com/api?module=logs&action=getLogs\ &address=0xContractAddress\ &fromBlock=0\ &toBlock=latest\ &topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" # topic0 = keccak256("Transfer(address,address,uint256)") ``` ## Token Information ```bash # Get token details (name, symbol, decimals, total supply) curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress" # Get token holders curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/holders" # Get token transfers curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/transfers" # Get token instances (for NFTs) curl "https://base.blockscout.com/api/v2/tokens/0xNFTAddress/instances" ``` ## MCP Usage Patterns ### Query Contract State ```typescript // Through MCP, query a contract's verified source and ABI const contractInfo = await blockscoutMcp.getContract({ chain: 'base', address: '0xContractAddress', }); // Use ABI to decode transaction data const decodedTx = await blockscoutMcp.decodeTransaction({ chain: 'base', txHash: '0xTxHash', abi: contractInfo.abi, }); ``` ### Monitor Contract Events ```typescript // Fetch recent events from a contract const logs = await blockscoutMcp.getLogs({ chain: 'base', address: '0xContractAddress', fromBlock: 'latest-1000', toBlock: 'latest', topic0: '0x...', // event signature hash }); ``` ### Investigate a Transaction ```typescript // Full transaction breakdown 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 ```bash # Check if contract is verified curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xAddr" | jq '.is_verified' # Get proxy implementation address curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xProxy" | jq '.implementations' # Get recent transactions for a contract curl -s "https://base.blockscout.com/api/v2/addresses/0xAddr/transactions?limit=10" # Search by text curl -s "https://base.blockscout.com/api/v2/search?q=MyToken" # Get block info curl -s "https://base.blockscout.com/api/v2/blocks/18000000" ``` ## Integration Checklist - [ ] Use correct Blockscout instance URL for target chain - [ ] Handle pagination for large result sets (`next_page_params`) - [ ] Cache contract ABI/source after first retrieval - [ ] Use V2 API endpoints where available (better structured) - [ ] Fall back to Etherscan API if Blockscout instance is unavailable - [ ] Check `is_verified` before trusting contract source - [ ] Use `state-changes` endpoint for understanding tx effects
Voir sur GitHub