judgevet
Typed client, CLI and MCP server for TypeSafe's Jev (System One) judgment model.
Status: draft
The response shape is verified. The error surface is partly verified. Everything else is still inferred from documentation.
A live-marked test passes against the real API, and three probe calls on
2026-09-21 settled what had been guesswork:
- The success shape parses field for field — including the parts easiest to
get wrong. A noul answer carries no
confidencewhile choice and score do;scoreis continuous, not an index;legendis a map keyed by stringified position. The real probabilities summed to exactly 1.0, the choice appeared in its own map, and the score sat inside its legend, so the domain's invariants do not reject real data. modelin a response is the resolved version. Sendingjev-latestreturnedjev-1.13.0.detailon an error is polymorphic: an object for authentication errors, an array for validation errors. Documentation did not say so, and code that assumes either shape breaks on the other.
Still inferred, and marked as such in STATUS.md: the 429 and 529 bodies —
one needs abusing the service, the other cannot be provoked — every model
other than jev-1.13.0, and any field no call has exercised.
Not stable: one model and two error statuses is not the whole surface.
What Jev is
Jev is not a chat model and not a coding model. You send it a piece of state and a set of typed questions, and it returns one answer per question with a calibrated probability:
| question | answer |
|---|---|
Noul |
yes/no, with a probability |
Choice |
one option from a set you defined, with per-option probabilities |
Score |
a position on a scale you defined, with a legend |
Every answer carries a confidence. That makes it a decision primitive your code
can branch on, sort by, and route with — a smart if rather than a paragraph.
Why this client exists
Several MCP servers for Jev appeared within days of its launch, all MCP-only. An MCP server cannot be called from a script, a pre-commit hook, or CI without standing up a client first.
Here the library is the artifact. The CLI and the MCP server are two inbound adapters over one contract-tested core:
domain/ question and answer types, calibrated probabilities — pure
ports/ protocols the domain calls out through
adapters/outbound/ HTTP to the Jev API
adapters/inbound/ cli.py — scripts, hooks, CI
mcp.py — agents
import-linter enforces that map, and keeps the optional MCP runtime out of
everything but its own adapter.
Use
uv sync
uv run jev --help
The MCP server is an optional extra, so the library and CLI install without an MCP runtime:
uv sync --extra mcp
Gates
uv run ruff check . && uv run ruff format --check .
uv run ty check
uv run lint-imports
uv run docvet check
uv run pytest -q --cov
Coverage floor is 90%. live-marked tests touch the real API and are excluded
by default.
Sister projects
Shares the toolchain and hex layout used by automarket, vramfit and docvet.
Release files for judgevet 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| judgevet-0.1.0.tar.gz | 26.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| judgevet-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.8 kB
Release files / judgevet-0.1.0.tar.gz
| Download URL | judgevet-0.1.0.tar.gz |
|---|---|
| Size | 26.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a3fb9b7d34945fb5781f4856993611e42200449206fec4a5d596fcd4b8d9434
|
|
BLAKE2b-256 checksum How to use checksums |
bb70ba5945520dceaa1def86fcd67c50112d09cd849287ae3f161e78f13999d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / judgevet-0.1.0-py3-none-any.whl
| Download URL | judgevet-0.1.0-py3-none-any.whl |
|---|---|
| Size | 34.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ef79964aec2f2bafa329925e9532cfe1aac4f56340b0d39e44a9cfa1d5ca572
|
|
BLAKE2b-256 checksum How to use checksums |
4055e4f48f0045c0659c56dece1a3e4665f179153ad4f5bc7d47f6bae269c1a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|