A nest isn’t just queryable by you - it’s queryable by your agent, with the same two-minute setup. The MCP server is built into the binary, talks only to your local instance, and sends nothing anywhere: no keys, no telemetry, no third-party data API in the loop.
Wire it up in one step
With a nest running (nuthatch dev):
nuthatch mcp --print-config
This prints a ready-to-paste .mcp.json and the equivalent claude mcp add one-liner.
Any MCP client works the same way: the server speaks stdio and bridges to the running instance.
Then ask questions:
“What were the ten largest transfers this week, and were any of the senders flagged?”
Per-client setup
Every client uses the same server entry - only where you put it differs. The entry is:
{
"mcpServers": {
"nuthatch": { "command": "nuthatch", "args": ["mcp", "--url", "http://127.0.0.1:8288"] }
}
}
- Claude Code - one line, no file editing:
claude mcp add nuthatch -- nuthatch mcp --url http://127.0.0.1:8288. Or drop the entry into.mcp.jsonat your project root. - Cursor - paste the entry into
.cursor/mcp.json(project) or~/.cursor/mcp.json(global). - Claude Desktop - Settings -> Developer -> Edit Config opens
claude_desktop_config.json; paste the entry there and restart. - Any other MCP client - point it at the command
nuthatch mcp --url <your nest>; the transport is plain stdio.
Use the binary’s absolute path (what nuthatch mcp --print-config emits) if nuthatch isn’t on the client’s PATH.
An honest tool menu
The tools a nest advertises match what it actually indexes (RFC-0025). A token nest offers balance
and top_balances; a nest with compliance configured adds flags, exposure, and screen_status;
a bare event nest (say a Uniswap pool) offers neither, so an agent is never handed a tool that would
just answer {"count":0}. The menu agrees with the data.
Built agent-grade, not agent-tolerant
The difference between an MCP that demos well and one an agent can work with is a set of deliberate choices (RFC-0016):
- Meaning travels with the schema. The
schematool composes the decode registry with the authored semantic layer - what each table means, its grain, and its footguns - so the agent doesn’t guess whatvalueis or rediscover thatfromneeds quoting. - Errors are prompts. A failed query returns a fix hint computed from the real schema: the
nearest table name, the quoting rule, the
_deccolumn to use. The agent’s next attempt is usually right. - Check before you spend.
explainvalidates a query - binds every table, column, and type - without executing it, so an agent iterates on shape cheaply and runssqlonce. - Results are shaped for context windows. The bridge caps rows (default 200) and returns compact tables, not JSON walls.
- Answers carry provenance. Every result is stamped with the block range and content-addressed
segments it came from - an agent can cite a figure, and
verify-a-number(a built-in prompt) re-derives one from scratch.
The tool-by-tool surface - plus the resources and the built-in prompts - is in the MCP reference. A CI-gated eval harness scores a fixed set of questions against the query surface (RFC-0016), so regressions in the deterministic path fail like any other test; scoring full agent sessions end-to-end is the harness’s next tier.
For the authoring side - an agent building nests rather than querying one - see The builder skill.