Claude and Jev handle different parts of a task. Claude can understand a request, write code, or draft a customer reply. Jev receives a carefully defined state and question, then returns a typed decision, such as a probability for yes. OpenRouter serves it through a separate Decisions API. It does not replace Claude as the main chat model. S36 This guide covers two levels: an on-demand helper called from Claude Code and an advanced hook for routine command permissions.
How to divide the work
Imagine a message saying, “Please send an invoice for order 123.” Claude can draft a polite reply. Jev can answer the narrow question “Is the customer requesting an invoice?” with a numeric yes score. An online shop can similarly identify complaints, delivery questions, and return requests. Claude treats that judgment as one input and asks for human review when the case is unclear. Jev neither writes the reply nor sends anything by itself. S36
OpenRouter also has a live example where Claude converts ordinary instructions into typed questions and Jev applies them to many records. This separates designing a rule from repeatedly evaluating individual messages. S41 If you have not made an API call yet, start with our first Jev test without an invitation.
The simplest Claude Code connection
You need Claude Code on your computer and an OpenRouter API key with a spending limit. Keep the key in a local secret store or the environment of the process calling the API. Never put it in a Claude prompt, CLAUDE.md, a public repository, or browser code. The helper should read an input, call POST https://openrouter.ai/api/alpha/decisions with model typesafe/jev-1.13, and return only the decision, probabilities, and request cost. S36
Paste the following task into Claude Code inside your project. Ask Claude to show the proposed files and the known-answer test before using the helper on real customer messages:
In this project, add a local Jev decision helper for Claude Code.
Use OpenRouter Decisions API POST https://openrouter.ai/api/alpha/decisions
with model typesafe/jev-1.13. The helper must accept a state,
one narrow yes/no question, and explicit true/false criteria.
Return the Noul yes probability, the no probability, model ID,
and API cost as structured JSON.
Keep the OpenRouter API key in a local secret store or a server-side
environment variable with a spending limit. Never put the key in
CLAUDE.md, prompts, source control, browser code, or logs. Do not
change Claude's model provider or existing authentication.
First show me the files you plan to create. Then implement the
smallest local helper and test it with a known invoice-request message
and a known non-invoice message. On API error, timeout, or malformed
response, return "unknown"; never invent a decision. Do not use this
helper to auto-approve deployment, deletion, payment, or access to
credentials. Keep the usual human permission prompts.
This asks Claude to build a local helper script. It is not an instruction to paste a secret into a chat. One test should have a known yes answer, and another a known no answer. If the API fails, the result should be “unknown.” Decide in advance who acts on each result, and describe both true and false criteria explicitly. OpenRouter calls this yes-or-no question type noul. S36
Advanced option: Jev at Claude's permission prompts
Claude Code supports hooks that run on particular events. A PermissionRequest hook can run when Claude Code is about to request permission for a command. OpenRouter's official recipe calls Jev at that point and automatically allows only routine, reversible commands that meet the policy and match the task. An uncertain result leaves the normal user prompt in place. S39 S40
Use this carefully. The OpenRouter recipe first filters risky commands with fixed rules in code. Deletion, deployment, force pushes, and reading credential files should never depend on automatic model approval. Jev evaluates only the remaining requests. The recipe uses a threshold of 0.9 but says to check it against your own commands. S39 The complete script and its registration in .claude/settings.json are in the official OpenRouter guide. You do not have to move all Claude traffic to OpenRouter just for a separate helper to call Jev.
What to verify before enabling it
Try two or three messages with known answers. Confirm that the helper reads the right input and exposes uncertainty. Then test a network outage or invalid key: it should return an error or “unknown,” never an invented percentage. Record the model version and cost without logging the key or unnecessary personal data. For automatic permissions, keep a fixed list of forbidden operations and a human prompt for everything else. S39
Our brief Jev experiments showed why one question should clearly map to one input. Several football matches placed in a shared state produced suspiciously similar answers; separate matches changed the outcomes. Use Jev alongside Claude mainly for bounded classification and checks, not as a source of facts or a prediction engine. Claude can explain the result and its limits. Anything that could delete, send, or pay should retain a clear human or deterministic control.
JEV.sk is an independent information site and is not partnered with TypeSafe AI, OpenRouter, or Anthropic.
Sources and level of verification
- S36How to Use Jev: Moderation with the Jev API in TypeScript ↗
OpenRouter · Primary source retrieved · check attempted 28 September 2026
- S41Prompt to questions ↗
OpenRouter · Primary source retrieved · check attempted 28 September 2026
- S39Auto-Approve Coding Agent Permission Prompts with Jev ↗
OpenRouter · Primary source retrieved · check attempted 28 September 2026
- S40Hooks reference ↗
Anthropic · Primary source retrieved · check attempted 28 September 2026