Guides / illustrated walkthrough

Jev MCP Server: Connect Jev Decisions to Claude Code & Cursor

TypeSafe ships a drop-in Agent Skill instead of an MCP server, and the community answered with 20+ third-party Jev MCP servers. This guide shows the decision layer every one of them wraps — state plus typed questions, thresholds, and a TypeScript SDK demo.

Quick takeaway

There is no official Jev MCP server. TypeSafe’s documented route for coding agents is a drop-in Agent Skill — a plugin that hands Claude Code or Codex the Jev API context — and the ecosystem filled the transport gap with 20+ third-party MCP servers (jkudish/jev-browser at 268 stars and ~3.7k npm downloads a week, maxkimambo/jev-mcp at ~981 a week, walidboulanouar/jev-agent-kit with 11 tools, Bizuayeu/GenericJevMCP on a self-hosted DiffusionGemma backend). Whatever transport you pick, the wire format is identical, and it is the one Codevolution demonstrates below: a state (plain text, JSON object, or array) plus typed Noul/Choice/Score questions, answered with calibrated probabilities in under a second — answers your agent, MCP tool, or skill then branches on. Community demos put hard numbers on why: a 29,150-token MCP skill list filtered to the 2 servers a task actually needs (≈5× less context, ≈$236 saved per 1,000 requests), and a fuse that blocked an irreversible rm -rf in about half a second instead of ~5 seconds and 124 tokens on the main model.

Video source

Codevolution

22:12ZgXej_9isxY

Step-by-step walkthrough

  1. 1

    Know what you are wiring in: Jev decides, it never writes

    Before plugging anything into Claude Code or Cursor, be clear about the thing on the other end of the wire. Jev is TypeSafe’s “System One” model: it does not generate text — it judges the state you send and returns typed, probability-scored answers in 70–500 ms. The video’s running example is a support message — “I’ve contacted you three times, and I’m still waiting” — fed to Jev with the yes/no question “Does this customer sound frustrated?” and answered Yes. That is exactly why it suits agents: a Jev MCP tool or skill can hand your coding agent a probability it can branch on, and the model has no prose to hallucinate.

    Jev whiteboard example asking Does this customer sound frustrated with the message I have contacted you three times flowing into the Jev box and returning a yes judgment.
    A smart if statement: Jev judges the message, your code branches.Watch at 1:35
  2. 2

    Model the payload: one state plus typed questions

    Every Jev request — and therefore every Jev MCP tool call underneath — has two parts. The state is the information to judge: plain text, a JSON object, or an array. The questions are what you want to know about that state, and each carries a type that fixes the shape of its answer: Noul for yes/no probability, Choice for picking from options you define, Score for a position on a scale you describe. Questions are evaluated independently and in parallel, so one question never sees another’s answer. Get this payload right and the MCP-vs-skill choice becomes a transport detail.

    Jev input diagram pairing an Information state of plain text, JSON object, or array with typed Questions evaluated independently in a single request.
    State plus typed questions — the whole request surface.Watch at 6:30
  3. 3

    Prove the decision in the TypeSafe console before wiring anything

    The fastest way to validate a decision is the TypeSafe console playground, no code needed: put the state on top — here the JSON object { "message": "I’ve contacted you three times, and I’m still waiting." } — pick a primitive in the Questions panel (Noul to evaluate how true something is, Score for a rubric, Choice for a multiple-choice question), and hit Run request. The same screen lists API Keys in the sidebar, walkthrough lessons like “Is hotdog a sandwich?”, and real-life use cases from résumé screening to LLM guardrails. Jev was in early access at recording (waitlist, Vercel AI gateway, free until September 23), and OpenRouter serves the same models if you already have a key there.

    TypeSafe AI console playground with the state message, a primitive picker listing Noul, Score, and Choice questions, and Learn to TypeSafe walkthrough lessons plus resume screening, support agent audit, and LLM guardrails use cases.
    Try the decision in the console sandbox before writing code.Watch at 12:10
  4. 4

    Install the TypeScript SDK and make the first typed call

    In code, the video’s jev-demo project adds @typesafe-ai/sdk (0.6.x) to package.json and keeps the key in .env as TYPESAFE_API_KEY, created in the console. demo.ts then guards on the key, builds a client, and sends one Noul question: state = { message: "I’ve contacted you three times, and I’m still waiting." }, questions = { isFrustrated: noul("Does message express frustration?") }, dispatched with client.systemOne(state, questions). The demo script runs through tsx with --env-file=.env. Python and JavaScript SDKs exist too — and this same call is what a community Jev MCP server wraps as a tool.

    TypeScript demo.ts importing noul and TypeSafeClient from @typesafe-ai/sdk and asking isFrustrated noul does message express frustration over a customer message state.
    First typed call: noul over a customer message.Watch at 14:20
  5. 5

    Run it twice and read calibrated answers, not prose

    npm run demo returns model jev-1.13.0 with answers.isFrustrated.noul = 0.94 — a 94% probability the message is frustrated — plus usage (292 input / 23 output tokens) and an elapsed time of 861 ms. Swapping the state to “Thanks for the update. Everything is working now.” flips the same question to 0.03. That clean flip is the point: the number moves with the evidence, so thresholds in your agent are safe to trust. Note a Noul answer carries no separate confidence field — the distance from 0.5 is the confidence; Choice and Score answers do include one.

    npm run demo terminal output showing jev-1.13.0 return isFrustrated noul 0.94 for the angry message and 0.03 after swapping to a friendly one, with token usage and elapsed time.
    0.94 vs 0.03 — the flip is the signal.Watch at 16:10
  6. 6

    Ask Noul, Choice, and Score together in a single call

    all_questions.ts keeps the same state and stacks all three primitives: isFrustrated stays a Noul; requestType becomes a Choice — “What is the main request in this message?” over the options an upgrade, a refund, a replacement, or other; frustrationLevel becomes a Score over three described levels, from makes a request without expressing frustration through expresses dissatisfaction without strong anger to expresses strong anger. Describing each level gives the model more to work with than a bare 1–10, and all three questions still ride one API call.

    all_questions.ts combining a noul frustration check, a choice over upgrade, refund, replacement, or other, and a score with three described irritation levels in one Jev call.
    Three question types, one state, one call.Watch at 17:20
  7. 7

    Branch on thresholds — the part your agent or MCP tool owns

    One call returns every typed answer at once: requestType = “an upgrade” with confidence 0.99, frustrationLevel = 1.02 with confidence 0.97 (dissatisfaction edging toward anger), still in 834 ms for 495 input tokens. The demo sets a reviewThreshold of 0.8 and flags the message for support review instead of leaving it in the normal queue — and that branch is precisely where agents plug in: a Jev MCP tool or skill uses the same answers to route the task to a cheaper model, load one skill instead of a 145-skill dump, or block an irreversible command before the big model ever sees it. Tune the threshold on your own examples, as the video advises.

    Jev terminal response returning choice an upgrade at confidence 0.99 and score 1.02 at confidence 0.97 alongside the noul answer, finishing in 834 milliseconds for 495 input tokens.
    Three typed answers in 834 ms — thresholds do the rest.Watch at 18:30

Frequently asked questions

Does Jev have an official MCP server?

No. TypeSafe’s documented route for coding agents is a drop-in Agent Skill — a plugin that gives Claude Code or Codex the Jev API context — and the docs are explicit that Jev is not the LLM behind the agent (there is no model: jev-latest option). The MCP transport layer is entirely community-built: the Glama directory lists 20+ third-party Jev MCP servers, led by jkudish/jev-browser (268 stars, ~3.7k npm downloads a week), maxkimambo/jev-mcp (~981 a week), walidboulanouar/jev-agent-kit (11 tools), and Bizuayeu/GenericJevMCP (self-hosted DiffusionGemma backend).

How do I connect Jev to Claude Code?

The official skill route installs in two commands: claude plugin marketplace add typesafe-ai/skills, then claude plugin install typesafe@typesafe-ai (or copy the skills/typesafe-ai directory into ~/.claude/skills for a manual install). Community walkthroughs show a second route — hand your agent an OpenRouter API key plus a router setup prompt, and it wires Jev-based model routing into the session. The same agent-setup prompt and skill.md pattern also works in Cursor or Codex. Both routes end at the state + typed-question call shown in this guide.

What does a Jev decision layer actually do for my agent?

Community demos put hard numbers on it. Filtering an MCP/skill context: a 29,150-token server list collapsed to the 2 servers a Stripe-webhook task actually needed — roughly 5× less context and an estimated $236 saved per 1,000 requests. A safety fuse: an irreversible rm -rf blocked in about half a second by Jev instead of ~5 seconds and 124 tokens on the main model. Bulk triage: 30 support tickets classified in 2.6 seconds at a fraction of the LLM cost. Routing, tool filtering, and permission gates are the three patterns that keep coming back.

Agent Skill or community MCP server — which should I use?

They solve different halves. The official skill is context: it teaches your agent when and how to call Jev, stays aligned with the docs, and updates with the SDK. A community MCP server is transport: it exposes Jev as a runtime tool any MCP client — Claude Code, Cursor, Codex — can invoke inside the loop for model routing, tool filtering, or permission gating. A practical combo is the official skill for setup knowledge plus one vetted community server for in-loop decisions, and — as the MG setup video cautions — run evaluations on your own cases before trusting the judgments in production.