An MCP server that gates/verifies/screens before agents act TypeSafe released jev-judge-mcp, a Model Context Protocol server that gives coding agents eleven judgment tools backed by its Jev model, returning probabilities in a median 464.6 ms round trip at about $0.025 per 1,000 decisions on the recorded classify run. The server converts those probabilities into three policy actions — auto (proceed), review (check another way), or escalate (stop) — and on the recorded benchmark every answer the policy auto-accepted was correct, with misses routed to review. The PyPI package requires Python 3.12+, uv, a POSIX system, and a TypeSafe API key, and its installer supports Claude Code, Claude Desktop, Codex, Cursor, OpenCode, Pi, omp, and Pythinker. An MCP server that gives your coding agent eleven judgment tools backed by TypeSafe's Jev model. The agent hands a tool some evidence and a question it can enumerate: is this claim supported, is this page safe to read, which of these files answers the question, did this patch finish the task. Jev answers with probabilities, usually in under a second median 464.6 ms round trip in the recorded bench , for about $0.025 per 1,000 decisions on the recorded classify run — and on that benchmark every answer the policy auto-accepted was correct, with the misses routed to review instead of through. Policy turns the probabilities into one of three actions: auto proceed , review check it another way , or escalate stop . The numbers and their sources: Measured results measured-results . Use it for checks that have a fixed set of answers. When the step needs new text, code, or options you cannot list, the agent should write it itself. You need Python 3.12+, uv https://docs.astral.sh/uv/ , a POSIX system Linux or macOS , and a TypeSafe API key from console.typesafe.ai https://console.typesafe.ai/settings/keys . The published package is on PyPI, and these three commands configure your agents to launch that pinned package ADR-0051 : verify your key, then store it uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp setup add the server to your agents uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp install check the configuration, offline uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp doctor Every entry the installer writes also requests a Python the package itself declares — --python ' =3.12' , taken from the package's Requires-Python metadata ADR-0053 . On a machine whose first interpreter is older Ubuntu 22.04's 3.10, macOS system 3.9 , uv picks or downloads one that qualifies instead of refusing to start the server. More installer options To develop against an unreleased tree, install from a clone and pass --from-checkout , which pins the entries at your checkout instead of the PyPI package: git clone https://github.com/PyModel/jev-judge-mcp cd jev-judge-mcp uv sync --extra typesafe uv run jev-judge-mcp install --from-checkout That extra is only for running the server. Development and make typecheck need the full sync: uv sync --locked --all-extras — a plain uv sync fails make typecheck with confusing Import "typesafe sdk" could not be resolved errors. Running install from an unreleased clone without --from-checkout ? It prints a note that the pinned PyPI build does not include your local changes, and points here. The post-write check then exercises the published build, not your tree. Installed from a clone earlier? One plain re-run of install rewrites the entries this installer owns to the version-pinned PyPI spec — that is the whole migration. Entries the installer does not own are left alone. Restart your agent. The tools show up as jev verify , jev gate , and so on mcp jev in Claude Code . setup reads the key from TYPESAFE API KEY , or asks for it at a hidden prompt. It never takes the key as an argument, so the key stays out of your shell history. It makes one live call to check the key and writes nothing if TypeSafe rejects it. A good key goes to ~/.config/jev-mcp/key , readable only by you. The server uses that file whenever TYPESAFE API KEY is unset, so agents you start without exporting the key still work. When the variable is set, it wins. install finds the agents on your machine, shows what it will change, and asks before writing. It supports Claude Code, Claude Desktop, Codex CLI and the ChatGPT app , Cursor, OpenCode, Pi, omp, and Pythinker. uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp install --dry-run show the plan, write nothing uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp install -a claude-code one agent repeatable uvx --from 'jev-judge-mcp typesafe ' jev-judge-mcp install --remove undo what install wrote Terminal agents get a reference to TYPESAFE API KEY , never the key itself. Desktop apps don't see your shell's environment. Claude Desktop macOS only is skipped unless you pass --desktop-key , which writes the key into that app's config file. The same flag writes the key into the Codex and Pythinker files when the ChatGPT or Pythinker desktop app shares them; without it, install says that app has no key. The installer warns if a file holding the key ends up readable by other users. Pi also needs its MCP adapter first: pi install npm:pi-mcp-adapter . Register the server by hand