typesafe
jev.
Ask Jev typed questions about one state and get answers with probabilities.
setup & usage
jev is a TypeSafe model served by OpenRouter: the key is an OpenRouter API key (starts with sk-or-), not a TypeSafe key — there is none. It is a shared key: either the tenant's, set once for all its organizations, or a key set at the platform level of the instance and granted to the organizations it serves.
jev returns a typed answer with its probability, never text: yes/no (noul), a choice among options (choice), a position on an ordered scale (score). It pays off on batches: a single case the agent can judge itself does not need jev.
jev_items: one rubric, N states, nothing written; a batch that runs out of time (~40 s) returns what was answered and, in retry, the states to send againjev_rows: the server reads, judges and writes back (answer, <col>_p confidence, model); only rows with an empty model_column, so a re-run resumes; dry_run on known cases firstjev_rows(background=true) after the dry run: one call returns a job_id, the server judges every matching row itself, slice by slice; follow it with jev_job(op='status') every minute or so, stop it with jev_job(op='cancel'). A dropped connection doesn't stop it; a revoked key or a spent quota does, at the next slice (what was judged stays written and billed). One active job per table and model_columnjev_rows creates missing output columns (choice → enum of its criteria, score/noul → number, plus <col>_p and model_column); an existing column is never changed, and a type mismatch is refusedjev_ask with the row's state and a noulA probability near 0.5 means "as likely as not", never "medium".
confidence describes how concentrated the distribution is, not how safe the next step ischoice ALWAYS answers, even when the question does not apply: read the filtering noul first, or add a "none" option and check its probabilitymodel: store it next to the answer, it makes a threshold reproducibleOnly input is billed, output is free, and every response carries usage.cost, the real cost in dollars — that is what gets billed, not a call count.
outils
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto jev …