web3ctx

The last mile before your agent signs a transaction

Human-validated, chain-run integration recipes for web3 — served version-true, with citations you can re-fetch and receipts you can check on-chain. The corpus exists to make the recipes reachable and version-scoped.

Install — it's a URL, not a package

Claude Code

claude mcp add --transport http web3ctx \
  https://mcp.scarai.xyz/mcp

Cursor / any mcp.json client

{ "mcpServers": { "web3ctx": { "url":
  "https://mcp.scarai.xyz/mcp" } } }

Claude Desktop / claude.ai

Settings → Connectors → Add custom connector → paste the URL.

stdio-only clients:

npx mcp-remote \
  https://mcp.scarai.xyz/mcp
Free, no key, no signup. Higher limits: connect to /mcp/oauth instead and sign in with GitHub — free, 10× the daily budget.
Why this exists

The failure, named

Retrieval layers serve superseded APIs beside current ones, unlabelled. The literature calls it deceptive grounding: every claim sourced from a real document — about the wrong version. Every citation check passes; the user loses.

The fix, structural

Version identity resolves to a SQL predicate before any search runs, so off-version content cannot enter the payload. When evidence is missing, the server abstains and says what would resolve it — it never guesses.

The moat, human

Integration recipes run by a person against live chains, stamped with who ran them and when, served with on-chain receipts. The footguns that live in NatSpec, revert strings and peer ranges — not in any docs site.

The five tools
toolwhat it does
web3_searchranked, version-scoped units — plus the human-validated recipe when the question earns one
web3_grepexact identifier lookup across the corpus
web3_fetchfull bodies by stable selector, cursor paging for long content
web3_depsdependency closure, stepped by depth
web3_lookuptyped records — deployment addresses, ABIs, EIPs — or an honest NOT_FOUND
What's inside — numbers injected at build time, never typed

104 integration projects + 1,193 specification ids (609 ERC + 583 core EIP + 1 in both repos) = 1,297 total

the pair, always — a bare total does not publish

585,017

every unit labelled project@version with a pinned source

24

each validated on-chain by a person, served with receipts

One number — immutable citations, from the published payload audit
armimmutable / total citation URLs
web3ctx142 / 14499%
context70 / 570%
exa (web search)7 / 2133%
firecrawl25 / 3387%
claude web searchMISSING — never ran
ethskills (skill)0 / 1810%
Full protocol, cached payloads and limitations are in the evidence set. We publish our own failing rows beside everyone else's.