Skip to main content
Glama
Baneado98

chain-data

by Baneado98
README.md
# chain-data ๐Ÿ”—

**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).

---

## Why

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.

## Tools (MCP)

| 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 |

## Use as an MCP server (free)

```json
{
  "mcpServers": {
    "chain-data": { "command": "npx", "args": ["-y", "chain-data-mcp"] }
  }
}
```

Or over HTTP: `POST https://chain-data.vercel.app/mcp`.

## Free HTTP API

```
GET /portfolio?wallet=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
GET /token?chain=base&address=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
GET /gas
GET /price?chain=ethereum&address=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
```

Rate-limited to 30 requests/hour/IP.

## Pay-per-call (x402)

The `/pro/*` routes are gated by [x402](https://x402.org). 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...
```

## Supported chains

Ethereum ยท Base ยท Polygon ยท Arbitrum One ยท OP Mainnet โ€” all via public, key-free RPCs with automatic failover.

## Data sources

- **Balances / token info / gas**: public JSON-RPC endpoints (`mainnet.base.org`, `eth.llamarpc.com`, `polygon-rpc.com`, โ€ฆ).
- **Prices**: [DefiLlama](https://defillama.com) coins API (free) / CoinGecko ids.

No credentials are stored or required. The server holds **no private key** โ€” `payTo` is a public receiving address only.

## Local dev

```bash
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 server
```

## License

MIT

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct facet of chain data: gas prices, token metadata, token pricing, and wallet portfolio. Overlap between token_info and token_price is minimal since token_info provides comprehensive on-chain facts while token_price is a focused price lookup.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern using noun phrases (gas_prices, token_info, token_price, wallet_portfolio). No mixing of styles or inconsistent verbs.

Tool Count5/5

With 4 tools, the server is well-scoped for its purpose of providing on-chain data. Each tool serves a clear need without unnecessary bloat or redundancy.

Completeness4/5

The tools cover gas, token details, price, and portfolio. Missing features like block info or transaction history are acceptable given the focused scope, but a chain-data server could optionally include additional data points.

Maintenance

ActivityMaintained
ResponsivenessSyncing