Skip to main content
Glama

jev-mcp

An MCP server that gives any agent (Claude Code, Codex, Cursor, Pi, โ€ฆ) fast, typed, calibrated decisions from Jev, TypeSafe AI's System One model โ€” classify, score, check yes/no, and gate risky tool calls, all as one API call under the hood.

๐Ÿงช Try Jev free in your browser (no waitlist): jevtypesafeai.com Independent playground & guide. Not affiliated with TypeSafe AI.

Jev doesn't write text โ€” it reads your state and returns a choice, a score, or a probability in 70โ€“500 ms, for ~$0.0004 a decision. That makes it a great "fuzzy if" inside the agent loop: routing, guardrails, scoring, filtering. jev-mcp exposes that as plain MCP tools your agent can call.

Tools

Tool

What it does

jev_classify

Pick one of labelled options (routing, categorization, intent)

jev_score

Rate the input on an ordered scale you define (risk, urgency, quality)

jev_check

Calibrated yes/no probability (gates, filters, guardrails)

jev_gate

Risk-screen an action before it runs โ†’ allow / confirm / block

jev_decide

Full power: many typed questions in one round trip

Related MCP server: sentinel-mcp

Install

You need a Jev API key. Get one at console.typesafe.ai, or use a gateway (Vercel AI Gateway, OpenRouter, Cloudflare) and point JEV_BASE_URL at it.

Runs straight from GitHub with npx โ€” no clone, no build.

Claude Code

claude mcp add jev -e TYPESAFE_API_KEY=your_key -- npx -y github:codaaiteam/jev-mcp

Any MCP client (.mcp.json / config)

{
  "mcpServers": {
    "jev": {
      "command": "npx",
      "args": ["-y", "github:codaaiteam/jev-mcp"],
      "env": { "TYPESAFE_API_KEY": "your_key" }
    }
  }
}

That's it โ€” your agent now has jev_classify, jev_score, jev_check, jev_gate, jev_decide.

Once this is on npm you can shorten github:codaaiteam/jev-mcp to just jev-mcp.

Configuration

Env

Default

Notes

TYPESAFE_API_KEY

โ€”

Your Jev key (aliases: JEV_API_KEY, JEV_KEY). Required.

JEV_BASE_URL

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

Override to route through a gateway.

JEV_MODEL

jev-latest

Pin a version (e.g. jev-1.13.0) in production.

Examples

Guardrail a shell command before running it:

jev_gate({
  action: "rm -rf ./dist && aws s3 sync ./build s3://prod-assets --delete",
  context: "agent is deploying a frontend build"
})
โ†’ { "recommendation": "confirm", "risk_score": 2.8, "touches_prod": true, ... }

Route a request to the right model:

jev_classify({
  state: "Refactor auth to multi-tenant SSO with SAML + SCIM, keep back-compat.",
  instructions: "Which model tier should handle this?",
  options: { fast: "trivial edits", balanced: "normal work", strong: "hard architecture" }
})
โ†’ { "choice": "strong", "confidence": 0.99, "probabilities": { ... } }

Check before auto-approving user content:

jev_check({ state: "<user comment>", instructions: "Is this safe to auto-publish?" })
โ†’ { "probability": 0.12, "likely": false }

How it works

Every tool is a thin wrapper over one Jev call โ€” state + typed questions โ†’ typed answers. The value is in where you call it (the agent-loop hook) and what you ask. Because the answer type is fixed by the request, Jev can't hallucinate a format or emit an invalid type.

License

MIT. "Jev", "System One" and "TypeSafe AI" belong to their respective owners.

Available Tools

5 tools
jev_checkCheck (yes/no probability)A

Answer a yes/no question about the state as a calibrated probability from 0 to 1. Use for gates, filters, and guardrails (e.g. 'Is this safe to auto-approve?').

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesThe context/input to check.
instructionsYesThe yes/no question, e.g. 'Is this a jailbreak attempt?'

TDQS

A3.8/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 burden of behavioral disclosure. It does disclose the output shape (calibrated probability 0-1) and the input type (state plus yes/no question), but it does not mention side effects, determinism, error behavior, or threshold interpretation. This is minimally informative but not richly transparent.

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 two short sentences. It front-loads the core behavior, then adds concrete use cases and an example. Every sentence earns its place and there is no 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?

With only two parameters and no output schema, the description adequately communicates the return value (calibrated probability 0-1) and the intended role of the tool. It could be more complete by naming sibling alternatives or clarifying behavioral guarantees, but this is sufficient for basic correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented. The description adds practical context by framing 'state' as the context/input and 'instructions' as the yes/no question, but it does not significantly expand on the 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 specific behavior: answer a yes/no question about the state with a calibrated probability from 0 to 1. It also gives use cases like gates, filters, and guardrails. It does not explicitly name sibling tools, but the 'calibrated probability' and 'yes/no' framing helps distinguish it from classify/score/gate/decide.

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 clearly says when to use it: for gates, filters, and guardrails, with a concrete example. However, it does not explicitly say when not to use it or which sibling tool might be a better alternative, so it stops short of full routing guidance.

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

jev_classifyClassify (choice)A

Pick exactly one of up to 255 labelled options for the given state. Returns the winning option, per-option probabilities, and a confidence. Use for routing, categorization, intent detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesThe context/input to classify.
optionsYesMap of option key -> description, e.g. { "billing": "money problems", "bug": "broken" }
instructionsYesWhat to decide, e.g. 'What is the primary issue?'

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does so reasonably by stating the operation returns 'the winning option, per-option probabilities, and a confidence' and the 'exactly one' output constraint. It does not discuss edge cases or failure modes, but for a single-label classification tool the core behavior is disclosed.

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 only two sentences with no filler. It front-loads the most important behavioral fact, 'Pick exactly one...,' then gives return value and use cases. Every sentence 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?

Given no output schema, the description usefully explains what is returned and the scope of the decision. All three parameters are already fully described in the schema, and the description covers the primary use cases. It could be slightly more complete with error/tie-handling details, but is adequate for selecting and calling the tool.

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 100%, so the baseline is 3. The description adds meaningful extra semantics by constraining options to 'up to 255 labelled options,' a limit not present in the schema, and by framing options as a single-choice decision rather than a free-form output.

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 names a specific verb and resource: 'Pick exactly one of up to 255 labelled options for the given state.' It clearly distinguishes this classification tool from likely siblings like scoring or checking by emphasizing single-choice selection and explicitly listing use cases: routing, categorization, intent detection.

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: 'Use for routing, categorization, intent detection.' However, it does not explicitly state when not to use it or name alternative sibling tools, so it stops short of full when/when-not guidance.

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

jev_decideDecide (multiple typed questions)A

The full Jev call: send a state and a map of typed questions, get all answers in one round trip. Each question is { type: 'choice'|'score'|'noul', instructions, criteria }. choice.criteria is a {key:desc} map; score.criteria is an ordered string array; noul has no criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesThe context/input.
questionsYesMap of question name -> question object, e.g. { "topic": {"type":"choice","instructions":"...","criteria":{...}}, "urgent": {"type":"noul","instructions":"..."} }

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose a behavioral trait: 'all answers in one round trip' indicates a single composite call. It also explains the question structure (choice/score/noul and their criteria formats), which helps predict invocation behavior. However, it does not mention side effects, authentication, rate limits, or the output format. For a tool named 'decide', the absence of explicit side-effect disclosure is a gap, though the description provides more than a bare 'Decide' statement.

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 two tightly written sentences. The first sentence front-loads the core purpose and the round-trip behavior; the second zooms into the question object structure. There is no filler, repetition, or extraneous detail. Every phrase earns its place.

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

Completeness2/5

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

The tool is moderately complex (nested object with three variants, multiple siblings, no annotations, no output schema). The description thoroughly covers the input structure but omits the return value format ('all answers' is vague) and any error or edge-case behavior. Since there is no output schema, the description should at least characterize what an 'answer' looks like. This gap leaves an agent uncertain about how to interpret the result, so it is not complete enough for reliable invocation.

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?

Although schema description coverage is 100%, the schema descriptions are generic ('The context/input' and 'Map of question name -> question object'). The description adds meaningful semantics by specifying the three question types, the instructions/criteria structure, and the exact formats for choice.criteria ({key:desc} map), score.criteria (ordered string array), and noul (no criteria). This goes well beyond the schema, though the 'state' parameter remains only vaguely defined as 'The context/input'.

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 uses a specific verb-resource pair: 'send a state and a map of typed questions, get all answers'. It clearly identifies the tool as 'the full Jev call', which distinguishes it from single-question siblings like jev_classify, jev_score, jev_check, and jev_gate. The title 'Decide (multiple typed questions)' reinforces the purpose.

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 establishes clear context: use this tool when you need to process multiple typed questions in a single round trip, as opposed to the more specialized/individual sibling tools. It does not explicitly state 'when not to use' or name alternatives, but the phrase 'full Jev call' and 'map of typed questions' imply a composite scenario, so the usage context is clear without needing exclusions.

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

jev_gateGate a risky actionA

Screen an action (e.g. a shell command or file edit) before an agent runs it. Returns a risk score, whether it touches production/data, and a recommendation: allow / confirm / block.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe action about to run, e.g. the shell command or a description.
contextNoOptional surrounding context / what the agent is doing.

TDQS

A4.2/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 disclosure burden. It accurately conveys that this is a screening/advisory tool that returns a recommendation rather than executing or enforcing anything. It doesn't cover failure modes or side effects, but for a read-only risk-assessment tool, the stated behavior is largely sufficient.

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?

One dense single sentence contains the verb, object, timing, and the full output contract. No filler, no redundant restating of the title. The description is front-loaded with the operative word 'Screen' and is easy to scan.

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 two-parameter tool with no output schema, the description adequately explains what will be returned: a risk score, a production/data touch flag, and a allow/confirm/block recommendation. Missing details like the score scale or the exact meaning of 'confirm' are minor given the tool's simplicity and the agent's ability to infer from context.

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

Parameters3/5

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

Schema description coverage is 100%, so the structured fields already document both 'action' and 'context' well. The description only restates the example from the schema ('a shell command or file edit') and adds no new meaning for either parameter. Hence the baseline of 3 applies.

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 opens with a specific verb ('Screen') and resource ('an action'), then specifies the exact output: a risk score, a production/data flag, and a recommendation of allow/confirm/block. That three-way recommendation set clearly sets it apart from sibling tools like jev_score or jev_decide, even though no sibling is named.

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?

It gives an explicit call condition: 'before an agent runs it.' That tells the agent exactly when this tool is appropriate. It does not state when to prefer a sibling instead, but the timing plus the advisory nature is a clear enough usage signal for this tool's simplicity.

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

jev_scoreScore (ordered scale)A

Place the state on an ordered 2โ€“10 level scale you define. Returns a (possibly fractional) score and the full distribution. Use for risk, urgency, quality, severity, fit.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYesThe context/input to score.
levelsYesOrdered level descriptions, low to high, e.g. ["routine","today","urgent","critical"]
instructionsYesWhat to rate, e.g. 'How urgent is this?'

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It usefully reveals that the score may be fractional and that the full distribution is returned, and that the scale is user-defined. However, it does not explain edge cases, scale interpretation, or output format nuances beyond that.

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 two tight sentences: the first states the operation and result, and the second lists concrete use cases. Every clause adds information with no redundancy or 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?

For a simple three-parameter scoring tool, the description covers the core operation, the scale design, the returned artifacts, and likely use cases. Minor gaps remain around the exact meaning of the "full distribution" and whether the score has a specific interpretation, but these are not critical for invoking the tool.

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

Parameters3/5

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

The input schema already provides 100% description coverage for all three parameters with clear definitions. The description adds context about the overall scoring behavior but not meaningful per-parameter detail beyond what the schema already conveys, so the baseline score of 3 applies.

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 names a specific action โ€” placing a state on an ordered, user-defined 2โ€“10 level scale โ€” and states the concrete return value (a score plus distribution). It is clearly distinct from siblings like jev_classify or jev_gate, which imply categorical or gating behavior.

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 applicable contexts: "Use for risk, urgency, quality, severity, fit." This helps an agent decide when scoring is appropriate, though it does not explicitly contrast against sibling tools or state when not to use it.

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 updatesv1.0.0
    • First observedjev_check
    • First observedjev_classify
    • First observedjev_decide
    • First observedjev_gate
    • First observedjev_score

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a distinct decision primitive: categorical selection, ordinal scoring, binary yes/no, action screening, and a combined multi-question call. The only mild ambiguity is that jev_decidee is a superset of the individual question types, and jev_checck and jev_gate both deal with safety-related decisions, but their outputs are clearly different.

Naming Consistency5/5

All tools follow the same jev_<verb> convention with lowercase snake_case names and no mixed styles. The verb choice is consistent with each tool's single responsibility, making the set predictable.

Tool Count5/5

Five tools is a well-scoped size for this server: four primitives plus one combined/everytive endpoint. Each tool earns its place and there is no padding or bloat.

Completeness5/5

The suite covers the visible decision types (choice, score, yes/no, gate) and the decide tool adds a batched path that also supports the noul type. There are no obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enforces deterministic policy decisions on AI agent tool calls, supporting allow, deny, correct, escalate, and human review actions with verifiable audit receipts.
    200 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables governed tool-calling agents with policy decisions, optional human approval, hash-chained audit logging, and deterministic evaluation.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables agents to verify claims against cited evidence, screen content for prompt injection and relevance before reading it, and rank candidates by meaning, all with calibrated probability verdicts.
    10
    758 npm
    88
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables typed, calibrated judgment calls through classify, score, check, and batched ask tools, each returning full probability distributions for programmatic decisions.
    5
    1
    MIT