Skip to content

Strands Jev

Typed questions. Calibrated answers.

Jev is TypeSafe's System One model: it reads one piece of state and answers yes/no, pick-one and rate-it questions with probabilities, in one request, without generating a word. These tools let a Strands Agent ask it. The chat model proposes; Jev decides.

Start The tools pip install git+https://github.com/cagataycali/strands-jev
state

Help! My payouts have been failing for 3 days.

questions
  • noul Does this convey urgency?
  • choice Which team? billing · technical · sales
  • score How frustrated is the writer? calm · frustrated · very angry
answers
urgent0.95
teambilling0.98
frustrationfrustrated0.94

one request, 178 ms, 434 input tokens, recorded 2026-09-29 against jev-1.13.0

19tools an agent can call, in 3 groups
184live cases measured against a code baseline: Jev 169, baseline 104
175ms mean latency per request across 210 live calls

Start

Install, put the key in place, make one decision from Python, hand the tools to an agent, read the bill.

Learn

System One in one page. Noul, Choice and Score. State, confidence, the patterns, and what not to ask.

Tools

Every @tool, generated from the specs the agent reads: parameters, result shape, the docs page it ports, its live score.

Measured

Every tool against the deterministic code a developer would write instead. Real numbers, real cost, dated and versioned.

Project

The design grid, key handling and what leaves the machine, the changelog, how to contribute.

One call, any mix of questions

from strands import Agent
from strands_jev import ALL_TOOLS

agent = Agent(tools=ALL_TOOLS)
result = agent.tool.jev_ask(
    state="Help! My payouts have been failing for 3 days.",
    questions={
        "urgent": {"type": "noul", "instructions": "Does this convey urgency?"},
        "team": {"type": "choice", "instructions": "Which team?", "criteria": {"billing": "payments", "technical": "bugs", "sales": "plans and pricing"}},
        "frustration": {"type": "score", "instructions": "How frustrated is the writer?", "criteria": ["calm", "frustrated", "very angry"]},
    },
)
print(result["content"][1]["text"])

The direct call skips the chat model. agent("Is this ticket urgent, and who should take it?") lets the model pick the tool and write the questions itself. Either way the request is one HTTP call billed at $0.042 per million input tokens, output free. Start here.

A chat model proposes. Jev decides.