benjivers/jev-mcp Public Public: anyone can read this; nobody can change it.

workbenchthis machine
Files 70d5d708f3dbeab8fa42d6f7ad0e6733dfd66f3b
115 lines · 5.1 KB · ~1.3k tok Raw History
1
---
2
name: jev
3
description: >
4
  Get typed, calibrated judgments from the connected `jev` MCP tools when the same
5
  semantic decision repeats across many items — triaging files, ranking candidates,
6
  checking claims against their sources, scoring a diff against each requirement — or
7
  when you need a calibrated number to threshold on. Prefer an ordinary answer for a
8
  single judgment in conversation. Not for judgments that ship inside the user's
9
  application; those belong in SDK code, not in a tool call.
10
---
11
12
# Jev judgments over MCP
13
14
Jev is a System One model. It returns a typed answer and a calibrated probability
15
distribution, never prose. The `jev` MCP server exposes it as five tools.
16
17
This skill covers **when to call those tools and how to shape the call**. For the
18
underlying theory — primitive semantics, state design, composition patterns — use the
19
`typesafe-ai` skill or the live docs at <https://docs.typesafe.ai>. Do not duplicate
20
that material here.
21
22
If the `jev_*` tools are not in your tool list, this skill does not apply. Call
23
`jev_models` to confirm the key works before assuming a failure is your own.
24
25
## Three-way test
26
27
Decide which of these you are in before calling anything.
28
29
**Answer it yourself** when the judgment happens once, in conversation, and you can
30
explain your reasoning. That is most judgments. An ordinary answer carries an argument
31
the user can push back on. Jev returns a number and a label, which is weaker in
32
dialogue. Do not reach for a tool to look rigorous.
33
34
**Call the tool** when the same judgment repeats across many items, or when you need a
35
calibrated number to threshold on. Triaging forty files. Ranking twenty candidates.
36
Checking fifteen claims against their sources. Scoring a diff against each requirement
37
in a spec. Enumerate the candidates in code or by hand first; Jev only selects among
38
what you supply. Nothing is installed and no key is configured; the server holds it.
39
40
**Write SDK code** when the judgment runs in the user's application, on their traffic,
41
after you are gone. Then it belongs in their repo under test, not in a transcript.
42
Follow the `typesafe-ai` skill for that.
43
44
Do not call a tool to prototype what will become shipped code. Write the code.
45
46
## Pick the tool
47
48
| The answer is | Tool | Notes |
49
| --- | --- | --- |
50
| One of a set you define | `jev_classify` | You supply `options`. Jev cannot invent one. |
51
| A degree on an ordered scale | `jev_score` | You supply `levels`, lowest first, at least two. |
52
| Yes or no | `jev_check` | Returns the probability of yes. No separate confidence. |
53
| Several questions, one subject | `jev_ask` | Mixes all three types. Up to 64 questions. |
54
55
When several labels can be true at once, that is not one `jev_classify`. It is one
56
`jev_check` per label, batched through `jev_ask`.
57
58
## Prefer `jev_ask`
59
60
Jev prefills the state once and scores every question in one forward pass. Extra
61
questions add almost no latency or cost. One batched call beats a loop by a wide
62
margin on document-heavy state.
63
64
So ask everything you might need, including speculative branches. Questions cannot see
65
each other's answers, so state any premise explicitly in the question itself. Let your
66
own reasoning decide which answers apply afterwards.
67
68
Give each question a stable `id`. The id is never sent to the model, so the question
69
must carry its full meaning on its own.
70
71
## Shape the call
72
73
Put the evidence in `state`. A string for text, an object or array when it has parts.
74
Include what the question needs to be answerable: the diff, the requirement, the
75
relevant file, the prior decision.
76
77
Put the judgment in `question`. State it in full. This is the only instruction Jev sees.
78
79
Describe every option and level concretely. A level must stand on its own without
80
reading its neighbours. Weak option descriptions are the most common cause of a bad
81
answer.
82
83
Leave `add_none` alone unless one option must always apply. The default no-match option
84
lets Jev decline rather than being forced into a wrong pick.
85
86
## Read the answer
87
88
Never act on the label alone. Every response carries the full distribution.
89
90
`jev_classify` and `jev_score` return `action`: `act`, `review`, or `abstain`. It is
91
derived from `confidence` against `act_above` and `review_above`. `jev_check` returns
92
`verdict`: `yes`, `no`, or `uncertain`.
93
94
Treat `review` and `uncertain` as instructions to look at the evidence yourself, not as
95
a soft yes. Raise the thresholds when being wrong is expensive, and say that you did.
96
97
Confidence measures how concentrated the distribution is. It is not a claim that the
98
answer is correct. Two good options split probability and look uncertain.
99
100
For `jev_score`, the number is a position on the `levels` array you supplied. Read
101
`legend` to map it back.
102
103
For `jev_classify`, check `none_option` before interpreting a no-match result. If you
104
already used the name `none`, the added option took a different key.
105
106
## Do not
107
108
Do not present a Jev answer as fact. Report the answer, the confidence, and what you
109
did about it.
110
111
Do not batch questions about unrelated subjects. One state, one subject.
112
113
Do not use a Score for a category, or a Choice for a degree.
114
115
Do not paste secrets, keys, or credentials into `state`.
↑↓ navigate ↵ open esc close
↑↓ navigate ↵ open esc close

Keyboard shortcuts