Jev 1.13
Jev 1.13 (typesafe/jev-1.13) is the first TypeSafe System One decision model. It is not an LLM: instead of generating text, it answers typed questions about the state you send — with probabilities your code branches on directly. Context: 32,000 tokens.
What it is not
Section titled “What it is not”- Not chat: there is no
POST /v1/chat/completionsfor it — calls go toPOST /v1/decisions. - It does not generate text or explain its decisions — probabilities only. Need a rationale? Ask a chat model afterwards.
- Not a tool for “write me an email” — it is for decision points in code: routing, classification, action gating.
Three primitives
Section titled “Three primitives”| Primitive | Question | Answer |
|---|---|---|
noul |
Does this condition hold? | Probability of yes, 0…1 |
choice |
Which one of these options? | The pick + full distribution + confidence |
score |
Where on the scale? | Weighted position + per-level probabilities |
Any number of questions of any type per request — one answer each.
When to pick Jev over an LLM
Section titled “When to pick Jev over an LLM”“Asking an LLM a narrow question and parsing a label out of its answer” is an anti-pattern: slower, costlier, unstable. Jev does the same faster and predictably:
- Routing — which team/queue owns an item.
- Agent gating — is a tool call safe: reversible? within scope? Run / refuse / ask a human by a
noulthreshold. - Classification and tagging — one category plus any number of binary tags in a single request.
- Cascades — draft with a cheap model → verify with Jev → escalate to an expensive one only on failed checks.
Quickstart
Section titled “Quickstart”curl https://api.mixen.ai/v1/decisions \ -H "Authorization: Bearer $MIXEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "typesafe/jev-1.13", "state": "My checkout page shows a blank screen after I click Pay. Tried two browsers.", "questions": { "is_bug": { "type": "noul", "instructions": "Is the customer reporting a software defect?", "criteria": { "true": "Describes broken or unexpected product behavior.", "false": "Asks a question or requests a feature." } }, "urgency": { "type": "score", "instructions": "How urgent is this ticket?", "criteria": ["Can wait", "This week", "Blocking revenue"] } } }'import requests
r = requests.post( "https://api.mixen.ai/v1/decisions", headers={"Authorization": f"Bearer {KEY}"}, json={ "model": "typesafe/jev-1.13", "state": "Task: clean up accounts. Tool call: delete_rows(...)", "questions": { "safe_to_run": { "type": "noul", "instructions": "Is this action safe without human approval?", "criteria": { "true": "Reversible, low-impact, within the task.", "false": "Destructive, irreversible, or broader than the task." }, } }, },)noul = r.json()["answers"]["safe_to_run"]["noul"]if noul < 0.8: escalate_to_human()One answer per question:
{ "answers": { "is_bug": { "type": "noul", "noul": 0.96 }, "urgency": { "type": "score", "score": 2, "probabilities": {"0": 0, "1": 0.01, "2": 0.99} } }, "usage": { "cost": 0.00002, "input_tokens": 476 }}Writing good questions
Section titled “Writing good questions”criteriadefine the decision boundary, not option descriptions: a true/false pair for noul, one sentence per option for choice, ordered levels for score. The more concrete, the stabler the distribution.stateis context, not a prompt: ticket text, a state object, an array.instructionsmay reference nested fields.- Pick thresholds from
probabilities/confidence, not just the top answer: low confidence is the signal to hand off to a human or re-ask. Run a dozen labeled examples and tune the threshold to your cost of error.
Pricing
Section titled “Pricing”Only input tokens are billed (state plus questions); output tokens are free. A typical request is a few hundred tokens — a fraction of a cent. Charging follows usage.cost from the response.
Limitations
Section titled “Limitations”- Context: 32K tokens.
- The model does not modify
stateand does not call tools — it only answers your questions. - Full request/response schema — in the Decisions guide.