Chain Data — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Chain Data (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Live multi-chain on-chain data, aggregated in ONE call — built for AI agents.
Give it a wallet and get its whole portfolio across Ethereum, Base, Polygon, Arbitrum and Optimism — native balances + top ERC-20 holdings, each priced in USD — in a single response. Plus token/contract facts, live gas and prices. All read straight from public RPCs and DefiLlama; no API key, no node.
Available as an MCP server (free) and a pay-per-call x402 API ($0.10 USDC on Base, no sign-up).
An agent that wants a wallet's multi-chain net worth would otherwise have to: fan out N JSON-RPC calls to N chains → ABI-encode balanceOf/decimals/symbol → batch them → join against a price feed → repeat per chain. chain-data does all of that server-side and returns one fresh JSON object per call. That convenience on live data is the point — agents pay for the aggregation, not for a static answer they could cache.
| Tool | What it does |
|---|---|
wallet_portfolio | Native + ERC-20 balances with live USD value, across 5 chains, in one call |
token_info | symbol, name, decimals, total supply, is-contract, EIP-1967 proxy + implementation, price |
gas_prices | base fee / gas price / priority fee / latest block, per chain or all at once |
token_price | live USD price by chain+address, CoinGecko id, or symbol |
{
"mcpServers": {
"chain-data": { "command": "npx", "args": ["-y", "chain-data-mcp"] }
}
}Or over HTTP: POST https://chain-data-mcp.vercel.app/mcp.
GET /portfolio?wallet=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
GET /token?chain=base&address=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
GET /gas
GET /price?chain=ethereum&address=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2Rate-limited to 30 requests/hour/IP.
The /pro/* routes are gated by x402. Your agent pays $0.10 USDC per call automatically — no sign-up, no API key. Settles on-chain (Base) to the operator wallet. No rate limit.
GET /pro/portfolio?wallet=0x...
GET /pro/token?chain=base&address=0x...
GET /pro/gas
GET /pro/price?chain=ethereum&address=0x...Ethereum · Base · Polygon · Arbitrum One · OP Mainnet — all via public, key-free RPCs with automatic failover.
mainnet.base.org, eth.llamarpc.com, polygon-rpc.com, …).No credentials are stored or required. The server holds no private key — payTo is a public receiving address only.
npm install
npm run build
npm run test:engine # live smoke test against real RPCs
npm run dev:http # local HTTP server on :8080 (payments off unless X402_* set)
npm run dev:mcp # local stdio MCP serverMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.