First, a naming note, because it matters more than usual here: this post is about Codex (codex.io), the enriched blockchain market-data API built by Codex Data Inc. — not OpenAI’s coding agent of the same name, and not the unrelated “Codex” blockchain network tracked on chain explorers. Ask any of the big assistants which API an AI agent should use for onchain data, and Codex.io’s MCP integration comes up alongside Bitquery and Blockscout — it’s a real, well-built product, and it deserves the traffic. It just isn’t the same kind of tool as an RPC-first query layer, and the gap is worth being precise about.
TL;DR
Codex.io is an enriched market-data API: token prices, charts, trades, holders, and wallet stats, aggregated from 80+ chains and delivered over GraphQL, WebSockets, or a keyless pay-per-request model. evmquery is a contract-logic query layer: you name any contract address and write one expression, and evmquery resolves the ABI, unwinds proxies, and returns a typed value read fresh at the current block. If your agent asks “what is this token worth,” use Codex. If it asks “what does this specific contract say right now,” Codex has no dataset for it — the contract was never traded, and its own logic was never indexed.
What Codex.io actually exposes
Codex runs a GraphQL API over an enormous indexed dataset — Codex states coverage of 70 million+ tokens and 700 million+ wallets across 80+ networks, with prices refreshed roughly every second. On top of the GraphQL layer sit three agent-facing surfaces: a Docs MCP server that lets an AI coding tool read Codex’s documentation directly, Codex Skills (installed with npx skills add Codex-Data/skills -g --yes) that map plain-language intent to the right GraphQL query, and MPP (Monetized Per-Request) — a keyless, pay-per-request auth model built on the x402 standard, billed at a stated $0.001 per call, that lets an agent query without provisioning an API key up front.
The query surface is unambiguously market-data shaped. token returns metadata for a single contract; filterTokens screens and ranks tokens by more than 100 on-chain signals; getTokenPrices returns a liquidity-weighted USD price for up to 25 tokens per call; holders, balances, and filterWallets cover who owns what; gettokenevents and tokenTopTraders cover trading history. Every one of these queries reads from Codex’s own index — nothing in the schema issues a fresh call against a contract’s own code.
What Codex does well
Worth naming plainly, because a fair comparison starts by conceding the other side’s real strengths.
- Chain breadth an order of magnitude wider than evmquery’s. 80+ networks, EVM and non-EVM alike — Solana sits next to Ethereum, Base, and BNB Chain in the same schema. evmquery covers four.
- Sub-second price data at scale. Codex’s own positioning claims 1-second data availability against 5 seconds for Birdeye and 10 for CoinGecko — vendor-stated numbers, not something we benchmarked, but the order of magnitude is plausible for a purpose-built indexing pipeline.
- Production customers who’d know if it didn’t hold up. Coinbase, Uniswap, Rainbow, Farcaster, and TradingView are named users, which is a reasonable proxy for “this index is reliable at scale.”
- Launchpad and long-tail token coverage. Pump.fun-style launches get indexed near-immediately, which matters a lot for anything trading-adjacent and not at all for a fixed set of established DeFi contracts.
- A genuinely agent-native access model. Codex Skills plus MPP means an agent can go from zero to a priced query without a human provisioning credentials first — a real piece of infrastructure, not a marketing claim.
- Prediction markets and specialized feeds. Coverage extends to prediction-market data and Virtuals-style AI-agent tokens, categories most contract-read tools never touch.
None of that is a footnote. If your agent’s job is “what’s this token worth,” “who holds it,” or “what traded in the last hour,” Codex is the right tool and this post ends here.
Where the friction shows up for contract-logic reads
Codex’s schema names the shape of what it covers: tokens, prices, trades, wallets, holders. That’s an enormous amount of what people want from onchain data. It has no query for what a contract’s own code computes right now, because that’s not a dataset — it’s a live call.
Take an ERC-4626 vault. Savings DAI (sDAI) wraps DAI deposited into MakerDAO’s Dai Savings Rate, and the number an integration actually needs — how much DAI one sDAI share redeems for — isn’t a market price. It’s convertToAssets(shares), a function the vault computes from its own internal accounting, independent of whether anyone has ever traded sDAI on a DEX. getTokenPrices would return whatever the last trade implies, if there’s enough liquidity to trade against at all; it has no way to return the contract’s own redemption rate, because that number was never a trade.
This is the general shape of the gap, not a one-off: a lending pool’s health factor, a Governor’s live proposal state, an oracle’s staleness check — all of these are functions a contract exposes, not events an indexer captured. Codex indexes what happened on-chain. It has no facility for asking a contract a new question.
What evmquery does differently
evmquery is a contract-logic query layer. You name a contract address and write one expression in SEL (our CEL-based expression language); ABI resolution, proxy unwinding, and Multicall3 batching all happen server-side before you see a typed result. No pre-indexing, no dataset to wait on — if the contract is deployed, it’s queryable.
const query = { chain: "evm_ethereum", schema: { contracts: { sdai: { address: "0x83F20F44975D03b1b09e64809B757c47f942BEeA" } }, }, expression: "[sdai.convertToAssets(1000000000000000000), sdai.totalAssets(), sdai.totalSupply()]",};
const res = await fetch("https://api.evmquery.com/api/v1/query", { method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey }, body: JSON.stringify(query),});Validated while writing this post
- Running the query above against evmquery’s live API returned all three values in one round: 3 on-chain calls, 1 Multicall3 round, at Ethereum block 25,722,113, for 4 units.
convertToAssets(1e18)returned1179098427782668209— one sDAI share currently redeems for about 1.1791 DAI, a number that comes from the vault’s own accounting, not from any trade.totalAssetsandtotalSupplyreturned171234146270582559076080886and145224641332610181750485170— roughly 171.2M DAI backing 145.2M sDAI shares at that block.describe_schemaresolved the sDAI ABI automatically, surfacing 27 callable methods includingconvertToAssets,previewRedeem, andmaxWithdraw— no ABI lookup, no contract-verification step.
The same engine backs evmquery’s MCP server, so an agent asks the identical question through a typed tool call instead of a REST body. The AI agent integration overview covers wiring it into Claude, Cursor, or another MCP client.
A concrete side-by-side
| Question an agent might ask | Codex.io | evmquery |
|---|---|---|
| Current USD price of a token | getTokenPrices, liquidity-weighted, sub-second |
Not supported; no price oracle unless the contract exposes one |
| Top holders of an ERC-20 | holders query, one call |
Not supported; use an indexer |
| Trending tokens by 100+ on-chain signals | filterTokens, one call |
Not supported; not a screening tool |
| Redemption rate of an ERC-4626 vault | No dataset for it; not a trade | One expression, typed result at the current block |
| Health factor of a wallet in a lending pool | Not indexed; derived contract state | One expression, proxy resolved automatically |
| Five fields across three differently-proxied protocols | Not applicable | One expression, one Multicall3 round |
| A vault that deployed this morning | No price data until it trades | Queryable immediately |
| Non-EVM chains (Solana, and 70+ others) | Covered | Not supported; Ethereum, Base, BNB Chain, Polygon only |
The top three rows are Codex’s outright — they’re the reason it has Coinbase and Uniswap as customers. The middle three are the reason this post exists. The last row is the honest ceiling on evmquery’s scope.
Where Codex is still the better fit
Being straight about the other direction matters as much as the pitch above. Reach for Codex, not evmquery, when:
- Your question is about price or trading history. Current price, historical OHLC, top traders, holder distribution. Contract reads answer “what is true now, according to the contract itself” — never “what did the market do.”
- You need chains beyond Ethereum, Base, BNB Smart Chain, and Polygon. Codex’s 80+ networks, including Solana and other non-EVM chains, dwarf evmquery’s four.
- You want token discovery, not a known address.
filterTokensscreens tens of millions of tokens by signal. evmquery requires you to already know which contract you’re asking about. - You’re building anything trading-adjacent. Screeners, portfolio trackers, launch monitors — Codex’s freshness and breadth are the product; a contract-read layer would make you reconstruct an index by hand.
- You want a keyless, agent-native payment model. MPP’s pay-per-request flow means an agent can query without a human provisioning an API key first. evmquery’s free tier still needs a key, even if signup is instant and card-free.
Can you run both
Yes, and for a lot of agent stacks that’s the right answer. Both speak MCP, so an MCP-aware client can hold both servers at once: Codex answers “what’s this worth and who’s trading it,” evmquery answers “what does this contract say right now,” and the model routes between them based on the question it’s actually asked.
The failure mode is an agent forced to fake one with the other — grinding a market-data API for a value only a contract’s own logic can produce, or trying to reconstruct a live price feed from point-in-time contract reads. Both produce answers. Neither produces correct ones reliably.
Next steps
- Bitquery vs evmquery makes the same argument against a different indexed-analytics platform — the shape of the gap is nearly identical.
- Blockscout alternative for contract reads covers the explorer-API version of this same layer mismatch.
- The evmquery MCP server walks through connecting the contract-read side to Claude, Cursor, or VS Code.
- AI agent integrations for the overview before picking a client.



