Skip to main content
Glama

English | 简体中文

jev-mcp-server

CI PyPI Python License: MIT

MCP server for Jev (TypeSafe System One) — a faithful mapping of the three official question types, plus batch classify.

When your coding agent needs a judgment — which log line is the root cause, how risky is this diff, is this change breaking — it usually burns a frontier LLM call and gets prose back. Jev answers with a typed decision and calibrated probabilities in a fraction of a second, for a fraction of a cent:

Question type

Tool

Returns

Measured*

choice

pick 1 of 2-100 options

winner + probabilities over ALL options + confidence

~0.6 s, ~$0.00002

score

grade on a rubric of 2-8 levels

fractional index + per-level probabilities

~0.5 s, ~$0.00002

noul

yes / no

0-1 degree

~0.4 s, ~$0.00001

classify

label up to 100 items

per-item choice + aggregate summary

~0.5 s × items

* Measured against jev-1.13.0, 2026-09, from real sessions (see Benchmarks).

Why this one

  • 1:1 with the official API. Tool names match the System One question types (choice / score / noul), so anything you learn from TypeSafe's docs transfers directly. No invented abstractions.

  • Decisions, not explanations. Jev never returns reasons — any "why" your assistant writes is its own interpretation of the probability distribution. The README (and the tool docs) say so explicitly, so reports built on top stay honest.

  • Batch classify for routing/labeling workflows, with per-item caching.

  • One-time setup tool: paste your API key once in chat; it's verified live, stored with 0600 permissions, and never echoed back.

  • Bilingual docs (English / 简体中文), configs for Claude Code, Codex, OpenCode, pi, and any stdio MCP client.

  • Offline-tested (no network in CI), retries on 429/503/529, response validation (probabilities sum to 1, winner is the max), optional response cache.

Related MCP server: jev-mcp

Quickstart

  1. Get a TypeSafe API key at console.typesafe.ai/settings/keys.

  2. Register the server with your client (pick one below).

  3. Either export TYPESAFE_API_KEY, or just ask your agent: "run the jev setup tool with key tsk_...".

Claude Code

claude mcp add jev --env TYPESAFE_API_KEY=YOUR_KEY -- uvx jev-mcp-server

Codex (~/.codex/config.toml)

[mcp_servers.jev]
command = "uvx"
args = ["jev-mcp-server"]
env = { TYPESAFE_API_KEY = "YOUR_KEY" }

OpenCode (~/.config/opencode/opencode.json)

{
  "mcp": {
    "jev": { "type": "local", "command": ["uvx", "jev-mcp-server"], "enabled": true }
  }
}

pi (~/.pi/agent/mcp.json)

{
  "mcpServers": {
    "jev": { "command": "uvx", "args": ["jev-mcp-server"], "lifecycle": "lazy" }
  }
}

Any stdio MCP client

{ "command": "uvx", "args": ["jev-mcp-server"] }

From source (this repo)

{ "command": "uv", "args": ["run", "--directory", "/path/to/jev-mcp-server", "jev-mcp-server"] }

Tools

choice(question, options, context="")

Pick ONE of 2-100 mutually exclusive options. Returns probabilities over all options (near-ties are visible), confidence, and the runner-up.

{"choice": "E1", "confidence": 0.67,
 "probabilities": {"E1": 0.72, "E6": 0.2, "E5": 0.05, "E2": 0.01, "E3": 0.01, "E4": 0.01},
 "runner_up": "E6", "model": "jev-1.13.0", "latency_ms": 678,
 "usage": {"input_tokens": 1677, "output_tokens": 66}}

score(question, levels, context="")

Grade on an ordered rubric of 2-8 levels. score is a fractional 0-based index: 2.22 with levels ["minor","moderate","severe","critical"] means severe, leaning critical.

{"score": 2.22, "nearest_level": "severe", "confidence": 0.59,
 "probabilities": {"severe": 0.6, "critical": 0.2, "moderate": 0.2}, "...": "..."}

noul(question, context="")

Yes/no with a 0-1 degree (>= 0.5 leans yes). No probability list — the degree is the answer.

{"noul": 0.76, "verdict": "yes", "model": "jev-1.13.0", "latency_ms": 402, "usage": {"...": "..."}}

classify(items, options, question=..., context="")

Batch-label up to 100 items against one shared category set. One choice call per item, aggregated:

{"results": [{"item": "ticket #1", "choice": "billing", "confidence": 0.81, "probabilities": {"...": "..."}}],
 "summary": {"billing": 12, "bug": 7, "howto": 3},
 "usage": {"input_tokens": 8210, "output_tokens": 210, "calls": 22, "cached_calls": 0}}

setup(api_key)

One-time onboarding: verifies the key with a live call, stores it at ~/.config/jev-mcp/key (0600), never echoes it. An env var TYPESAFE_API_KEY always wins over the stored file.

Caching (off by default)

Set JEVMCP_CACHE=1 to enable. The cache key is the SHA-256 of the exact question payload, so:

  • Identical repeated decisions (retries, re-runs, deterministic pipelines) return in ~0 ms at zero API cost; usage then reports {"cached": true}.

  • classify benefits automatically: duplicate items inside one batch are single-billed.

Keep it off when decisions must stay fresh (live triage of changing data). Cache files live in ~/.cache/jev-mcp/ (override with JEVMCP_CACHE_DIR); delete them anytime.

Configuration

Variable

Default

Purpose

TYPESAFE_API_KEY

API key (env wins over the file written by setup)

JEVMCP_MODEL

jev-latest

Model name sent to the API

JEVMCP_BASE_URL

https://api.typesafe.ai/v1/systemone

Point at a compatible gateway (experimental)

JEVMCP_CACHE

off

1/true enables the response cache

JEVMCP_CACHE_DIR

~/.cache/jev-mcp

Cache location

JEVMCP_CONFIG_DIR

~/.config/jev-mcp

Where setup stores the key

Note on OpenRouter: Jev was announced for OpenRouter (~typesafe/jev-latest), but at publish time it does not appear in OpenRouter's public model catalog, and we could not verify a compatible call shape. If you route Jev through a gateway, set JEVMCP_BASE_URL accordingly and please open an issue with your findings.

Decisions, not explanations

Jev's contract is: a decision, calibrated probabilities, and nothing else — no rationale text. That is why it is fast and cheap. When your assistant narrates "jev chose E1 because...", that explanation is the assistant's interpretation of the numbers, not Jev's output. For formal reports (root-cause analyses, review verdicts), either let the LLM reason itself, or use the two-step pattern — Jev decides, LLM explains, clearly labeled.

Benchmarks

Measured 2026-09 against jev-1.13.0, single questions, real sessions:

Call

Latency

Input tokens

Output tokens

choice, 6 options

615-678 ms

344-1677

31-66

score, 3 levels

~500 ms

~350

~30

noul

~400 ms

~300

~25

At $42 / 1B input tokens a typical call costs ≈ $0.00002 — roughly two orders of magnitude below a frontier-LLM judgment call.

Alternatives (fair and square)

  • jkudish/jev-mcp — Node/npm, ten opinionated workflow tools (verify, screen, rerank, gate...). Pick it if you want ready-made agent-safety workflows.

  • itsmostafa/typesafe-mcp — Go binary, one generic evaluate tool, one-command client setup.

jev-mcp-server is the close-to-the-metal option: the three official question types, named exactly as TypeSafe names them, with batch classify, bilingual docs, and measured numbers. Pick whichever fits your taste — they're all MIT.

Development

uv sync
uv run ruff check .
uv run pytest -q

Tests are fully offline (the HTTP layer is mocked; CI never spends API credits).

License

MIT

Available Tools

5 tools
choiceA

Ask Jev (TypeSafe System One) to pick ONE of 2-100 mutually exclusive options, with calibrated probabilities.

The official choice question type — for fast, cheap structured decisions: triage, routing, classification, prioritization, tie-breaking among enumerated candidates. Returns probabilities over ALL options (not just the winner), so near-ties are visible. NOT for open-ended generation or multi-step reasoning — use an LLM for those.

Args: question: The decision, e.g. "Which error class is most likely the root cause?" options: Mapping of short unique id -> one-line description. 2-100 options. context: Optional background facts that inform the decision. Keep it short.

Returns: JSON string: {choice, confidence, probabilities (sorted desc), runner_up, model, latency_ms, usage}

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
optionsYes
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses calibrated probabilities, that the response covers ALL options so near-ties are visible, and the exact JSON return shape including choice, confidence, probabilities, runner_up, model, latency_ms, and usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured: a lead sentence, a use-case paragraph, an Args block, and a Returns block. Every sentence contributes useful information, and the most decision-relevant constraints are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, the description is nearly self-contained: it covers purpose, parameters, output, constraints, and exclusions. It does not mention error/validation behavior, such as what happens with fewer than 2 options or malformed option values, which is a minor gap for a tool that otherwise documents its contract well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates for all three parameters: `question` is clarified with a concrete example, `options` is constrained to a mapping of short unique ids to one-line descriptions with a 2-100 count bound, and `context` is marked optional and advised to be short. This adds substantial meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise operation: ask Jev to pick one of 2-100 mutually exclusive options with calibrated probabilities, and names typical decision uses like triage, routing, classification, prioritization, and tie-breaking. It is clearly scoped, but it does not explicitly differentiate itself from the sibling `classify` and `score` tools, whose purposes overlap with 'classification' and 'prioritization'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context ('fast, cheap structured decisions') and clear when-not-to-use guidance ('NOT for open-ended generation or multi-step reasoning'), including an alternative ('use an LLM for those'). However, it does not address how `choice` relates to the sibling tools `classify` and `score`, leaving some selection ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classifyA

Batch-classify up to 100 items against ONE shared set of categories using Jev.

Runs the official choice question type once per item and aggregates the results — routing support tickets, labeling log lines, triaging inbox items against your own label set. Much cheaper and faster than an LLM for mechanical labeling.

Args: items: 1-100 non-empty strings to classify. options: Mapping of short unique id -> one-line category description. 2-100 options. question: Per-item question; the item itself is appended automatically. context: Optional background facts shared by all items.

Returns: JSON string: {results: [{item, choice, confidence, probabilities}], summary (counts per choice, sorted desc), model, total_latency_ms, usage: {input_tokens, output_tokens, calls, cached_calls}}

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
contextNo
optionsYes
questionNoWhich category does this item belong to?

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool runs 'choice' once per item, automatically appends the item to the question, aggregates results, and returns a detailed JSON structure including confidence, probabilities, summary counts, latency, and usage. It does not discuss error behavior or potential costs, but it gives a strong operational picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise summary sentence, use cases, an Args section, and a Returns section. Every part earns its place: the summary explains what the tool does, Args documents each parameter, and Returns tells the agent exactly what to expect. There is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with four parameters and a structured return value. The description covers parameters, constraints, execution behavior, and the complete return shape. It could be slightly more complete by explaining what 'Jev' is or clarifying error modes, but nothing essential is missing for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It does: items are '1-100 non-empty strings,' options are a 'Mapping of short unique id -> one-line category description' with '2-100 options,' question has a default and is auto-appended with the item, and context is optional. This adds meaningful constraints and semantics beyond the plain JSON schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states the core action: 'Batch-classify up to 100 items against ONE shared set of categories using Jev.' It also explains that it wraps the 'choice' question type and aggregates results, which differentiates it from the single-item sibling tool 'choice'. Concrete examples like routing support tickets and labeling log lines further clarify the intended resource and function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool, such as 'routing support tickets, labeling log lines, triaging inbox items' and says it is 'Much cheaper and faster than an LLM for mechanical labeling.' It does not explicitly state when not to use it or contrast it directly with sibling alternatives, but the batch-vs-single distinction is implied through the 'choice question type once per item' phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noulA

Ask Jev (TypeSafe System One) a yes/no question; returns a 0-1 degree (>= 0.5 leans yes).

The official noul question type — fast, cheap binary checks: "is this change breaking?", "does this log line match the reported symptom?". No probability list, just the degree. NOT for questions that need multi-step reasoning — use an LLM for those.

Args: question: A yes/no question, e.g. "Is renaming a public config key a breaking change?" context: Optional background facts. Keep it short.

Returns: JSON string: {noul, verdict, model, latency_ms, usage}

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose the output format (JSON string with specific fields), the threshold semantics (>= 0.5 leans yes), and performance characteristics ('fast, cheap'), which is useful. However, it omits details like error behavior, rate limits, or authentication requirements. While these are not critical for a simple query tool, the description is not exhaustive, warranting a score of 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: it leads with the core purpose, then usage examples, a clear exclusion, and a concise Args/Returns breakdown. Every sentence adds value, and there is no redundancy or filler. The structure is front-loaded and easy to scan for a quick decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, output schema present), the description covers all essential aspects: what it does, when to use it, what parameters mean, and what to expect in the return value. The output is described structurally, and the tool's scope is well-defined. There is no missing information that would prevent an agent from invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the sole source of parameter meaning. It clearly defines 'question' as a yes/no question with an example, and 'context' as optional background facts with a length guideline ('Keep it short'). This compensates for the lack of schema documentation, though it could go further (e.g., explaining how context affects output). Still, it provides meaningful semantics beyond the bare schema field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Ask Jev a yes/no question'), defines the input (yes/no question) and output (0-1 degree with threshold), and gives concrete examples. It clearly communicates the tool's core function and distinguishes it from general LLM use by explicitly stating it is for binary checks only. Even without naming siblings, the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('fast, cheap binary checks') with real examples, and when not to use it ('NOT for questions that need multi-step reasoning') with a clear alternative ('use an LLM'). This provides strong usage guidance that helps an agent select this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scoreA

Ask Jev (TypeSafe System One) to grade something on an ORDERED scale of 2-8 levels.

The official score question type — risk/severity/quality rubrics, e.g. levels ["minor", "moderate", "severe", "critical"]. Returns a fractional 0-based index into levels (1.88 = between levels[1] and levels[2], leaning to levels[2]), plus confidence and per-level probabilities.

Args: question: What to grade, e.g. "Regression risk of renaming public config key X". levels: 2-8 unique ordered scale points, low to high. context: Optional background facts. Keep it short.

Returns: JSON string: {score, nearest_level, confidence, probabilities (sorted desc), model, latency_ms, usage}

ParametersJSON Schema
NameRequiredDescriptionDefault
levelsYes
contextNo
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does a good job: it explains the fractional 0-based index semantics, confidence, per-level probabilities, and the full JSON return shape. It could add side-effect or read-only clarity, but for a grading tool the described behavior is unusually well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized with an introductory sentence followed by Args and Returns sections. It is reasonably tight, though a few phrases like 'Ask Jev' and 'The official score question type' add flavor without much technical value. Overall, every major section earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all three parameters, return values, constraints, and an example. Since an output schema exists, the detailed return enumeration is a bonus. The main missing piece is explicit guidance on choosing this over sibling tools, but the tool is otherwise complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: 'question' is explained with an example, 'levels' is constrained to 2-8 unique ordered scale points low-to-high, and 'context' is marked optional with usage guidance. This adds meaning well beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Ask Jev (TypeSafe System One) to grade something on an ORDERED scale of 2-8 levels.' It clearly identifies the 'official score question type' and gives concrete examples like risk/severity/quality rubrics. This makes it easy to distinguish from siblings such as classify or choice because the ordered-scale scoring semantics are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: grading on an ordered scale, with examples and a concrete question phrasing. It does not explicitly mention alternatives or when not to use it, but the contrast with classification-style tasks is strongly implied by the ordered-levels emphasis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setupA

One-time onboarding: verify a TypeSafe API key with a live call, then store it locally.

Use when TYPESAFE_API_KEY is not set in the server environment: pass your key once (get one at https://console.typesafe.ai/settings/keys). It is verified against the live API, then saved to ~/.config/jev-mcp/key (permissions 0600) and never echoed back. An existing TYPESAFE_API_KEY env var always takes precedence over the stored file.

Args: api_key: Your TypeSafe API key (from console.typesafe.ai/settings/keys).

Returns: JSON string: {ok, stored_path, verified}

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the behavior: the key is verified against the live API, saved to ~/.config/jev-mcp/key with permissions 0600, never echoed back, and env var takes precedence. This is exactly the behavioral context an agent needs to anticipate side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by usage conditions, parameter meaning, and return format. Every sentence adds substantive detail without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter onboarding tool, the description covers when to use it, how the key is handled, where it is stored, permissions, precedence, and the return value. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no description for api_key (0% coverage), so the description must compensate. It does so by stating that api_key is the TypeSafe API key and telling the user where to obtain one, which fully clarifies the parameter's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a precise action: verify a TypeSafe API key with a live call and store it locally. It clearly identifies the tool as one-time onboarding, which distinguishes it from the unrelated sibling tools (noul, choice, score, classify).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger condition: 'Use when TYPESAFE_API_KEY is not set in the server environment.' It also explains precedence behavior with an existing env var, so an agent knows when this tool is appropriate and when it is unnecessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedchoice
    • First observedclassify
    • First observednoul
    • First observedscore
    • First observedsetup

TDQS

A4.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: setup handles key onboarding, while noul, choice, score, and classify map to different question types (binary, single-choice, ordered-scale, batch). The descriptions explicitly call out boundaries, such as noul being for yes/no only and classify being a batched version of choice.

Naming Consistency4/5

Tool names are all single lowercase words with no mixed conventions, which keeps them readable and predictable. The slight deviation is that setup describes an action while noul, choice, score, and classify follow the official TypeSafe question-type naming, but this is minor and does not cause confusion.

Tool Count5/5

Five tools is well-scoped for a focused Jev/TypeSafe MCP server: one setup tool plus four distinct query/question types. Each tool maps to a clear capability and none feel redundant or missing.

Completeness5/5

The tool surface covers the full apparent lifecycle of using Jev: setup for authentication and noul/choice/score/classify for the available question types. There are no obvious dead ends—setup returns verification, every query tool returns structured results, and classify aggregates batch outputs.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables typed, calibrated judgment calls through classify, score, check, and batched ask tools, each returning full probability distributions for programmatic decisions.
    5
    220 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to call TypeSafe's JEV classifier and receive structured, typed judgments with probabilities for binary, choice, and scoring questions.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP hosts to query Jev's typed decision model—yes/no, choice, and score—with calibrated probabilities, while defaulting to an offline mock and disclosing all egress unless explicitly enabled.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to consult TypeSafe's Jev through a judge tool, answering narrow typed questions with calibrated probabilities instead of prose.
    MIT