Skip to content

Read any EVM contract. No ABI, no node, no glue code.

One HTTP call returns typed, decoded contract state from Ethereum, Base, BNB Chain, and Polygon. No SDK, no RPC key management, no proxy detection to write yourself.

cel.bind(d, token.decimals(), {
  "name":        token.name(),
  "symbol":      token.symbol(),
  "decimals":    string(formatUnits(d, 0)),
  "totalSupply": string(formatUnits(token.totalSupply(), d))
})

Free tier: 60 units/min, no credit card

For developers

Reading a contract shouldn't take an ABI file and a batching library

Every EVM read you write by hand repeats the same four problems.

ABI hunting

You copy an ABI from Etherscan, or generate one from a verified source, just to call one method.

Proxy indirection

The contract is a proxy. Your ABI is for the implementation. eth_call on the wrong address returns 0x, not an error.

RPC round trips

Ten reads means ten calls, unless you wire up Multicall3 yourself and manage its return-decoding by hand.

Untyped results

eth_call hands back raw hex. You decode it against the ABI, cast the ints, and scale the decimals yourself, for every field.

What evmquery does instead

One typed call, batched, proxy-aware, no ABI file

Point at an address and an expression. evmquery resolves the ABI, unwinds EIP-1967/UUPS/Beacon/Diamond proxies, and batches every read into one Multicall3 round trip per chain.

  • No ABI files

    evmquery resolves the implementation ABI automatically from the verified source.

  • Proxy-aware by default

    EIP-1967, UUPS, Beacon, and Diamond proxies are unwound before the call executes.

  • One round trip

    Multicall3 batches every read in an expression into a single call per chain.

  • REST, MCP, or n8n

    Same query engine, three surfaces — call it from your backend, your coding assistant, or a no-code workflow.

bash
curl -s -X POST https://api.evmquery.com/api/v1/query \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "chain": "evm_ethereum",
    "schema": { "contracts": { "usdc": { "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" } } },
    "expression": "formatUnits(usdc.balanceOf(\"0x...\"), usdc.decimals())"
  }'
Read a USDC balance, no ABI file, one request

Everything you reach for, in one expression.

Read any EVM contract without wiring providers, ABIs, or decoders by hand.

One round trip, every time

Independent contracts, different protocols. Every read in an expression is batched into a single Multicall3 call per chain.

token.name()token.symbol()token.decimals()token.totalSupply()
Multicall3Ethereum

1 request4 reads1 round trip

Any contract

Read state by address. No ABI files, ever.

usdc.balanceOf(vitalik)
37.19 USDC

Typed results

BigInt, address, struct: decoded and ready.

{
  "value": "37192124",
  "type": "sol_int"
}

Proxy-aware

EIP-1967, transparent, beacon: resolved automatically.

0xA0b869…eB48
slot0x360894…82bbc
0x435068…402dd

resolved via EIP-1967 slot

Drop it in your agent

The same expression language on every surface. Learn it once, query from anywhere.

MCPClaudeCursorVS CodeWindsurf
HTTPRESTn8n

Frequently asked questions

No, but you can keep them for writes and signing. evmquery only replaces the read path: ABI resolution, proxy unwinding, and batching.

Every query is a documented REST call with a plain JSON response. There's no proprietary SDK lock-in on the response shape, so migrating back to viem or ethers is a matter of re-implementing the same calls, not unwinding a custom format.

Ethereum, Base, BNB Smart Chain, and Polygon today, with more chains on the roadmap.

Blockscout and Bitquery are indexed data layers: they've already crawled the chain, so they're strongest at explorer-style lookups and DEX/wallet analytics. evmquery is a contract-logic query layer: you point it at any verified contract, including ones nobody has indexed yet, and it resolves the ABI, unwinds proxies, and batches the calls into one typed response server-side. Reach for evmquery when the read is a specific contract's own state; an indexer is the better fit for broad wallet or trade history.

Stop writing ABI resolution and proxy detection by hand.

Free tier: 60 units/min, no credit card.

No credit card60 units/min freeREST, MCP, or n8n