A release-aware context layer and MCP runtime. Agents get reviewed metric definitions, approved join paths, read-only enforcement and PII masking — instead of raw schema and a guess.
Nothing in a column name says which of three csat tables is
canonical, that rating = 0 means the survey was never answered,
or that *_history holds superseded rows.
csat.settled_claims, applies the
rules it already encodes, and returns 4.67 / 5
across 900 answered surveys — citing the snapshot release it read.
A real Claude Code session over ctxd's MCP server. The tool calls, arguments, returned values and final answer are verbatim; the frames are re-typeset for legibility rather than screen-captured. The database is synthetic, and all three recorded takes returned 4.67.
npm install -g @dagurupriyan/ctxd@next
ctxd init # scaffold .env
ctxd doctor # check connectivity and snapshot readiness
ctxd refresh # index Metabase into a versioned snapshot
ctxd serve --http # serve MCP to Claude, Codex, or any client
Requires Node 20+. Point METABASE_URL and
METABASE_API_KEY at your instance; there is no mapping file and no
plugin to install.
CTXD_ALLOW_QUERY.
SELECT/WITH only. Mutations, DDL,
stacked statements and SELECT … INTO rejected.
*.email cover every table.
audit/queries.jsonl.
ctxd does not replace Metabase, dbt, Cube, or your warehouse. It is the contract, compiler, release gate, and evaluation layer between those systems and an agent.