{
  "markdown": "# evmscope\n\n[한국어](README-ko.md) | [中文](README-zh.md) | [日本語](README-ja.md) | [Español](README-es.md) | [Русский](README-ru.md)\n\nEVM blockchain intelligence toolkit. 26 tools across 7 chains — use as a CLI or MCP server. Token prices, gas comparison, swap quotes, yield rates, honeypot detection, bridge routes, tx simulation, NFT lookup, governance proposals, portfolio tracking, and more.\n\n## Why evmscope?\n\nAI agents like Claude and GPT cannot access real-time blockchain data. Ask \"What's the ETH price?\" or \"Show me this wallet's balance\" and you'll get \"I can't access real-time data.\"\n\nevmscope solves this by giving AI agents direct access to 26 on-chain tools via the MCP protocol — token prices, wallet balances, DeFi yields, whale tracking, honeypot detection, and more. No API keys, no setup, just connect and go.\n\n## Who is it for?\n\n| User | Use Case |\n|------|----------|\n| **AI agent developers** | Connect as MCP server to give AI on-chain analysis capabilities |\n| **Crypto traders & researchers** | Query tokens, wallets, and protocols directly from the terminal |\n| **DeFi users** | Safety tools — honeypot detection, approval status checks, whale tracking |\n\n## Features\n\n- **26 tools** — Price, gas compare, swap quote, yield rates, honeypot detection, bridge routes, tx simulation, event logs, token holders, approval status, TVL, whale tracking, balance, token info, ENS, tx status, tx decode, ABI lookup, address ID, NFT info, NFT metadata, governance proposals, block info, token transfers, portfolio\n- **7 EVM chains** — Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, BSC\n- **49 built-in tokens** — ETH, USDC, USDT, WETH, LINK, UNI, AAVE, ARB, OP, PEPE, and more\n- **30+ labeled addresses** — Exchanges, DeFi protocols, bridges, whale wallets\n- **Zero config** — No API keys required. Works out of the box with free public APIs\n- **Read-only** — No transaction execution. Zero risk of fund loss\n- **Dual mode** — CLI for direct terminal use, MCP server for AI agent integration\n\n## Quick Start\n\n### CLI\n\n```bash\nnpx evmscope price ETH\nnpx evmscope gas\nnpx evmscope balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\nnpx evmscope portfolio 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\nnpx evmscope compare-gas\nnpx evmscope tvl Aave\nnpx evmscope swap ETH USDC 1.0\nnpx evmscope block latest\nnpx evmscope transfers 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\nnpx evmscope honeypot 0x...\n```\n\nRun `npx evmscope --help` to see all 22 commands. Add `--json` for raw JSON output.\n\n### MCP Server\n\nStart as an MCP server (no arguments):\n\n```bash\nnpx evmscope\n```\n\n### Claude Code\n\n```bash\nclaude mcp add evmscope -- npx -y evmscope\n```\n\n### Claude Desktop\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"evmscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"evmscope\"]\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"evmscope\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"evmscope\"]\n    }\n  }\n}\n```\n\n## Tools\n\n### getTokenPrice\n\nGet current token price, 24h change, market cap, and volume.\n\n```json\n// Input\n{ \"token\": \"ETH\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"symbol\": \"ETH\",\n    \"name\": \"Ethereum\",\n    \"priceUsd\": 1929.20,\n    \"change24h\": -2.34,\n    \"marketCap\": 232000000000,\n    \"volume24h\": 12500000000\n  }\n}\n```\n\n### getGasPrice\n\nGet current gas prices in slow/normal/fast tiers with USD estimates.\n\n```json\n// Input\n{ \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"slow\": { \"maxFeePerGas\": \"18.5\", \"maxPriorityFeePerGas\": \"1.2\", \"estimatedCostUsd\": 0.75 },\n    \"normal\": { \"maxFeePerGas\": \"20.0\", \"maxPriorityFeePerGas\": \"1.5\", \"estimatedCostUsd\": 0.81 },\n    \"fast\": { \"maxFeePerGas\": \"22.5\", \"maxPriorityFeePerGas\": \"2.25\", \"estimatedCostUsd\": 0.91 },\n    \"baseFee\": \"17.3\",\n    \"lastBlock\": 19234567\n  }\n}\n```\n\n### getBalance\n\nGet native token + ERC-20 token balances with USD values.\n\n```json\n// Input\n{ \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"address\": \"0xd8dA...\",\n    \"nativeBalance\": { \"symbol\": \"ETH\", \"balanceFormatted\": \"1.234\", \"valueUsd\": 2382.50 },\n    \"tokenBalances\": [\n      { \"symbol\": \"USDC\", \"balanceFormatted\": \"1.0\", \"valueUsd\": 1.00 }\n    ],\n    \"totalValueUsd\": 2383.50\n  }\n}\n```\n\n### getTokenInfo\n\nGet ERC-20 token metadata (name, symbol, decimals, total supply).\n\n```json\n// Input\n{ \"token\": \"USDC\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"address\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n    \"name\": \"USD Coin\",\n    \"symbol\": \"USDC\",\n    \"decimals\": 6,\n    \"totalSupply\": \"26000000000\"\n  }\n}\n```\n\n### resolveENS\n\nResolve ENS names to addresses and vice versa (Ethereum mainnet only).\n\n```json\n// Input\n{ \"nameOrAddress\": \"vitalik.eth\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"name\": \"vitalik.eth\",\n    \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n    \"avatar\": \"https://...\",\n    \"resolved\": \"name_to_address\"\n  }\n}\n```\n\n### getTxStatus\n\nGet transaction status, receipt, confirmations, and gas usage.\n\n```json\n// Input\n{ \"txHash\": \"0xabc...def\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"hash\": \"0xabc...def\",\n    \"status\": \"success\",\n    \"blockNumber\": 19234567,\n    \"confirmations\": 42,\n    \"from\": \"0x1234...\",\n    \"to\": \"0x5678...\",\n    \"value\": \"1.5\",\n    \"gasUsed\": \"21000\",\n    \"effectiveGasPrice\": \"20.0\",\n    \"timestamp\": 1741521600\n  }\n}\n```\n\n### decodeTx\n\nDecode a transaction into structured JSON — function name, parameters, event logs.\n\n```json\n// Input\n{ \"txHash\": \"0xabc...def\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"hash\": \"0xabc...def\",\n    \"from\": \"0x1234...\",\n    \"to\": \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n    \"value\": \"1.0\",\n    \"status\": \"success\",\n    \"function\": {\n      \"name\": \"swapExactETHForTokens\",\n      \"signature\": \"swapExactETHForTokens(uint256,address[],address,uint256)\",\n      \"args\": { \"amountOutMin\": \"1000000\", \"path\": [\"0xC02a...\", \"0xA0b8...\"] }\n    },\n    \"events\": [\n      { \"name\": \"Transfer\", \"address\": \"0xA0b8...\", \"args\": { \"from\": \"0x...\", \"to\": \"0x...\", \"value\": \"1000000\" } }\n    ],\n    \"gasUsed\": \"150000\",\n    \"gasPrice\": \"20.0\"\n  }\n}\n```\n\n### getContractABI\n\nLook up a verified contract's ABI (Etherscan → Sourcify fallback).\n\n```json\n// Input\n{ \"address\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"address\": \"0xA0b8...\",\n    \"abi\": [...],\n    \"source\": \"etherscan\",\n    \"contractName\": \"FiatTokenV2_2\",\n    \"isContract\": true,\n    \"functionCount\": 42,\n    \"eventCount\": 8\n  }\n}\n```\n\n### identifyAddress\n\nIdentify an address — exchange, DeFi protocol, whale wallet, or EOA.\n\n```json\n// Input\n{ \"address\": \"0x28C6c06298d514Db089934071355E5743bf21d60\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"address\": \"0x28C6...\",\n    \"label\": \"Binance Hot Wallet\",\n    \"category\": \"exchange\",\n    \"protocol\": null,\n    \"isContract\": false,\n    \"tags\": [\"cex\", \"binance\"]\n  }\n}\n```\n\n### compareGas\n\nCompare gas fees across all 7 EVM chains at once, sorted by lowest cost.\n\n```json\n// Input\n{}\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"chains\": [\n      { \"chain\": \"base\", \"baseFeeGwei\": \"0.01\", \"estimatedCostUsd\": 0.0001 },\n      { \"chain\": \"arbitrum\", \"baseFeeGwei\": \"0.1\", \"estimatedCostUsd\": 0.004 },\n      { \"chain\": \"optimism\", \"baseFeeGwei\": \"0.05\", \"estimatedCostUsd\": 0.002 },\n      { \"chain\": \"polygon\", \"baseFeeGwei\": \"30.0\", \"estimatedCostUsd\": 0.01 },\n      { \"chain\": \"ethereum\", \"baseFeeGwei\": \"20.0\", \"estimatedCostUsd\": 0.81 }\n    ],\n    \"cheapest\": \"base\",\n    \"mostExpensive\": \"ethereum\"\n  }\n}\n```\n\n### getApprovalStatus\n\nCheck ERC-20 token approval (allowance) status. Auto-checks major DeFi protocols with risk level assessment.\n\n```json\n// Input\n{ \"owner\": \"0xd8dA...\", \"token\": \"USDC\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"owner\": \"0xd8dA...\",\n    \"token\": \"USDC\",\n    \"tokenAddress\": \"0xA0b8...\",\n    \"approvals\": [\n      { \"protocol\": \"Uniswap V3 (router)\", \"spender\": \"0xE592...\", \"allowance\": \"unlimited\", \"isUnlimited\": true }\n    ],\n    \"riskLevel\": \"moderate\"\n  }\n}\n```\n\n### getProtocolTVL\n\nGet DeFi protocol TVL (Total Value Locked) via DefiLlama — chain breakdown, 24h/7d changes.\n\n```json\n// Input\n{ \"protocol\": \"Aave\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"protocol\": \"Aave\",\n    \"slug\": \"aave\",\n    \"totalTvlUsd\": 12000000000,\n    \"change24h\": 1.5,\n    \"change7d\": -3.2,\n    \"chainBreakdown\": [\n      { \"chain\": \"Ethereum\", \"tvlUsd\": 8000000000, \"percentage\": 66.67 },\n      { \"chain\": \"Polygon\", \"tvlUsd\": 2000000000, \"percentage\": 16.67 }\n    ]\n  }\n}\n```\n\n### getWhaleMovements\n\nTrack large token transfers (whale movements). Classifies exchange deposit/withdrawal direction.\n\n```json\n// Input\n{ \"token\": \"USDC\", \"chain\": \"ethereum\", \"minValueUsd\": 100000, \"limit\": 10 }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"token\": \"USDC\",\n    \"tokenAddress\": \"0xA0b8...\",\n    \"movements\": [\n      { \"txHash\": \"0xabc...\", \"from\": \"0x1234...\", \"to\": \"0x28C6...\", \"fromLabel\": null, \"toLabel\": \"Binance Hot Wallet\", \"value\": \"500000.00\", \"valueUsd\": 500000, \"direction\": \"exchange_deposit\", \"timestamp\": 1710000000 }\n    ],\n    \"summary\": { \"totalMovements\": 1, \"totalValueUsd\": 500000, \"netExchangeFlow\": 500000 }\n  }\n}\n```\n\n### getSwapQuote\n\nGet DEX swap quotes via ParaSwap — optimal route, gas cost, auto ETH→WETH conversion.\n\n```json\n// Input\n{ \"tokenIn\": \"ETH\", \"tokenOut\": \"USDC\", \"amountIn\": \"1.0\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"tokenIn\": { \"symbol\": \"ETH\", \"address\": \"0xEeee...\", \"amount\": \"1.000000\" },\n    \"tokenOut\": { \"symbol\": \"USDC\", \"address\": \"0xA0b8...\", \"amount\": \"1929.200000\" },\n    \"exchangeRate\": 1929.2,\n    \"priceImpact\": null,\n    \"source\": \"UniswapV3\",\n    \"estimatedGasUsd\": \"3.50\"\n  }\n}\n```\n\n### getYieldRates\n\nGet DeFi yield rates (APY) from DefiLlama. Filter by protocol, chain, minimum TVL.\n\n```json\n// Input\n{ \"protocol\": \"aave-v3\", \"chain\": \"Ethereum\", \"minTvl\": 1000000 }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"pools\": [\n      { \"project\": \"aave-v3\", \"symbol\": \"USDC\", \"chain\": \"Ethereum\", \"apy\": 5.2, \"tvlUsd\": 500000000, \"stablecoin\": true }\n    ],\n    \"count\": 10\n  }\n}\n```\n\n### getContractEvents\n\nGet contract event logs with automatic ABI decoding.\n\n```json\n// Input\n{ \"address\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\", \"chain\": \"ethereum\", \"limit\": 5 }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"events\": [\n      { \"name\": \"Transfer\", \"args\": { \"from\": \"0x...\", \"to\": \"0x...\", \"value\": \"1000000\" }, \"txHash\": \"0x...\", \"blockNumber\": 19234567 }\n    ],\n    \"count\": 5,\n    \"fromBlock\": 19233567,\n    \"toBlock\": 19234567\n  }\n}\n```\n\n### getTokenHolders\n\nGet top token holders. Ethereum uses Ethplorer, other chains aggregate from Etherscan transfers.\n\n```json\n// Input\n{ \"token\": \"USDC\", \"chain\": \"ethereum\", \"limit\": 10 }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"token\": \"0xA0b8...\",\n    \"holders\": [\n      { \"address\": \"0x...\", \"balance\": \"1000000\", \"share\": 15.5 }\n    ],\n    \"totalHolders\": 12345\n  }\n}\n```\n\n### simulateTx\n\nSimulate a transaction via eth_call + estimateGas. Returns gas estimate in USD and revert reason on failure.\n\n```json\n// Input\n{ \"from\": \"0x1234...\", \"to\": \"0x5678...\", \"data\": \"0xa9059cbb...\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"success\": true,\n    \"gasEstimate\": \"65000\",\n    \"gasEstimateUsd\": 2.50,\n    \"returnData\": \"0x0000...0001\",\n    \"error\": null\n  }\n}\n```\n\n### checkHoneypot\n\nDetect honeypot (scam) tokens via Honeypot.is. Returns buy/sell tax, risk level, and flags.\n\n```json\n// Input\n{ \"token\": \"0x...\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"isHoneypot\": false,\n    \"riskLevel\": \"safe\",\n    \"buyTax\": 0,\n    \"sellTax\": 0,\n    \"flags\": [],\n    \"tokenName\": \"USD Coin\",\n    \"tokenSymbol\": \"USDC\"\n  }\n}\n```\n\n### getBridgeRoutes\n\nGet cross-chain bridge routes via LI.FI. Compares fees, time, and output amount.\n\n```json\n// Input\n{ \"fromChain\": \"ethereum\", \"toChain\": \"arbitrum\", \"token\": \"USDC\", \"amount\": \"100\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"routes\": [\n      { \"bridge\": \"Stargate\", \"estimatedTime\": 60, \"feeUsd\": 0.50, \"gasCostUsd\": 2.10, \"amountOut\": \"99.50\", \"amountOutUsd\": 99.50 }\n    ],\n    \"bestRoute\": { \"bridge\": \"Stargate\", \"...\" : \"...\" }\n  }\n}\n```\n\n### getNFTInfo\n\nGet ERC-721 NFT balance and token list for a wallet.\n\n```json\n// Input\n{ \"address\": \"0xd8dA...\", \"contractAddress\": \"0x...\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"chain\": \"ethereum\",\n    \"contractAddress\": \"0x...\",\n    \"owner\": \"0xd8dA...\",\n    \"totalBalance\": 3,\n    \"nfts\": [\n      { \"tokenId\": \"1234\", \"tokenURI\": \"ipfs://...\" }\n    ]\n  }\n}\n```\n\n### getNFTMetadata\n\nGet metadata for a specific NFT token (name, image, attributes).\n\n```json\n// Input\n{ \"contractAddress\": \"0x...\", \"tokenId\": \"1234\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"contractAddress\": \"0x...\",\n    \"tokenId\": \"1234\",\n    \"tokenURI\": \"ipfs://...\",\n    \"metadata\": {\n      \"name\": \"Cool NFT #1234\",\n      \"description\": \"A very cool NFT\",\n      \"image\": \"ipfs://...\",\n      \"attributes\": [\n        { \"trait_type\": \"Background\", \"value\": \"Blue\" }\n      ]\n    }\n  }\n}\n```\n\n### getGovernanceProposals\n\nGet governance proposals from Snapshot (active, closed, or all).\n\n```json\n// Input\n{ \"protocol\": \"uniswap\", \"state\": \"active\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"space\": \"uniswapgovernance.eth\",\n    \"state\": \"active\",\n    \"proposals\": [\n      {\n        \"title\": \"Proposal Title\",\n        \"state\": \"active\",\n        \"author\": \"0x1234...\",\n        \"start\": \"2025-01-01\",\n        \"end\": \"2025-01-07\",\n        \"votes\": 1500,\n        \"quorum\": 1000,\n        \"choices\": [\"For\", \"Against\"],\n        \"scores\": [75.5, 24.5]\n      }\n    ]\n  }\n}\n```\n\n### getBlockInfo\n\nBlock details (timestamp, gas, transactions, validator) by number or latest.\n\n```json\n// Input\n{ \"blockNumber\": 19234567, \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"number\": 19234567,\n    \"timestamp\": 1741521600,\n    \"gasUsed\": \"12345678\",\n    \"gasLimit\": \"30000000\",\n    \"baseFeePerGas\": \"20.0\",\n    \"transactionCount\": 150,\n    \"miner\": \"0x1234...\"\n  }\n}\n```\n\n### getTokenTransfers\n\nRecent ERC-20 token transfer history for a wallet address.\n\n```json\n// Input\n{ \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\", \"chain\": \"ethereum\", \"limit\": 5 }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"transfers\": [\n      { \"token\": \"USDC\", \"from\": \"0x1234...\", \"to\": \"0xd8dA...\", \"value\": \"1000.00\", \"direction\": \"in\", \"txHash\": \"0xabc...\", \"timestamp\": 1741521600 }\n    ],\n    \"count\": 5\n  }\n}\n```\n\n### getPortfolio\n\nComplete wallet portfolio with native + ERC-20 balances and USD values.\n\n```json\n// Input\n{ \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\", \"chain\": \"ethereum\" }\n\n// Output\n{\n  \"success\": true,\n  \"data\": {\n    \"address\": \"0xd8dA...\",\n    \"native\": { \"symbol\": \"ETH\", \"balance\": \"1.234\", \"valueUsd\": 2382.50 },\n    \"tokens\": [\n      { \"symbol\": \"USDC\", \"balance\": \"1000.00\", \"valueUsd\": 1000.00, \"percentage\": 29.6 }\n    ],\n    \"totalValueUsd\": 3382.50\n  }\n}\n```\n\n## Supported Chains\n\n| Chain | Chain ID | Native Token |\n|-------|----------|-------------|\n| Ethereum | 1 | ETH |\n| Polygon | 137 | POL |\n| Arbitrum | 42161 | ETH |\n| Base | 8453 | ETH |\n| Optimism | 10 | ETH |\n| Avalanche | 43114 | AVAX |\n| BSC | 56 | BNB |\n\n## Environment Variables (Optional)\n\nAll environment variables are optional. evmscope works without any configuration.\n\n| Variable | Purpose | Default |\n|----------|---------|---------|\n| `EVMSCOPE_RPC_URL` | Custom RPC endpoint (all chains) | Public RPC |\n| `EVMSCOPE_RPC_URL_ETHEREUM` | Ethereum-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_POLYGON` | Polygon-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_ARBITRUM` | Arbitrum-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_BASE` | Base-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_OPTIMISM` | Optimism-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_AVALANCHE` | Avalanche-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_RPC_URL_BSC` | BSC-specific RPC endpoint | Falls back to RPC_URL |\n| `EVMSCOPE_COINGECKO_KEY` | CoinGecko API key (higher rate limits) | Free tier |\n| `EVMSCOPE_ETHERSCAN_KEY` | Etherscan API key (higher rate limits) | Free tier |\n| `EVMSCOPE_POLYGONSCAN_KEY` | Polygonscan API key | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_ARBISCAN_KEY` | Arbiscan API key | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_BASESCAN_KEY` | Basescan API key | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_OPTIMISTIC_KEY` | Optimistic Etherscan API key | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_SNOWTRACE_KEY` | Snowtrace API key (Avalanche) | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_BSCSCAN_KEY` | BscScan API key (BSC) | Falls back to ETHERSCAN_KEY |\n| `EVMSCOPE_ETHPLORER_KEY` | Ethplorer API key (token holders) | `freekey` |\n| `EVMSCOPE_LIFI_KEY` | LI.FI API key (bridge routes) | Public access |\n| `EVMSCOPE_DEBUG` | Enable debug logging (set to `1`) | Disabled |\n\n## Built-in Databases\n\n| Database | Contents |\n|----------|----------|\n| `tokens.json` | 49 major tokens with multi-chain addresses and CoinGecko IDs |\n| `signatures.json` | 36 common function signatures (ERC-20, DEX, lending, NFT) |\n| `labels.json` | 30 labeled addresses (exchanges, bridges, whale wallets) |\n| `protocols.json` | 10 DeFi protocols with multi-chain contract addresses |\n\n## Roadmap\n\n- **v0.1** (done) — 5 tools: price, transaction fees, balance, token info, ENS\n- **v0.5** (done) — +4 tools: decodeTx, getTxStatus, getContractABI, identifyAddress\n- **v1.0** (done) — +5 tools: compareGas, getApprovalStatus, getProtocolTVL, getWhaleMovements, getSwapQuote\n- **v1.5** (done) — +6 tools: simulateTx, getYieldRates, getTokenHolders, getContractEvents, checkHoneypot, getBridgeRoutes\n- **v1.5.1** (done) — Code quality + security refactoring: 7 new shared modules, per-chain RPC URLs, cache size limits, unified address validation, CLI modularization\n- **v1.6.0** (done) — +3 tools: getNFTInfo, getNFTMetadata, getGovernanceProposals. +2 chains: Avalanche, BSC\n- **v1.7.0** (done) — +3 tools: getBlockInfo, getTokenTransfers, getPortfolio. Security hardening (v1.6.1)\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 18593,
  "sha": "4f32a288d8324c69512d8b2dac21f635fef9fd11ac58509ea076ac82b2c5cea2",
  "repo_slug": "calintzy/evmscope",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_calintzy_evmscope_0ad4d399/readme"
}