Where does Jev go in a Claude agent? Move out the steps that need only one option or one probability: which tool to call, whether a call is allowed to run, whether the task is finished, whether to escalate to a stronger model. Call Jev from your agent code through the TypeScript SDK or the HTTP API. Claude keeps generating and reasoning; your code reads the returned probability and decides what happens next.
The difference in one line
Claude takes messages in and returns text or tool calls. Jev takes state plus questions in and returns probabilities. State is whatever you want judged — text or JSON.
| Dimension | Claude | Jev (on system-one.dev) |
|---|---|---|
| Output | Generated text, or a structured tool callSource: Claude tool use docs · Verified 2026-10-12 | One of your predefined options, levels or yes/no values, with probabilities; no generated textSource: System One decision primitives · Verified 2026-10-12 |
| Explains its reasoning | Writes a rationale | No; probabilities only |
| Inputs | See Claude's docs | Text and JSON; no images |
| Metering | Billed per token; see Claude pricingSource: Claude pricing · Verified 2026-10-12 | Credits per block and per question (below) |
For the full comparison and the JSON Schema mapping, see Jev vs ChatGPT and Decision model vs structured output.
What Jev cannot do
- Write replies, emails or code.
- Explain its reasoning, or perform multi-step reasoning.
- Serve as the main model of a coding agent. A coding agent needs generated code and tool calls; Jev's shape is state and questions in, probabilities out.
- Read images.
All of that stays with Claude.
Four decision points inside a Claude agent
Picking a tool (Choice)
With many tools, Claude can pick wrong. List the candidate tools as Choice options plus a "none of these", let Jev pick one, and hand low confidence back to Claude or to the user. See agent tool routing.
Gating a call (Noul)
After Claude produces a tool call, ask a yes/no question before it runs — for example "would this command delete production data?" — then allow, block or escalate by probability. See agent guardrails.
Is the task done? (Noul)
Claude saying "done" is not proof. Split "done" into a few yes/no questions and pair them with deterministic checks such as tests before stopping or continuing. See agent stop conditions.
Should this escalate to a stronger model? (Score / Choice)
Score the request's difficulty, or pick a tier with Choice: easy requests go to a small model, hard ones to a stronger one. See model routing.
Wiring it up: a decision point in agent code
There are two integration paths — the TypeScript SDK @system-one-ai/core, or the HTTP API — both called from your own agent code.
The flow:
- Claude produces a candidate action (a
tool_useblock). - Your code sends that action as state to Jev, with one or more questions.
- Jev returns probabilities.
- Your code applies thresholds: run, escalate to a stronger model, or ask a person.
The code below is illustrative and has not been run. The Claude side follows the
tool_useshape in the Claude tool-use docs; the Jev side follows@system-one-ai/coreusage shown elsewhere on this site. The thresholds are placeholders — choose your own on labelled samples.
ts// Illustrative code, not tested
import { booleanQuestion } from '@system-one-ai/core';
import type { EvaluationClient } from '@system-one-ai/core';
const gateQuestions = {
destructive: booleanQuestion(
'Would this tool call delete or overwrite production data?',
),
};
type ToolUse = { name: string; input: unknown };
// toolUse comes from the tool_use block in Claude's reply
export async function gateToolCall(client: EvaluationClient, toolUse: ToolUse) {
const result = await client.evaluate({
state: { tool: toolUse.name, input: toolUse.input },
questions: gateQuestions,
});
const p = result.answers.destructive.probability;
// Placeholder thresholds; re-select them on your own labelled samples
if (p >= 0.8) return 'block';
if (p >= 0.3) return 'ask_human';
return 'run';
}
For how the client is created, see What is a decision model?. Select a model by its full model ID, read from GET /v1/models — don't copy IDs by hand.
Does it work in other languages
Jev handles non-English input, but accuracy is lower than in English.
Test on your own samples. One comparison worth trying: write questions and options in English while keeping state in the original language, then run both variants over the same data. That is a testing suggestion, not a conclusion.
Cost and trying it
Every 4KB is one block, and a smaller request still counts as one block. Cost = blocks × questions × the model rate.
- Jev rate: 1 credit per question per block.
- Blocks are counted over the whole request's bytes.
- Example: a 9KB request with 2 questions is 3 blocks → 3 × 2 × 1 = 6 credits.
New accounts start with 100 credits, and credits never expire. See pricing.
Claude bills per token; see Claude pricing. The two meters differ, so per-unit prices are not directly comparable — cost both on your own typical request.
Want to try? Run a sample (sign-in required) — for example code review risk or NPC action choice (sample data).
Related reading
Verified 2026-10-12