One round trip, every time
Independent contracts, different protocols. Every read in an expression is batched into a single Multicall3 call per chain.
1 request4 reads1 round trip
One HTTP call returns typed, decoded contract state from any EVM chain. No ABI files, no node, no SDK. Available over REST, MCP, and n8n.
{
"pair": feed.description(),
"price": string(formatUnits(feed.latestAnswer() / priceScale, 2)),
"supply": string(formatUnits(weth.totalSupply() / weiPerEth, 0))
}Free to start. No monthly cap, no credit card
Read any EVM contract without wiring providers, ABIs, or decoders by hand.
Independent contracts, different protocols. Every read in an expression is batched into a single Multicall3 call per chain.
1 request4 reads1 round trip
Read state by address. No ABI files, ever.
BigInt, address, struct: decoded and ready.
{ "value": "37192124", "type": "sol_int" }
EIP-1967, transparent, beacon: resolved automatically.
resolved via EIP-1967 slot
The same expression language on every surface. Learn it once, query from anywhere.
Install in your MCP client or call the REST API to get typed onchain data back.
Once installed, ask your agent for onchain data in plain language. It picks the right tool call, resolves the chain, and returns typed results in the same turn.
curl -X POST https://api.evmquery.com/api/v1/query \
-H "x-api-key: $KEY" \
-d '{"chain":"evm_ethereum",
"expression":"usdc.balanceOf(vitalik)"}'{
"result": {"value": "37192124", "type": "sol_int"},
"meta": {"blockNumber": "25612852", "totalCalls": 1, "totalRounds": 1},
"performance": {"latencyMs": 229}
}Six free, in-browser tools run the same expressions shown above against the live API. No signup, no wallet connect.
Inspect any ERC-1155 contract: uri(id), supply, balance, ERC-165 — without ABIs or {id} substitution headaches.
One look at any ERC-20: name, symbol, decimals, and total supply formatted with the right precision. Typed reads, no ABI files.
Read any wallet's Aave health factor across chains in one expression. Proxy-aware, struct-decoded.
Read any ERC-721 NFT: name, symbol, tokenURI, and owner — with the metadata JSON resolved from IPFS. No ABIs, no wallet connect.
Read any Chainlink aggregator: latest answer, decimals, and description, decoded to a human-readable price in one expression.
Check what an ERC-20 spender is approved to move from a wallet: the exact allowance, decimal-formatted, with unlimited approvals flagged.
Ethereum, Base, and BNB Smart Chain today. We’re actively adding more EVM-compatible chains.
Yes. There’s no monthly cap, a generous free tier for development and early production use, bounded by a rate limit rather than a quota. No credit card required to get started.
Rate limits are applied per API key. Auto-batching means a single expression touching multiple contracts counts as one request. Need higher throughput? Pro and Enterprise plans are available now.
Every query is a single round trip: auto-batching folds multi-contract expressions into one Multicall3 call instead of one request per contract, and there’s no caching layer between you and the chain, so you always read live state. Actual response time depends on the target chain and contract complexity. Watch the live query console on the homepage for real, current numbers rather than a quoted average.
For MCP connections, evmquery uses browser-based sign-in — your client handles it automatically. For the REST API, requests are authenticated with an API key transmitted over HTTPS. You can generate and rotate keys from the dashboard.
No. evmquery auto-resolves ABIs for verified contracts. For unverified contracts, you can supply an ABI in the schema field of your query.
evmquery works with any client that supports the Model Context Protocol. We’ve tested with Claude Code, Cursor, VS Code, Windsurf, and Zed. Setup is a single URL — no plugins or SDKs to install. Your client handles sign-in automatically.
Yes. Every query reads from the latest block at execution time — there is no caching layer between you and the chain. Response metadata includes the exact block number so you always know what you’re looking at.
The same endpoint you just saw in action, ready for your app.