io.github.calintzy/evmscope
编码与调试by calintzy
面向 AI agent 的 EVM 区块链情报工具包,覆盖 5 条链共 20 个工具,零配置即可使用。
什么是 io.github.calintzy/evmscope?
面向 AI agent 的 EVM 区块链情报工具包,覆盖 5 条链共 20 个工具,零配置即可使用。
README
evmscope
한국어 | 中文 | 日本語 | Español | Русский
EVM 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.
Why evmscope?
AI 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."
evmscope 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.
Who is it for?
| User | Use Case |
|---|---|
| AI agent developers | Connect as MCP server to give AI on-chain analysis capabilities |
| Crypto traders & researchers | Query tokens, wallets, and protocols directly from the terminal |
| DeFi users | Safety tools — honeypot detection, approval status checks, whale tracking |
Features
- 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
- 7 EVM chains — Ethereum, Polygon, Arbitrum, Base, Optimism, Avalanche, BSC
- 49 built-in tokens — ETH, USDC, USDT, WETH, LINK, UNI, AAVE, ARB, OP, PEPE, and more
- 30+ labeled addresses — Exchanges, DeFi protocols, bridges, whale wallets
- Zero config — No API keys required. Works out of the box with free public APIs
- Read-only — No transaction execution. Zero risk of fund loss
- Dual mode — CLI for direct terminal use, MCP server for AI agent integration
Quick Start
CLI
npx evmscope price ETH
npx evmscope gas
npx evmscope balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
npx evmscope portfolio 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
npx evmscope compare-gas
npx evmscope tvl Aave
npx evmscope swap ETH USDC 1.0
npx evmscope block latest
npx evmscope transfers 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
npx evmscope honeypot 0x...
Run npx evmscope --help to see all 22 commands. Add --json for raw JSON output.
MCP Server
Start as an MCP server (no arguments):
npx evmscope
Claude Code
claude mcp add evmscope -- npx -y evmscope
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"evmscope": {
"command": "npx",
"args": ["-y", "evmscope"]
}
}
}
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"evmscope": {
"command": "npx",
"args": ["-y", "evmscope"]
}
}
}
Tools
getTokenPrice
Get current token price, 24h change, market cap, and volume.
// Input
{ "token": "ETH", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"symbol": "ETH",
"name": "Ethereum",
"priceUsd": 1929.20,
"change24h": -2.34,
"marketCap": 232000000000,
"volume24h": 12500000000
}
}
getGasPrice
Get current gas prices in slow/normal/fast tiers with USD estimates.
// Input
{ "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"slow": { "maxFeePerGas": "18.5", "maxPriorityFeePerGas": "1.2", "estimatedCostUsd": 0.75 },
"normal": { "maxFeePerGas": "20.0", "maxPriorityFeePerGas": "1.5", "estimatedCostUsd": 0.81 },
"fast": { "maxFeePerGas": "22.5", "maxPriorityFeePerGas": "2.25", "estimatedCostUsd": 0.91 },
"baseFee": "17.3",
"lastBlock": 19234567
}
}
getBalance
Get native token + ERC-20 token balances with USD values.
// Input
{ "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"address": "0xd8dA...",
"nativeBalance": { "symbol": "ETH", "balanceFormatted": "1.234", "valueUsd": 2382.50 },
"tokenBalances": [
{ "symbol": "USDC", "balanceFormatted": "1.0", "valueUsd": 1.00 }
],
"totalValueUsd": 2383.50
}
}
getTokenInfo
Get ERC-20 token metadata (name, symbol, decimals, total supply).
// Input
{ "token": "USDC", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"totalSupply": "26000000000"
}
}
resolveENS
Resolve ENS names to addresses and vice versa (Ethereum mainnet only).
// Input
{ "nameOrAddress": "vitalik.eth" }
// Output
{
"success": true,
"data": {
"name": "vitalik.eth",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"avatar": "https://...",
"resolved": "name_to_address"
}
}
getTxStatus
Get transaction status, receipt, confirmations, and gas usage.
// Input
{ "txHash": "0xabc...def", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"hash": "0xabc...def",
"status": "success",
"blockNumber": 19234567,
"confirmations": 42,
"from": "0x1234...",
"to": "0x5678...",
"value": "1.5",
"gasUsed": "21000",
"effectiveGasPrice": "20.0",
"timestamp": 1741521600
}
}
decodeTx
Decode a transaction into structured JSON — function name, parameters, event logs.
// Input
{ "txHash": "0xabc...def", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"hash": "0xabc...def",
"from": "0x1234...",
"to": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
"value": "1.0",
"status": "success",
"function": {
"name": "swapExactETHForTokens",
"signature": "swapExactETHForTokens(uint256,address[],address,uint256)",
"args": { "amountOutMin": "1000000", "path": ["0xC02a...", "0xA0b8..."] }
},
"events": [
{ "name": "Transfer", "address": "0xA0b8...", "args": { "from": "0x...", "to": "0x...", "value": "1000000" } }
],
"gasUsed": "150000",
"gasPrice": "20.0"
}
}
getContractABI
Look up a verified contract's ABI (Etherscan → Sourcify fallback).
// Input
{ "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"address": "0xA0b8...",
"abi": [...],
"source": "etherscan",
"contractName": "FiatTokenV2_2",
"isContract": true,
"functionCount": 42,
"eventCount": 8
}
}
identifyAddress
Identify an address — exchange, DeFi protocol, whale wallet, or EOA.
// Input
{ "address": "0x28C6c06298d514Db089934071355E5743bf21d60", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"address": "0x28C6...",
"label": "Binance Hot Wallet",
"category": "exchange",
"protocol": null,
"isContract": false,
"tags": ["cex", "binance"]
}
}
compareGas
Compare gas fees across all 7 EVM chains at once, sorted by lowest cost.
// Input
{}
// Output
{
"success": true,
"data": {
"chains": [
{ "chain": "base", "baseFeeGwei": "0.01", "estimatedCostUsd": 0.0001 },
{ "chain": "arbitrum", "baseFeeGwei": "0.1", "estimatedCostUsd": 0.004 },
{ "chain": "optimism", "baseFeeGwei": "0.05", "estimatedCostUsd": 0.002 },
{ "chain": "polygon", "baseFeeGwei": "30.0", "estimatedCostUsd": 0.01 },
{ "chain": "ethereum", "baseFeeGwei": "20.0", "estimatedCostUsd": 0.81 }
],
"cheapest": "base",
"mostExpensive": "ethereum"
}
}
getApprovalStatus
Check ERC-20 token approval (allowance) status. Auto-checks major DeFi protocols with risk level assessment.
// Input
{ "owner": "0xd8dA...", "token": "USDC", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"owner": "0xd8dA...",
"token": "USDC",
"tokenAddress": "0xA0b8...",
"approvals": [
{ "protocol": "Uniswap V3 (router)", "spender": "0xE592...", "allowance": "unlimited", "isUnlimited": true }
],
"riskLevel": "moderate"
}
}
getProtocolTVL
Get DeFi protocol TVL (Total Value Locked) via DefiLlama — chain breakdown, 24h/7d changes.
// Input
{ "protocol": "Aave" }
// Output
{
"success": true,
"data": {
"protocol": "Aave",
"slug": "aave",
"totalTvlUsd": 12000000000,
"change24h": 1.5,
"change7d": -3.2,
"chainBreakdown": [
{ "chain": "Ethereum", "tvlUsd": 8000000000, "percentage": 66.67 },
{ "chain": "Polygon", "tvlUsd": 2000000000, "percentage": 16.67 }
]
}
}
getWhaleMovements
Track large token transfers (whale movements). Classifies exchange deposit/withdrawal direction.
// Input
{ "token": "USDC", "chain": "ethereum", "minValueUsd": 100000, "limit": 10 }
// Output
{
"success": true,
"data": {
"token": "USDC",
"tokenAddress": "0xA0b8...",
"movements": [
{ "txHash": "0xabc...", "from": "0x1234...", "to": "0x28C6...", "fromLabel": null, "toLabel": "Binance Hot Wallet", "value": "500000.00", "valueUsd": 500000, "direction": "exchange_deposit", "timestamp": 1710000000 }
],
"summary": { "totalMovements": 1, "totalValueUsd": 500000, "netExchangeFlow": 500000 }
}
}
getSwapQuote
Get DEX swap quotes via ParaSwap — optimal route, gas cost, auto ETH→WETH conversion.
// Input
{ "tokenIn": "ETH", "tokenOut": "USDC", "amountIn": "1.0", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"tokenIn": { "symbol": "ETH", "address": "0xEeee...", "amount": "1.000000" },
"tokenOut": { "symbol": "USDC", "address": "0xA0b8...", "amount": "1929.200000" },
"exchangeRate": 1929.2,
"priceImpact": null,
"source": "UniswapV3",
"estimatedGasUsd": "3.50"
}
}
getYieldRates
Get DeFi yield rates (APY) from DefiLlama. Filter by protocol, chain, minimum TVL.
// Input
{ "protocol": "aave-v3", "chain": "Ethereum", "minTvl": 1000000 }
// Output
{
"success": true,
"data": {
"pools": [
{ "project": "aave-v3", "symbol": "USDC", "chain": "Ethereum", "apy": 5.2, "tvlUsd": 500000000, "stablecoin": true }
],
"count": 10
}
}
getContractEvents
Get contract event logs with automatic ABI decoding.
// Input
{ "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "chain": "ethereum", "limit": 5 }
// Output
{
"success": true,
"data": {
"events": [
{ "name": "Transfer", "args": { "from": "0x...", "to": "0x...", "value": "1000000" }, "txHash": "0x...", "blockNumber": 19234567 }
],
"count": 5,
"fromBlock": 19233567,
"toBlock": 19234567
}
}
getTokenHolders
Get top token holders. Ethereum uses Ethplorer, other chains aggregate from Etherscan transfers.
// Input
{ "token": "USDC", "chain": "ethereum", "limit": 10 }
// Output
{
"success": true,
"data": {
"token": "0xA0b8...",
"holders": [
{ "address": "0x...", "balance": "1000000", "share": 15.5 }
],
"totalHolders": 12345
}
}
simulateTx
Simulate a transaction via eth_call + estimateGas. Returns gas estimate in USD and revert reason on failure.
// Input
{ "from": "0x1234...", "to": "0x5678...", "data": "0xa9059cbb...", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"success": true,
"gasEstimate": "65000",
"gasEstimateUsd": 2.50,
"returnData": "0x0000...0001",
"error": null
}
}
checkHoneypot
Detect honeypot (scam) tokens via Honeypot.is. Returns buy/sell tax, risk level, and flags.
// Input
{ "token": "0x...", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"isHoneypot": false,
"riskLevel": "safe",
"buyTax": 0,
"sellTax": 0,
"flags": [],
"tokenName": "USD Coin",
"tokenSymbol": "USDC"
}
}
getBridgeRoutes
Get cross-chain bridge routes via LI.FI. Compares fees, time, and output amount.
// Input
{ "fromChain": "ethereum", "toChain": "arbitrum", "token": "USDC", "amount": "100" }
// Output
{
"success": true,
"data": {
"routes": [
{ "bridge": "Stargate", "estimatedTime": 60, "feeUsd": 0.50, "gasCostUsd": 2.10, "amountOut": "99.50", "amountOutUsd": 99.50 }
],
"bestRoute": { "bridge": "Stargate", "..." : "..." }
}
}
getNFTInfo
Get ERC-721 NFT balance and token list for a wallet.
// Input
{ "address": "0xd8dA...", "contractAddress": "0x...", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"chain": "ethereum",
"contractAddress": "0x...",
"owner": "0xd8dA...",
"totalBalance": 3,
"nfts": [
{ "tokenId": "1234", "tokenURI": "ipfs://..." }
]
}
}
getNFTMetadata
Get metadata for a specific NFT token (name, image, attributes).
// Input
{ "contractAddress": "0x...", "tokenId": "1234", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"contractAddress": "0x...",
"tokenId": "1234",
"tokenURI": "ipfs://...",
"metadata": {
"name": "Cool NFT #1234",
"description": "A very cool NFT",
"image": "ipfs://...",
"attributes": [
{ "trait_type": "Background", "value": "Blue" }
]
}
}
}
getGovernanceProposals
Get governance proposals from Snapshot (active, closed, or all).
// Input
{ "protocol": "uniswap", "state": "active" }
// Output
{
"success": true,
"data": {
"space": "uniswapgovernance.eth",
"state": "active",
"proposals": [
{
"title": "Proposal Title",
"state": "active",
"author": "0x1234...",
"start": "2025-01-01",
"end": "2025-01-07",
"votes": 1500,
"quorum": 1000,
"choices": ["For", "Against"],
"scores": [75.5, 24.5]
}
]
}
}
getBlockInfo
Block details (timestamp, gas, transactions, validator) by number or latest.
// Input
{ "blockNumber": 19234567, "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"number": 19234567,
"timestamp": 1741521600,
"gasUsed": "12345678",
"gasLimit": "30000000",
"baseFeePerGas": "20.0",
"transactionCount": 150,
"miner": "0x1234..."
}
}
getTokenTransfers
Recent ERC-20 token transfer history for a wallet address.
// Input
{ "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chain": "ethereum", "limit": 5 }
// Output
{
"success": true,
"data": {
"transfers": [
{ "token": "USDC", "from": "0x1234...", "to": "0xd8dA...", "value": "1000.00", "direction": "in", "txHash": "0xabc...", "timestamp": 1741521600 }
],
"count": 5
}
}
getPortfolio
Complete wallet portfolio with native + ERC-20 balances and USD values.
// Input
{ "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chain": "ethereum" }
// Output
{
"success": true,
"data": {
"address": "0xd8dA...",
"native": { "symbol": "ETH", "balance": "1.234", "valueUsd": 2382.50 },
"tokens": [
{ "symbol": "USDC", "balance": "1000.00", "valueUsd": 1000.00, "percentage": 29.6 }
],
"totalValueUsd": 3382.50
}
}
Supported Chains
| Chain | Chain ID | Native Token |
|---|---|---|
| Ethereum | 1 | ETH |
| Polygon | 137 | POL |
| Arbitrum | 42161 | ETH |
| Base | 8453 | ETH |
| Optimism | 10 | ETH |
| Avalanche | 43114 | AVAX |
| BSC | 56 | BNB |
Environment Variables (Optional)
All environment variables are optional. evmscope works without any configuration.
| Variable | Purpose | Default |
|---|---|---|
EVMSCOPE_RPC_URL | Custom RPC endpoint (all chains) | Public RPC |
EVMSCOPE_RPC_URL_ETHEREUM | Ethereum-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_POLYGON | Polygon-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_ARBITRUM | Arbitrum-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_BASE | Base-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_OPTIMISM | Optimism-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_AVALANCHE | Avalanche-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_RPC_URL_BSC | BSC-specific RPC endpoint | Falls back to RPC_URL |
EVMSCOPE_COINGECKO_KEY | CoinGecko API key (higher rate limits) | Free tier |
EVMSCOPE_ETHERSCAN_KEY | Etherscan API key (higher rate limits) | Free tier |
EVMSCOPE_POLYGONSCAN_KEY | Polygonscan API key | Falls back to ETHERSCAN_KEY |
EVMSCOPE_ARBISCAN_KEY | Arbiscan API key | Falls back to ETHERSCAN_KEY |
EVMSCOPE_BASESCAN_KEY | Basescan API key | Falls back to ETHERSCAN_KEY |
EVMSCOPE_OPTIMISTIC_KEY | Optimistic Etherscan API key | Falls back to ETHERSCAN_KEY |
EVMSCOPE_SNOWTRACE_KEY | Snowtrace API key (Avalanche) | Falls back to ETHERSCAN_KEY |
EVMSCOPE_BSCSCAN_KEY | BscScan API key (BSC) | Falls back to ETHERSCAN_KEY |
EVMSCOPE_ETHPLORER_KEY | Ethplorer API key (token holders) | freekey |
EVMSCOPE_LIFI_KEY | LI.FI API key (bridge routes) | Public access |
EVMSCOPE_DEBUG | Enable debug logging (set to 1) | Disabled |
Built-in Databases
| Database | Contents |
|---|---|
tokens.json | 49 major tokens with multi-chain addresses and CoinGecko IDs |
signatures.json | 36 common function signatures (ERC-20, DEX, lending, NFT) |
labels.json | 30 labeled addresses (exchanges, bridges, whale wallets) |
protocols.json | 10 DeFi protocols with multi-chain contract addresses |
Roadmap
- v0.1 (done) — 5 tools: price, transaction fees, balance, token info, ENS
- v0.5 (done) — +4 tools: decodeTx, getTxStatus, getContractABI, identifyAddress
- v1.0 (done) — +5 tools: compareGas, getApprovalStatus, getProtocolTVL, getWhaleMovements, getSwapQuote
- v1.5 (done) — +6 tools: simulateTx, getYieldRates, getTokenHolders, getContractEvents, checkHoneypot, getBridgeRoutes
- v1.5.1 (done) — Code quality + security refactoring: 7 new shared modules, per-chain RPC URLs, cache size limits, unified address validation, CLI modularization
- v1.6.0 (done) — +3 tools: getNFTInfo, getNFTMetadata, getGovernanceProposals. +2 chains: Avalanche, BSC
- v1.7.0 (done) — +3 tools: getBlockInfo, getTokenTransfers, getPortfolio. Security hardening (v1.6.1)
License
常见问题
io.github.calintzy/evmscope 是什么?
面向 AI agent 的 EVM 区块链情报工具包,覆盖 5 条链共 20 个工具,零配置即可使用。
相关 Skills
网页构建器
by anthropics
面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。
✎ 在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。
前端设计
by anthropics
面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。
✎ 想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。
网页应用测试
by anthropics
用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。
✎ 借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。
相关 MCP Server
GitHub
编辑精选by GitHub
GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。
✎ 这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。
Context7 文档查询
编辑精选by Context7
Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。
✎ 它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。
by tldraw
tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。
✎ 这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。