Skip to content
System One

jkudish/jev-mcp

MCP server that gives Claude Code, Codex, Amp, OpenCode and other agents ten Jev judgment tools, each returning typed probabilities they can branch on. The author calls it early software.

jkudish/jev-mcp on GitHub

Stars
320
Forks
34
Language
JavaScript
License
MIT
Last push
24 Sep 2026

Read from GitHub on . Counts change daily.

Reported by the author

Per call
150-500 msin roughly 150 to 500 ms, for a fraction of a centgithub.com

jev-mcp wraps ten Jev-backed judgment calls as MCP (Model Context Protocol) tools, so an agent that speaks that protocol, such as Claude Code, Codex, Amp or OpenCode, can call one directly and branch on the result. Each tool returns a typed answer with probabilities and, for most tools, a confidence score, rather than free text the caller has to parse.

jev_verify checks each claim against its cited evidence, and jev_compare judges how two passages relate. jev_review scores a proposed diff before a task is called done; jev_gate runs the same review and also checks completion claims against supplied evidence. jev_screen judges content before it enters context, jev_find and jev_rerank pick or sort candidates by meaning, jev_classify batch-assigns items to labels, and jev_decide settles between a bounded set of alternatives. jev_extract combines regex with judgment to pull field values out as verbatim strings the model found rather than wrote.

The author reports each call returns in roughly 150 to 500 milliseconds for a fraction of a cent. The README pitches these as the cheap mechanical checks agents otherwise skip because a frontier model is too slow to run on every page, claim or candidate list. It installs with npx -y @jkudish/jev-mcp and a TypeSafe API key.

How it uses Jev

assert.equal(body.status, undefined);
assert.equal(body.recommendation.action, "pass");
assert.equal(body.probabilities.injection, 0.02);
assertWireResult(result, {
  tool: "jev_screen", model: "jev-latest", provider: "typesafe",
  probabilities: { injection: 0.02, substance: 0.9, relevance: 0.9 },
  thresholds: { block_at: 0.75, review_at: 0.25 },
  recommendation: { action: "pass", reason: "no signals above thresholds" },
  usage: { input_tokens: 10, output_tokens: 10 },
});

View in test/mock.test.mjs

Open on GitHub

More like this

Use cases this is tagged with