jev-code

Typed classification, yes/no checks, scoring and ranking for coding agents via TypeSafe's Jev model

By French Castle (individual) TypeScript Local · stdio AI and MLDeveloper tools

44 popularity score ★ 58 ↓ 702/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs TYPESAFE_API_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add jev-code -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> -- npx -y @french-castle/jev-code@0.5.0 mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "jev-code": {
      "command": "npx",
      "args": [
        "-y",
        "@french-castle/jev-code@0.5.0",
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "jev-code": {
      "command": "npx",
      "args": [
        "-y",
        "@french-castle/jev-code@0.5.0",
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "jev-code": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@french-castle/jev-code@0.5.0",
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.jev-code]
command = "npx"
args = ["-y", "@french-castle/jev-code@0.5.0", "mcp"]

[mcp_servers.jev-code.env]
TYPESAFE_API_KEY = "<TYPESAFE_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> jev-code npx -- -y @french-castle/jev-code@0.5.0 mcp

Settings 10

TYPESAFE_API_KEY Required: Key for TypeSafe or a System One gateway. Alternatives: OPENROUTER_API_KEY, AI_GATEWAY_API_KEY, or OPENAI_API_KEY with JEV_CODE_PROVIDER=openai. Ollama needs no key.
OPENROUTER_API_KEY Optional: OpenRouter key; used instead of a TypeSafe key.
AI_GATEWAY_API_KEY Optional: Vercel AI Gateway key; used instead of a TypeSafe key.
JEV_CODE_PROVIDER Optional: Forces a host: typesafe, openrouter, vercel, openai or ollama (needed for the last two).
OPENAI_API_KEY Optional: OpenAI Decisions API key; used only when JEV_CODE_PROVIDER=openai.
OLLAMA_HOST Optional: Ollama server address; localhost:11434 by default.
TYPESAFE_BASE_URL Optional: A proxy or your own System One gateway; the client appends /v1/systemone.
TYPESAFE_DEFAULT_MODEL Optional: Pins a model, for example jev-1.13; the default depends on the host.
JEV_CODE_TIMEOUT_MS Optional: Timeout per attempt in ms; 30000 by default.
JEV_CODE_MAX_RETRIES Optional: Retries on 429, 5xx, timeouts and connection errors; 2 by default.

What it does

jev-code is a stdio MCP server, plus a CLI and a Pi extension, that gives a coding agent five tools backed by Jev, TypeSafe's decision model. The agent sends the evidence (test failures, files, findings, a PR description) along with its own labels, questions or scale. What comes back is structured JSON: a label or verdict per item, the probability distribution, and an `auto` or `review` decision worked out from thresholds the caller can change on each call. Jev returns no free text.

It suits the small sorting jobs an agent does during coding work, such as splitting CI failures into flaky and real or ranking which files answer a question. Each call puts all its items into one request. Input is checked locally first (shapes, duplicate ids, request size), so a malformed payload is rejected before it costs a request. The package also includes an Agent Skill that tells the agent when to use a classifier, and a `setup` command that registers the skill and the server in Claude Code, Codex, Pi and OpenCode.

The model runs on a remote host, not on your machine. Supported hosts are TypeSafe, OpenRouter, Vercel AI Gateway, OpenAI's Decisions API (opt-in, public beta) and a self-run System One gateway. With Ollama 0.35 or later it can use local decision models and needs no key. Its SECURITY.md documents `OLLAMA_API_KEY`, which the README leaves out: it is sent only to an Ollama server that requires one. The same file says that only the latest published minor version gets security fixes.

What it needs

RuntimeNode.js 20+

Node.js 20 or later, run through npx. You need one model host: a TypeSafe, OpenRouter or Vercel AI Gateway API key; an OpenAI key plus JEV_CODE_PROVIDER=openai; or a local Ollama 0.35+ server with a decision model pulled (for example `nimble`) plus JEV_CODE_PROVIDER=ollama. Every remote host bills calls to your own account.

Limits

The tools are text-only on every host, even where the model accepts images. Cloudflare Workers AI serves Jev but is not supported. On OpenAI's Decisions API (public beta) the model can refuse a single item, which then comes back as `review` or `uncertain`, and retrying the same input does not change that. OpenAI is never used just because OPENAI_API_KEY is set; you have to choose it. Requests time out after 30 s per attempt by default and are retried twice; JEV_CODE_TIMEOUT_MS and JEV_CODE_MAX_RETRIES change this. The project is not affiliated with TypeSafe. Installs made with 0.2.1 or earlier run an unpinned command and do not pick up updates until setup is run again.

Who it suits

Developers using Claude Code, Codex, OpenCode or Pi who want calibrated labels and probabilities for many items at once, rather than spending a general-model call on each item. It does not read your files or repo by itself: it only classifies what the agent passes in. Your evidence goes to the remote host you pick, so for code that must stay on your machine, use the Ollama mode. Its README names jkudish/jev-mcp (held here as jev-mcp-2) and itsmostafa/typesafe-mcp as other Jev MCP servers with different tool sets. Choose jev-code if you also want the bundled skill, the one-command setup and the choice of hosts.

Tools 5

jev_classify
Gives each item one label from classes the caller defines, with probabilities, margin and an auto/review decision.
jev_check
Answers yes/no questions about one piece of evidence with a probability and a yes, no or uncertain verdict.
jev_score
Places many items on one ordered scale, such as severity or priority, with score, nearest level and confidence.
jev_rank
Scores the relevance of each candidate to a question, returns them sorted, and says whether any is relevant.
jev_ask
Sends mixed question types about one state and returns the raw System One answers.

Similar servers