Skip to main content
Glama

jev-mcp

MCP server that puts TypeSafe Jev on the coding loop for OpenCode, OMP, Cursor, Codex, CI, and other MCP clients.

Jev is a typed decision model, not a coding agent. The host owns files, Git, shell, code generation, and context collection. jev-mcp sends bounded state plus typed Choice / Score / Noul questions to Jev, then applies deterministic policy in TypeScript.

Tools

Tool

Use when

jev_coding_loop

Decide retry / stop / model tier / focus before spending a frontier turn

jev_review

Canonical diff review before declaring a change done; no jev_check_diff alias is needed

jev_assess_change_risk

Assess security, operational, compatibility, scope, reversibility, and blast-radius risk

jev_check_requirement

Check requirements and acceptance criteria against a diff and verification evidence

jev_classify_issue

Classify category, severity, urgency, and an allowlisted owner candidate

jev_verify

Check claims against supplied evidence

jev_screen

Screen untrusted fetched or pasted text before the agent reads it

jev_rank

Rank a candidate list supplied by the host

jev_evaluate

Escape hatch for a custom typed question pack

Every tool returns typed answers, usage, truncation metadata, and a deterministic action:

  • auto — the configured policy permits automated continuation.

  • review — more evidence or human/agent review is required.

  • escalate — do not guess; route to a stronger governance or human path.

Question packs are exposed as resources at jev://packs/{coding-loop,review,verify,screen,rank,change-risk,requirement,issue}.

Related MCP server: BountyVerdict Agent Decision MCP Server

Diff-gate boundary

jev-mcp does not read the repository, run Git, execute shell commands, or apply patches. An OpenCode plugin, OMP extension, CLI, or CI wrapper must build the context bundle and call jev_review.

The host-side context builder should:

  1. Snapshot a baseline commit before the task.

  2. Collect baseline-to-current changes, including relevant untracked source/docs.

  3. Exclude generated/build/dependency artifacts.

  4. Redact secrets and report redaction or truncation explicitly.

  5. Attach requirements, tests, and verification output.

  6. Send only the bounded context needed for the selected tool.

The server validates and evaluates the supplied context; it does not assume that missing evidence means “no problem.”

Quick start

Node 20+:

npm install
npm run build
node dist/index.js doctor

For local deterministic tests without a key:

JEV_MCP_MOCK=1 npm test
JEV_MCP_MOCK=1 node dist/index.js eval --json '{
  "state": "Help! Payouts have been failing for 3 days.",
  "questions": {
    "urgent": { "type": "noul", "instructions": "Is this urgent?" }
  }
}'

For live evaluation, provide TYPESAFE_API_KEY through the MCP host environment. Never commit or print it.

OpenCode

Add one local MCP server entry. All tools are exposed from the same process:

{
  "mcp": {
    "jev-mcp": {
      "type": "local",
      "command": ["node", "/absolute/path/to/jev-mcp/dist/index.js"],
      "environment": {
        "TYPESAFE_API_KEY": "{env:TYPESAFE_API_KEY}"
      },
      "enabled": true
    }
  }
}

Use jev_review for the canonical diff gate. Use jev_assess_change_risk for governance/risk decisions and jev_check_requirement for traceability; do not merge these question packs into one generic review.

OMP

Reuse the same server or a thin CLI adapter around the same core. The shared skill belongs in the configured OMP skill directories. OMP’s @advisor remains a strategic text/planning model; Jev is the typed quality and safety decision layer beside it.

Environment

Variable

Role

TYPESAFE_API_KEY

Live TypeSafe API credential

JEV_MCP_MODEL

Default jev-latest

TYPESAFE_BASE_URL

Optional API root

JEV_MCP_MOCK

1 enables deterministic local mock mode

JEV_MCP_AUTO_ACCEPT

Default automation threshold: 0.8

JEV_MCP_REVIEW_AT

Default review threshold: 0.5

JEV_MCP_BLOCK_AT

Screen block threshold: 0.75

Development

npm test
npm run typecheck
npm run build

Tests are mock-first and do not require a live key. Live tests are opt-in and must use sanitized fixtures:

TYPESAFE_API_KEY=... npm test

Design rules

  • Keep the MCP server repository-blind and read-only.

  • Keep question packs tool-specific; do not turn every tool into jev_review.

  • Keep policy deterministic and independently unit-testable without a network call.

  • Treat probability/confidence as signals, not truth.

  • Missing, redacted, or truncated evidence must remain visible in the result.

  • Arithmetic, counts, and date calculations stay in TypeScript.

  • Never ask Jev to write code, prose, commit messages, or explanations.

Documentation

Available Tools

9 tools
jev_assess_change_riskJev change-risk assessmentA
Read-onlyIdempotent

Assess security, operational, compatibility, scope, reversibility, and blast-radius risk for a proposed change. The host supplies context; this server does not read Git or files. High-risk or incomplete evidence never returns auto.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffYes
modelNo
testsNo
requestYes
redactedNo
review_atNo
truncatedNo
auto_acceptNo
changed_filesNo
evidence_completeNo
deployment_contextNo
repository_contextNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds important behavioral context beyond those: the server cannot inspect Git/files itself, and high-risk or incomplete evidence never yields an automatic approval. This materially shapes how an agent should interpret results.

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 three short sentences with no filler. The core action is front-loaded, and the subsequent sentences provide valuable constraints rather than redundant restatement.

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 description captures purpose and a key safety behavior, but with 12 parameters, zero parameter descriptions, and no output schema, it leaves an agent guessing about how to set most optional fields and what the return payload looks like. For a tool this complex, the description is too sparse to be considered complete.

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

Parameters2/5

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

Schema description coverage is 0% across 12 parameters, so the description must carry the burden of explaining them. It only hints at host-supplied context and evidence completeness; it says nothing about model, tests, redacted, review_at, auto_accept, changed_files, deployment_context, repository_context, or truncated. Required request and diff are inferable by name, but most parameters remain opaque.

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 object ('risk for a proposed change') and enumerates six concrete risk dimensions: security, operational, compatibility, scope, reversibility, and blast-radius. This is far more specific than the generic sibling names and leaves little ambiguity about what the tool does.

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 clearly states the intended context: assess a proposed change using host-supplied context, and it warns that this server does not read Git or files. It does not explicitly name sibling alternatives or exclusion conditions, but the risk-assessment framing is clear enough for an agent to route correctly.

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

jev_check_requirementJev requirement coverageA
Read-onlyIdempotent

Check each supplied requirement or acceptance criterion against a host-supplied diff and verification evidence. Returns criterion-level covered, partial, not_covered, or not_verifiable statuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffYes
modelNo
testsNo
redactedNo
review_atNo
truncatedNo
auto_acceptNo
requirementsYes
evidence_completeNo
repository_contextNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by stating that evaluation is per criterion and produces four specific coverage statuses, which is not present in the annotations.

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?

Two tight sentences with no filler. The action, input, and output statuses are front-loaded, and every phrase contributes meaning.

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?

For a tool with 10 parameters, no output schema, and zero schema descriptions, the definition is incomplete. It gives a clear high-level purpose but leaves the agent guessing about how most parameters affect behavior and what the response structure will be.

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

Parameters2/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, but it only loosely references 'requirements', 'diff', and 'verification evidence'. It does not explain the remaining parameters such as model, tests, redacted, truncated, review_at, auto_accept, evidence_complete, or repository_context.

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 verb ('Check'), a clear resource ('each supplied requirement or acceptance criterion'), and the evaluation context ('diff and verification evidence'). It also names the four possible statuses, which distinguishes it from sibling tools like jev_verify or jev_review.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as jev_verify, jev_review, or jev_evaluate. The use case is only implied by the wording 'each supplied requirement...', with no exclusions, prerequisites, or alternative recommendations.

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

jev_classify_issueJev issue classifierA
Read-onlyIdempotent

Classify an issue by category, severity, urgency, and an allowlisted owner candidate. The tool may return unknown; it must not invent an owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueYes
modelNo
evidenceNo
truncatedNo
owner_candidatesYes
evidence_completeNo
repository_contextNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, open-world, and non-destructive; the description adds meaningful constraints beyond that: the result set is limited to allowlisted owner candidates, 'unknown' is a legitimate result, and it must not invent an owner. This directly informs invocation and output interpretation. It does not contradict the annotations.

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?

Two sentences with no filler; the core classification contract is front-loaded and the owner-candidate constraint earns its place.

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

Completeness3/5

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

For a read-only classification tool the core behavior is clear, but the absence of an output schema combined with seven parameters, only two of which are implied by the description, leaves gaps around optional inputs and return shape. An agent could make a basic call, but not with full confidence about optional parameters or output format.

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

Parameters2/5

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

With 0% schema description coverage, the description had to carry the parameter semantics. It clarifies that issue is the text to classify and that owner_candidates forms an allowlist, but model, evidence, truncated, evidence_complete, and repository_context are left unexplained in both schema and description.

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 verb ('Classify') and resource ('an issue'), and specifies the output dimensions: category, severity, urgency, and an allowlisted owner candidate. It also clarifies the boundary behavior (may return unknown, must not invent an owner), which distinguishes it from generic 'evaluate' or 'review' siblings.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no alternative sibling tools are named. The intended usage can be inferred from the name and subject matter, but the description leaves the agent to determine when classify_issue should be preferred over jev_evaluate, jev_review, etc.

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

jev_coding_loopJev coding-loop routerA
Read-onlyIdempotent

Call before spending a frontier turn on retry/stop/model-tier. One Jev fan-out returns next (continue|retry|ask_user|stop), model_tier (cheap|standard|reasoning), risk, focus, and noul flags done_enough / needs_more_context / tests_likely_fail. Policy in code maps confidence to action auto|review|escalate. Does not edit files.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesWhat the coding agent is trying to do
modelNo
extrasNoOptional extra JSON fields included in Jev state
review_atNo
auto_acceptNo
observationYesCurrent turn: last diff, command output, test results, or blocker

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds 'Does not edit files,' which is consistent, and reveals additional behavior: the policy mapping from confidence to action (auto|review|escalate) and the exact output flags. This goes beyond the annotations, though it could be richer about side effects or state changes.

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 a single dense paragraph, front-loaded with the usage trigger. It packs a lot of information about outputs and policy without excessive fluff. It is appropriately sized for a router tool with complex output.

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

Completeness3/5

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

There is no output schema, so the description must explain the return values, which it does reasonably well by listing the fields and flags. However, it leaves the optional parameters unexplained and the policy mechanism vague ('Policy in code maps confidence to action'). For a tool that is meant to be called before a decision, an agent might need more context on how to interpret risk/focus or how the optional parameters affect behavior.

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

Parameters2/5

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

Schema coverage is only 50%; the description does not compensate for the undocumented parameters (model, review_at, auto_accept). It explains the output structure but not the meaning of these optional inputs. For a tool with 6 parameters, the description should clarify what these fields do, especially since they are not described in the schema either.

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 clearly states the tool's purpose: a router to call before spending a frontier turn on retry/stop/model-tier. It lists the specific outputs (next, model_tier, risk, focus, flags) and the policy mapping, making the tool's role distinct from the sibling evaluation/review/verify/screen/rank tools, though it does not explicitly name them.

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 provides a clear trigger: 'Call before spending a frontier turn on retry/stop/model-tier.' This gives an explicit condition for when to use the tool. It does not mention when not to use it or contrast with alternatives, but the context is specific and actionable.

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

jev_evaluateEvaluate with JevA
Read-onlyIdempotent

Escape hatch: send shared state plus named noul/choice/score questions to TypeSafe Jev. Use when no other jev_* recipe fits. Jev does not write code or prose. Questions in one call run in parallel. Returns typed answers, probabilities, confidence, usage, and action auto|review|escalate.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoOverride, default jev-latest
stateYesShared state to judge: text or JSON
questionsYesNamed noul, choice, and score questions evaluated in parallel

TDQS

A4.4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: parallel execution of questions, the fact that Jev does not write code or prose, and the return fields (typed answers, probabilities, confidence, usage, action). Since annotations already declare readOnly, idempotent, and non-destructive, the description enriches the agent's understanding of side effects and execution model.

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 three sentences with zero filler. It front-loads the purpose ('Escape hatch'), then gives the usage condition, a behavioral limitation, parallelism, and return summary. Every sentence earns its place and the structure is highly scannable.

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 nested objects and no output schema, the description provides a solid overview of what the tool returns (typed answers, probabilities, confidence, usage, action) and how it executes (parallel). It doesn't detail error cases or rate limits, but given the annotations already cover safety and the description covers the key behavior, it's reasonably complete for an agent to invoke correctly.

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 has 100% description coverage for all parameters, including the nested question structure. The description adds minimal extra semantic value beyond the schema (e.g., 'named' questions, parallel execution), but it doesn't clarify the 'criteria' field or provide additional guidance on constructing questions. Baseline 3 is appropriate given the schema's thoroughness.

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 clearly states the tool's purpose: send shared state plus noul/choice/score questions to TypeSafe Jev for evaluation. It explicitly differentiates from siblings by saying 'Use when no other jev_* recipe fits', giving an agent a clear discriminator without opening other schemas.

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 provides an explicit condition for when to use this tool ('when no other jev_* recipe fits') and states what Jev does not do ('does not write code or prose'), which sets expectations. This is a clear directive for selection among siblings.

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

jev_rankJev candidate rankerA
Read-onlyIdempotent

Rank files, symbols, errors, or skills against a plain-language query. No embeddings. One Choice over candidate ids plus a Noul that the top hit actually answers the query (so a forced winner cannot masquerade as a match). Max 250 candidates per Jev call; larger lists are chunked then re-ranked. Pass candidates in; this server does not index the repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
queryYesWhat you are looking for, in natural language
top_kNoHow many ranked candidates to return. Default 5.
candidatesYesCandidates to rank. More than 250 are chunked, then the winners are re-ranked.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark the operation read-only, open-world, idempotent, and non-destructive. The description adds meaningful behavior beyond that: no embeddings, a top-hit relevance check, a 250-candidate cap with chunking/reranking, and a stateless input-only design. The only blemish is the unclear 'Noul' wording, which hampers full comprehension.

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 dense but mostly efficient: every sentence contributes either an input requirement, an algorithmic trait, or a constraint. It is front-loaded with the main action. The awkward 'One Choice over candidate ids plus a Noul' phrase and unmarked technical jargon reduce readability slightly.

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 stateless ranker, the description covers the main operational concerns: candidate format, maximum count, chunking behavior, lack of repo indexing, and the query-scoring approach. It lacks an explicit description of the return value shape, and no output schema exists to fill that gap, but an agent can likely call the tool correctly with what is given.

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 high (75%), so the schema carries most parameter meaning. The description does add useful context for 'query' ('plain-language') and 'candidates' (pass them in, max 250, chunked), but the 'model' parameter remains undocumented and no explanation of output fields is provided.

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 and resource: 'Rank files, symbols, errors, or skills against a plain-language query.' It further distinguishes this tool from siblings by noting 'No embeddings' and 'Pass candidates in; this server does not index the repo.' The core purpose is unmistakable even before looking at the schema.

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

Usage Guidelines3/5

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

The description clearly implies when to use it: rank a supplied list of candidates against a query, and do not expect repo indexing. However, it never names alternative sibling tools or explicitly says when another tool would be better, leaving routing largely to inference.

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

jev_reviewJev patch reviewA
Read-onlyIdempotent

Score a proposed diff against the request: correctness, spec-match, test-gap, blast-radius, plus noul safe_to_apply. Composite weights live in code. Call before declaring a fix done. Does not apply the patch.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffYesProposed patch, file excerpt, or change summary
modelNo
testsNoTest output if any
requestYesWhat the user asked for
review_atNo
truncatedNo
auto_acceptNo
changed_filesNo
context_versionNo1
evidence_completeNo
repository_contextNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, lowering the burden on the description. The description adds meaningful behavioral context by saying the patch is not applied and that composite weights live in code, which explains why the scoring logic is not fully exposed. There is no contradiction with the annotations.

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 short, front-loaded with the main action, and every sentence earns its place. The phrase 'plus noul safe_to_apply' is awkward and slightly unclear, but it does not significantly hurt structure.

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

Completeness3/5

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

The description gives enough orientation for a basic required-parameter call and lists key output dimensions including safe_to_apply. However, with no output schema and 11 parameters, it leaves the return payload shape and the meaning of several optional parameters to inference.

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

Parameters2/5

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

Schema description coverage is only 27%, and the description adds little beyond mapping 'diff' and 'request' to inputs. It provides no meaning for model, tests, review_at, auto_accept, truncated, changed_files, context_version, evidence_complete, or repository_context, so the low coverage burden is not compensated.

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 uses a specific verb and resource: 'Score a proposed diff against the request' and enumerates the review dimensions (correctness, spec-match, test-gap, blast-radius, safe_to_apply). It also disambiguates behavior by stating 'Does not apply the patch.' It stops short of a 5 because it does not explicitly contrast itself with similarly named siblings like jev_evaluate or jev_verify.

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 trigger: 'Call before declaring a fix done,' which tells the agent when in a workflow this tool belongs. It does not, however, state when not to use it or name any alternatives, so exclusionary guidance is missing.

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

jev_screenJev content screenA
Read-onlyIdempotent

Judge fetched or pasted text before the agent reads it: prompt-injection probability, substance, and optional relevance to purpose. Recommendation: pass|review|block|skip. Use on untrusted web pages, issues, and pastes. Not for first-party repo files.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesFetched or pasted text before the agent reads it
modelNo
purposeNoWhat the agent is trying to do; enables relevance and skip
block_atNo
review_atNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by explaining what the tool evaluates (injection, substance, relevance) and the output recommendation. It does not contradict annotations and provides useful operational detail beyond the safety profile.

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 concise sentences. The first sentence states the main function and output, the second gives usage scope. It is front-loaded with the core purpose and contains no fluff. Every sentence earns its place.

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

Completeness3/5

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

The tool has 5 parameters and no output schema, so the description must explain the expected return and any thresholds. It mentions the recommendation output but not the full output structure (e.g., whether it includes probability or substance scores). It also does not explain block_at and review_at parameters, which are essential for controlling the screening behavior. Given these gaps, the description is not fully complete for an agent to call it correctly without additional 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 only 40% (text and purpose have descriptions, while model, block_at, and review_at do not). The description mentions 'fetched or pasted text' (text) and 'optional relevance to purpose' (purpose), adding some meaning. However, it does not explain block_at and review_at, which likely set thresholds for the recommendation. Since coverage is low, the description should compensate more, but it only partially does.

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 clearly states the tool's function: to judge fetched or pasted text for prompt-injection probability, substance, and optional relevance to purpose, and to produce a recommendation (pass|review|block|skip). It explicitly scopes usage to untrusted web pages, issues, and pastes, and excludes first-party repo files, which distinguishes it from sibling tools. The purpose is unambiguous and specific.

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 explicit usage context: 'Use on untrusted web pages, issues, and pastes. Not for first-party repo files.' This tells the agent when to use the tool and when not to. It does not name alternative siblings directly, but the exclusion for repo files implies a different tool is appropriate for that case, which is adequate guidance.

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

jev_verifyJev claim verifierA
Read-onlyIdempotent

Check each claim against provided evidence (PR description, agent brief, docs, diffs). Returns per claim: verified|contradicted|unsupported, probabilities, confidence, and auto vs review. Prefer this over asking a chat model to 'double-check'.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
claimsYesFactual claims to check
evidenceYesSource text, or a list of {id, text} documents
auto_acceptNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/destructive hints with no contradiction. The description adds meaningful behavioral context beyond the annotations: the tri-state verdict (verified|contradicted|unsupported) aligns with and operationalizes the openWorldHint, and the 'auto vs review' distinction discloses that some verdicts are automated while others may require human judgment. It doesn't explain what triggers review, but adds real value over bare annotations.

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?

Three sentences with zero filler: the first states the core action, the second specifies the return contract, and the third gives usage preference. The purpose is front-loaded and each sentence earns its place.

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

Completeness3/5

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

Since there is no output schema, the description correctly shoulders the burden of explaining return values, and it does so well with the verdict/probability/confidence taxonomy. The core workflow (required claims and evidence) is fully covered. The gaps are the optional parameters — model and auto_accept have no semantics in either the schema or description — but these are non-critical for a correct basic 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 50% (claims and evidence are described, model and auto_accept are not), so the baseline is 3. The description adds practical semantics for evidence by listing concrete types (PR description, agent brief, docs, diffs) beyond the schema's generic 'Source text, or a list of {id, text} documents'. However, the meaning of model and auto_accept remains undocumented, so the description only partially compensates for the coverage gap.

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 verb and resource ('Check each claim against provided evidence') and enumerates the output contract (verified|contradicted|unsupported, probabilities, confidence, auto vs review), making the tool's function unambiguous. However, it does not explicitly distinguish itself from sibling tools like jev_review or jev_evaluate, and the 'prefer this over a chat model' alternative is not a named sibling.

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

Usage Guidelines3/5

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

The final sentence offers a usage directive: prefer this tool over asking a chat model to 'double-check'. This gives an implicit when-to-use signal, but there are no explicit conditions, exclusions, or routing guidance to sibling tools (jev_review, jev_evaluate, jev_rank) that might overlap. The guidance is implied rather than systematic.

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. 9 tool updatesv0.2.0
    • First observedjev_assess_change_risk
    • First observedjev_check_requirement
    • First observedjev_classify_issue
    • First observedjev_coding_loop
    • First observedjev_evaluate
    • First observedjev_rank
    • First observedjev_review
    • First observedjev_screen
    • First observedjev_verify

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Each tool has a clearly defined job—risk, classification, verification, review, screening, ranking—so they are mostly easy to distinguish. The main ambiguity is jev_evaluate, which is intentionally an escape hatch and can conceptually overlap with any of the other tools, though its description frames it as a fallback.

Naming Consistency4/5

All tools share the jev_ prefix and use snake_case, making the set feel consistent. The only deviation is jev_coding_loop, which is a noun-style name rather than a verb_noun pattern like assess_change_risk or classify_issue.

Tool Count5/5

Nine tools is well-scoped for a decision-support/evaluation server. Each tool addresses a distinct stage in the workflow—screening, risk assessment, review, verification, ranking, and a general escape hatch—so none feels redundant or excessive.

Completeness5/5

The tool surface covers the full evaluation lifecycle for the stated domain: risk assessment, issue classification, requirement checking, coding-loop guidance, diff review, claim verification, text screening, and ranking. The escape-hatch jev_evaluate also prevents dead ends for questions that don't fit an existing recipe.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    The decision system for agentic engineering: keeps your project's decisions, rationale, and rejected paths in plain files and surfaces them to AI coding agents before they plan or change code.
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides paid decision APIs for autonomous coding agents to diagnose GitHub Actions failures, classify flaky tests, check MCP tool drift, audit agent instructions, and compare bounties.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to scout, rank, and preflight software work before implementation, returning evidence-backed ACT, VERIFY, or SKIP decisions for issues and pull requests.
    28 npm
    2
    MIT