jev-judge-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jev-judge-mcpClassify this bug report and assess its severity: Export crashes in Safari but works in Chrome."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jev-judge-mcp
An MCP server giving a coding agent one tool, judge, for consulting
TypeSafe's Jev: narrow typed questions about
supplied evidence, answered with calibrated probabilities instead of prose.
Jev complements the active model; it does not replace it.
Install
Two things get installed: the MCP server, which gives your agent the judge tool, and the
skill, which teaches it to design a call worth making. They install separately; npx skills
handles skills only and never touches MCP servers.
Let your agent install it
Paste this into Claude Code, Codex, OpenCode, or any other coding agent. Nothing to clone or configure first.
Install the Jev
judgeMCP tool and its skill into yourself, the coding agent reading this.
Work out which agent you are, and run only your own line:
Claude Code:
claude plugin marketplace add gecm0/jev-judge-mcpthenclaude plugin install typesafe@jev. That registers the server and the skill together, so skip step 2.Codex:
codex mcp add jev -- npx -y jev-judge-mcpOpenCode:
opencode mcp add jev -- npx -y jev-judge-mcpAny other agent: register
npx -y jev-judge-mcpas a stdio MCP server in its config.Install the skill:
npx skills add gecm0/jev-judge-mcp --skill jevInstall the companion skill this one refers to:
npx skills add typesafe-ai/skills --skill typesafe-aiReport back which agent you registered with, plus this instruction: get a key from https://console.typesafe.ai/, export
TYPESAFE_API_KEYin the shell that launches you, and restart. Leave the key in the environment, where the config references it by name.You are done when
judgeshows up in your own tool list after that restart.
Or do it by hand
The server is plain MCP over stdio and needs no vendor-specific environment, so any client works.
For one without an mcp add command, put this in its config:
{
"mcpServers": {
"jev": { "command": "npx", "args": ["-y", "jev-judge-mcp"] }
}
}Codex uses ~/.codex/config.toml with a [mcp_servers.jev] table; OpenCode v2 uses
opencode.jsonc with mcp.servers.jev and "type": "local". Both also accept codex mcp add
and opencode mcp add, which write the right shape for the version you have.
The skill is a plain SKILL.md directory that Claude Code, Codex and OpenCode all read. npx skills places it for you; copying skills/jev/ into ~/.codex/skills/ or .opencode/skills/
works too. Copy the directory, not just the file: skill IDs and relative paths come from it.
To run a working copy instead of the published one, clone the repo, pnpm install, and point the
config at node /absolute/path/to/mcp/server.mjs.
API key
Get one from TypeSafe. Set TYPESAFE_API_KEY in the environment
that launches your client, then restart it. Do not paste the key into chat and do not commit it.
This server does not load .env files.
Claude Code and OpenCode can reference the variable from their config (${TYPESAFE_API_KEY} and
{env:TYPESAFE_API_KEY}), so the key never lands in a config file. Codex takes literal strings in
[mcp_servers.jev.env], so prefer exporting the variable in the shell that starts it.
TYPESAFE_MODEL optionally pins a version, for example jev-1.13.0. The default, jev-latest,
follows TypeSafe's stable alias and can change over time. The response reports the model the API
actually used.
Without a key the tool is still listed, and fails with a clear message before making a request.
Related MCP server: Jev MCP
What it contains
Path | Purpose |
| MCP stdio server exposing the |
| How to design a call: decomposition, fan-out, reading probabilities |
| Registers the published server for the plugin, or for this repo as a project |
| Optional Claude Code packaging: bundles server and skill in one install |
MCP has no hook for always-on usage guidance beyond the tool description, so the guidance is split in two, with each fact in exactly one place: the tool description holds what prevents a wrong action (when to reach for it, and how to misread a result), since it is loaded on every turn; the skill holds question design, and is reached through a pointer at the end of the tool description. Adding a fact to both is a regression, not redundancy.
Use
Ask your agent, for example:
Use Jev to classify this bug report and assess its severity in one call: Export crashes in Safari but works in Chrome.
The agent supplies evidence and independent questions:
{
"state": { "report": "Export crashes in Safari but works in Chrome." },
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle the report?",
"criteria": {
"engineering": "Broken functionality",
"other": "None of the listed teams fits"
}
},
"all_browsers": {
"type": "noul",
"instructions": "Does the report say every browser is affected?"
},
"severity": {
"type": "score",
"instructions": "How severe is the reported defect?",
"criteria": [
"Cosmetic; functionality still works",
"Broken functionality with an available workaround",
"Blocking defect without an available workaround"
]
}
}
}Choice: one of 2-255 named options, plus probabilities and confidence.
Noul: probability of yes, from 0 to 1. No separate confidence. Optional
criteriadescribes thetrueandfalsecases.Score: a probability-weighted position from 0 to
levels.length - 1, with 2-10 descriptive levels, probabilities, confidence, and a legend.
Instructions and criterion descriptions may also be JSON objects or arrays. Choice descriptions may be null when the option name is sufficient. Question IDs only identify results; Jev does not see them during inference. Questions run independently over the same state and cannot use each other's answers.
Boundaries
Every invocation sends the supplied state and questions to
https://api.typesafe.ai/v1/systemoneand consumes TypeSafe API usage. It never automatically reads files or forwards session history. Only send data allowed by your project's sharing policy, never credentials.Jev supplies judgments, not research, generated explanations, proof, or permission to execute actions. Confidence measures distribution concentration, not truth. It cannot select a candidate you omitted. Include a no-match option where needed.
Jev accepts text/JSON, not images or audio. English is currently its strongest language.
The server uses native
fetchwith a 30-second deadline and honours MCP cancellation. Errors are explicit, with no automatic retry and no fallback model. Wait before retrying rate-limit or overload errors. Error bodies are never echoed into the transcript, because they can contain submitted evidence.TypeSafe documents 64k tokens per request and 32k for state plus the longest question for Jev 1.13. The service enforces the budget; this server does not approximate it.
TypeSafe billing is separate from your agent's own model billing. Calls and results are retained in normal session history.
Output above 2000 lines or 50 KB is truncated, with the full response written to a private temporary file (mode 0600). That file can contain sensitive evidence echoed back in rubric descriptions; remove it when no longer needed.
Verify
pnpm install
pnpm testTests use simulated HTTP responses and need no API key. They cover the advertised JSON Schema,
credential handling, request batching, per-question answer validation, HTTP and network failures,
cancellation, output truncation, and the stdio entry point with tools/list and tools/call
routing. They do not measure Jev's accuracy or prove your account can reach the live service.
Protocol smoke test, also without a key:
printf '%s\n%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | node mcp/server.mjsFor a live test after configuring the key, ask your agent:
Call judge with state "The sky is blue" and a noul question asking whether the text mentions a colour. Show the probability and the model the API returned.
Release
CI runs the suite on every push and pull request. Publishing is a tag:
# bump "version" in package.json, commit, then
git tag v0.5.1 && git push origin v0.5.1.github/workflows/publish.yml re-runs the tests, refuses a tag that disagrees with
package.json, and publishes to npm through trusted publishing, so there is no NPM_TOKEN secret
and provenance is attached automatically. Configure the trusted publisher once under the package's
settings on npmjs.com, pointing it at this repository and publish.yml.
References
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for Statewright, built to return verdicts, receipts, usage logs, and audit-ready J
A paid remote MCP for Equibles, built to return verdicts, receipts, usage logs, and audit-ready JSON
A paid remote MCP for HyperFrames, built to return verdicts, receipts, usage logs, and audit-ready J
A paid remote MCP for Skybridge, built to return verdicts, receipts, usage logs, and audit-ready JSO
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to call TypeSafe's JEV classifier and receive structured, typed judgments with probabilities for binary, choice, and scoring questions.MIT
- AlicenseAqualityBmaintenanceEnables frontier coding agents to delegate routine probabilistic judgments to TypeSafe Jev, providing calibrated triage signals for failures, attempts, completion, context ranking, findings, risk, and generic evidence-grounded questions.7MIT
- AlicenseAqualityAmaintenanceEnables agents to get fast, calibrated probabilistic answers from Jev (Typesafe AI) to yes/no, scale, or choice questions about provided material, without using a generative model.1MIT
- AlicenseAqualityAmaintenanceEnables prototyping, running, and evaluating typed judgment questions against TypeSafe's Jev model, including accuracy, calibration, and threshold analysis.31MIT