ScarAI · web3ctx

The last mile before
your agent signs.

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.

No local process, nothing to update, no key, no signup. Add the endpoint and go.

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, forever, on the open route. Higher limits: connect to /mcp/oauth instead and sign in with GitHub — free, 10× the daily budget.
Why this exists

Every claim from a real document — about the wrong version.

The failure, named

Retrieval layers serve superseded APIs beside current ones, unlabelled. The literature calls it deceptive grounding: 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 surface

Five tools, deliberately terse

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.

Corpus
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
Units
585,017
each labelled project@version with a pinned, re-fetchable source
Recipes
24
validated on-chain by a person, served with checkable receipts
One number

Immutable citations, from the published payload audit

immutable / total citation URLs · higher is better · frozen audit 2026-08-13
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, raw payload bytes and limitations are in the evidence set. We publish our own failing rows beside everyone else's.