About jev-use
jev-use is an MCP server that lets Claude Code, Codex and pi hand decision-only steps to the Jev judge. It returns typed yes/no, single-choice and rating answers in batches, and sends back typed escalation when Jev should not decide.
Key features
- 01Typed yes/no, pick-one and rating questions
- 02Batched judgments in a single tool call
- 03Escalation with a typed reason when unsure
- 04Command-line install and environment check
- 05JavaScript library interface for direct use
Use cases
- 01Quick next-step decisions for coding agents
- 02Batch judging which messages to keep during context compaction
- 03Gating shell commands before they run
MCP support
jev-use runs as an MCP server and exposes two tools to clients for submitting batched judgments and receiving typed verdicts or escalation requests.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEjev-use
English | 简体中文
The best way for Claude Code, Codex, and pi to work with Jev: hand the tasks that need no text output to Jev — faster steps, fewer tokens, tasks done sooner and better.
It makes the LLM and Jev true collaborators: when content needs to be written, the LLM takes over; when a step just needs a fast decision, Jev executes it.
Demos — real runs, 1× speed
Directions task: Jev clicks, the LLM types — 10 decisions (p50 274 ms) · 4 writes; Jev rejects a wrong route, the LLM rewrites![]() | Context compaction — 200 messages judged in 7 calls, one LLM paragraph replaces the dropped pile; recall 3/3![]() |
Pong: ball speed = decision latency — 86 Jev decisions in 20 s vs 6 (haiku) and 3 (gemini) called the usual way; enum-constrain both and the gap is 3×![]() | Gate every shell command — dangerous ones denied in ~230 ms with a reason, zero LLM tokens![]() |
Every demo is a rerunnable script in bench/examples/; all numbers, methodology, variance and caveats: bench/RESULTS.md · third-party measurements: docs/evidence.md.
Install
npx -y jev-use install # wires Claude Code, Codex, and pi — whichever it finds
Set one key in the environment your agent runs in (JEV_BACKEND=mock for
a keyless dry run):
| Provider | Env var |
|---|---|
| TypeSafe direct | TYPESAFE_API_KEY |
| OpenRouter | OPENROUTER_API_KEY |
| Vercel AI Gateway | AI_GATEWAY_API_KEY |
npx -y jev-use doctor checks the wiring. Judged state goes to the
provider you configure; JEV_BACKEND=mock stays local. Plugin form with
the routing skill and the PreToolUse gate:
harness/claude-code ·
harness/codex.
Use as a library
npm i jev-use — zero runtime dependencies on the judgment path:
import { Jev, check, pick, rate } from "jev-use";
const jev = new Jev();
const { answers } = await jev.judge(state, {
next: pick("Next action?", { merge: "all green", rerun: "looks flaky", hold: "needs attention" }),
risk: rate("How risky?", ["routine", "worth a look", "incident"]),
passed: check("Did the run fully succeed?"),
});
// answers.next → { answer: "merge", confidence: 0.93, confidenceFrom: "reported", escalate: false }
Anything Jev can't or shouldn't decide comes back with escalate: true
and a typed reason. Tools, verdict shape, escalation contract, CLI:
docs/reference.md.
Small enough to read
| File | Job |
|---|---|
| src/protocol.ts | Questions (check/pick/rate), verdicts, escalation reasons |
| src/dispatch.ts | Pre-call routing: what never reaches Jev |
| src/judge.ts | screen → backend → hand back what is unsure; gate |
| src/jev.ts | The Jev client over that engine |
| src/redact.ts | Credentials stripped from a gated action before it is sent |
| src/backends/ | TypeSafe, OpenRouter, Vercel, mock adapters |
| src/server.ts | The two MCP tools |
| src/cli.ts | install, serve, hook gate, doctor |
| skills/jev-use/SKILL.md | The routing rules the agent follows |
Development
$ npm run typecheck && npm test # unit tests incl. per-provider wire fixtures
$ npm run smoke # real MCP client ↔ built CLI over stdio
$ node bench/run.mjs # micro-benchmarks, your key and region
Substantially written with Claude Code (AI-assisted).
MIT © shitianfang
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.



