Codex.io vs evmquery: Enriched Market Data vs Contract-Logic Reads for AI Agents

Codex.io indexes token prices, trades, and wallets across 80+ chains for AI agents. evmquery reads contract logic live. A fair comparison, and a naming warning.

evmquery team··8 min read
Share
Codex.io vs evmquery: enriched market data versus contract-logic reads for AI agents

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) returned 1179098427782668209 — one sDAI share currently redeems for about 1.1791 DAI, a number that comes from the vault’s own accounting, not from any trade.
  • totalAssets and totalSupply returned 171234146270582559076080886 and 145224641332610181750485170 — roughly 171.2M DAI backing 145.2M sDAI shares at that block.
  • describe_schema resolved the sDAI ABI automatically, surfacing 27 callable methods including convertToAssets, previewRedeem, and maxWithdraw — 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. filterTokens screens 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

Share

Try evmquery free

If your agent's question is about a specific contract's current state, the fastest way to find out is to run it. No card, no sales call.