> ## Documentation Index
> Fetch the complete documentation index at: https://carnot.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Jev (TypeSafe AI)

> Make fast, structured decisions with TypeSafe AI Jev

## Overview

Jev is TypeSafe AI's System One model. Instead of generating text, it evaluates a `state` against typed questions and returns calibrated probabilities, so a following step can branch on a number rather than parse a sentence. It fits classification, routing, rubric scoring, and guardrail checks.

## Key Features

* `TYPESAFE_JEV_EVALUATE`
  * Evaluate one `state` against many questions in a single request
  * Three question types:
    * `noul` — yes/no. Returns `noul`, the probability (0–1) that the answer is yes
    * `choice` — pick one option. `criteria` maps each option to a description (or `null`). Returns `choice`, `probabilities`, `confidence`
    * `score` — rate along ordered levels. `criteria` is an array of at least two level descriptions. Returns `score` (can land between levels), `legend`, `probabilities`, `confidence`
  * `state` accepts plain text or a JSON object/array
  * `model` defaults to `jev-latest`. Pin a version such as `jev-1.13.0` if you tune confidence thresholds
  * Rate-limit (`429`) and overload (`529`) responses are retried automatically

## Authentication

This tool requires your own TypeSafe AI API key; Jinba API credit is not available for it. See the [TypeSafe AI quick start](https://docs.typesafe.ai/introduction/quickstart) to obtain one.

**Note**: Treat API keys as sensitive information and never commit them to public repositories.

## Limits

* Text only, with a budget of 64k tokens per request (32k for `state` plus the longest question)
* English is the most accurate language. For other languages, check `confidence` before acting on an answer

### Example: Triage a Support Ticket

```yaml theme={null}
- id: triage
  tool: TYPESAFE_JEV_EVALUATE
  input:
    - name: state
      value: "Help! My payouts have been failing for 3 days."
    - name: questions
      value: |
        {
          "is_urgent": {
            "type": "noul",
            "instructions": "Does this convey urgency?"
          },
          "department": {
            "type": "choice",
            "instructions": "Which team should handle this?",
            "criteria": {
              "billing": "Payments, invoicing, refunds",
              "technical": "Bugs, outages, integrations",
              "sales": "Pricing, upgrades, new accounts"
            }
          },
          "frustration": {
            "type": "score",
            "instructions": "How frustrated is the customer?",
            "criteria": ["Calm", "Frustrated", "Very angry"]
          }
        }
  config:
    - name: api_key
      value: "{{secrets.TYPESAFE_API_KEY}}"
```

Answers come back under the same ids, e.g. `{{steps.triage.result.answers.department.choice}}` or `{{steps.triage.result.answers.is_urgent.noul}}`.
