| name | rpc |
| description | Use when the user needs raw blockchain JSON-RPC access — contract reads (eth_call), native balances, blocks, transactions, logs, gas estimates, or any chain-native RPC method across 40 chains. One endpoint per chain via BlockRun's Tatum-backed gateway, $0.0030 per call, no node, no API key. Prefer blockrun_price / blockrun_dex / blockrun_surf when they already cover the question. |
| triggers | ["rpc","json-rpc","eth_call","contract read","raw chain","node access","blockchain rpc","getBalance","block number","transaction receipt","event logs","tatum"] |
Multi-chain RPC — every supported chain, one tool
blockrun_rpc POSTs a standard JSON-RPC 2.0 body to /v1/rpc/{network}. Flat $0.0030 per call ($0.002 base + the $0.001 transaction fee). A JSON-RPC batch array charges per element but pays the flat fee only once — $0.002 × n + $0.001, so a batch of 3 costs $0.0070 where three separate calls cost $0.0090. Batch whenever you can. Settlement in USDC via x402. Responses are cached briefly server-side for identical read calls (X-Cache: HIT is free of upstream latency but still billed).
When to use which tool
| Question | Tool |
|---|
| "What's ETH trading at?" | blockrun_price (free) |
| "PEPE/WETH pool liquidity?" | blockrun_dex (free) |
| "What's this wallet labeled as / holding?" | blockrun_surf |
"Call balanceOf(0x...) on this ERC-20" | blockrun_rpc |
| "Latest block / tx receipt / event logs / gas price" | blockrun_rpc |
| "Solana account info / slot / signatures" | blockrun_rpc |
Networks
EVM (use eth_* methods):
| Key | Chain | | Key | Chain |
|---|
ethereum | Ethereum | | zksync | zkSync Era |
base | Base | | berachain | Berachain |
arbitrum | Arbitrum One | | unichain | Unichain |
arbitrum-nova | Arbitrum Nova | | monad | Monad |
optimism | Optimism | | chiliz | Chiliz |
polygon | Polygon | | moonbeam | Moonbeam |
bsc | BNB Smart Chain | | aurora | Aurora |
avalanche | Avalanche C-Chain | | flare | Flare |
fantom | Fantom | | oasis | Oasis Sapphire |
cronos | Cronos | | kaia | Kaia (Klaytn) |
celo | Celo | | sonic | Sonic |
gnosis | Gnosis | | xdc | XDC Network |
abstract | Abstract | | hyperevm | HyperEVM |
plume | Plume | | ronin | Ronin |
rootstock | Rootstock (RSK) | | | |
Non-EVM (chain-native methods):
| Key | Chain | Method family |
|---|
solana | Solana | getSlot, getBalance, getAccountInfo, getSignaturesForAddress |
bitcoin | Bitcoin | getblockchaininfo, getblockcount, getrawtransaction |
litecoin / dogecoin / bitcoin-cash / zcash | UTXO chains | Bitcoin-style RPC |
near | NEAR | status, query |
sui | Sui | sui_getLatestCheckpointSequenceNumber, suix_getBalance |
ripple | XRP Ledger | account_info, ledger |
polkadot / kusama | Substrate | chain_getHeader, state_getStorage |
Unknown-but-wellformed slugs pass through to the Tatum gateway untouched — newly added chains work without an MCP update. A bad slug returns HTTP 400 with the supported list (no charge).
Recipes
ERC-20 balance (eth_call):
blockrun_rpc({
network: "base",
method: "eth_call",
params: [{
to: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
data: "0x70a08231000000000000000000000000<ADDRESS_NO_0x_PADDED_TO_32B>"
}, "latest"]
})
Native balance: method: "eth_getBalance", params: ["0x...", "latest"]
Tx receipt: method: "eth_getTransactionReceipt", params: ["0x<txhash>"]
Event logs: method: "eth_getLogs", params: [{ fromBlock, toBlock, address, topics }] — keep ranges small; huge ranges are rejected upstream (no charge).
Gas: method: "eth_gasPrice" / eth_estimateGas
Solana token account: network: "solana", method: "getTokenAccountsByOwner", params: ["<owner>", {"mint": "<mint>"}, {"encoding": "jsonParsed"}]
Batch (charged per element, flat fee paid once — 3 calls = $0.0070, vs $0.0090 sent separately):
blockrun_rpc({ network: "ethereum", body: [
{ jsonrpc: "2.0", id: 1, method: "eth_blockNumber" },
{ jsonrpc: "2.0", id: 2, method: "eth_gasPrice" },
{ jsonrpc: "2.0", id: 3, method: "eth_chainId" }
]})
Failure semantics
- Upstream timeout / 5xx → no charge, retry safe.
- Malformed body / bad network → HTTP 400, no charge.
- JSON-RPC-level errors (e.g. revert on
eth_call) come back inside result.error — the call is charged (the node did the work).