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 holding?" | blockrun_rpc (labels: no tool since Surf was retired 2026-09-06) |
"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 insideresult.error— the call is charged (the node did the work).