Skip to main content
Glama
multivon-ai

multivon-mcp

Official
by multivon-ai

multivon-mcp

PyPI Python License Downloads

Docs · Website · PyPI · multivon-eval (engine) · Changelog

These 23 tools cover what an autonomous eval agent needs to do its job: discover its own capabilities (eval_discover), normalize traces from supported sources (eval_ingest_trace), and run evaluators against them, with calibration evidence specific to the tested task. We put the framework behind an MCP boundary because eval belongs in the agent's working loop, not behind a separate dashboard.

An MCP server that gives AI coding agents direct access to evaluation tools. Drop into Claude Desktop, Claude Code, Cursor, Cline, or any Model Context Protocol–compatible agent.

When the agent is helping you build an LLM product, it can:

  • Score a RAG output for hallucination without you writing the scaffolding

  • Generate an adversarial PDF on demand to test your document AI

  • Run the full pdfhell mini-suite against a model and analyse the results

  • Produce a self-verifying audit pack with a SHA-256 file manifest

  • Discover the full evaluation capability catalog as JSON

No copy-paste, and no asking the agent to figure out the SDK calls from python -c "..." one-liners.

Current release: 0.4.0. Tested with MCP Python SDK 1.29.x, multivon-eval 0.18.0, and pdfhell 0.6.2. See the changelog.

Install

pip install "multivon-mcp==0.4.0"

The next release carries this compatibility bound itself. Installation pulls multivon-eval, pdfhell, and the MCP SDK. The provider SDKs (anthropic, openai, google-genai) come along too — bring your own API key in env.

Related MCP server: agent-comm

Configure your agent

Claude Code

claude mcp add --transport stdio --scope user multivon -- multivon-mcp
claude mcp get multivon

Set provider keys in your shell or secure environment before starting Claude Code. To share the server configuration with a project instead, use --scope project; Claude Code writes .mcp.json and supports environment-variable expansion there. It does not read claude_desktop_config.json.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "multivon": {
      "command": "multivon-mcp",
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "OPENAI_API_KEY": "sk-proj-...",
        "GOOGLE_API_KEY": "AIza..."
      }
    }
  }
}

Restart Claude. The 23 tools become available; ask Claude "use multivon to evaluate this RAG output" and it figures out which tool to call.

Cursor

.cursor/mcp.json or via Settings → MCP:

{ "mcpServers": { "multivon": { "command": "multivon-mcp" } } }

Cline / OpenCode / any MCP-compatible agent

Same shape — point at the multivon-mcp console script.

Local dev / debugging

From a clone of this repo:

mcp dev multivon_mcp/server.py

From a pip install (the file lives in site-packages, so resolve it):

mcp dev "$(python -c 'import multivon_mcp.server as s; print(s.__file__)')"

Opens the MCP Inspector UI in your browser. You can call any tool by name, see the JSON schemas, and watch the requests/responses.

The 23 tools

Discovery & document AI

Tool

What it does

API key

eval_discover

Full machine-readable capability catalog (evaluators, traps, suites, calibration data, versions). Call first.

No

pdfhell_make

Generate one adversarial PDF + its answer key.

No

pdfhell_run

Run the pdfhell adversarial-PDF benchmark against a vision model. Returns pass rate, per-trap CIs, suite hash.

Yes (vision)

eval_audit_pack

Build a procurement-ready ZIP with a SHA-256 file manifest from a pdfhell run.

No

RAG generation & retrieval

Tool

What it does

API key

eval_faithfulness

QAG-graded faithfulness — is a RAG output grounded in the retrieved context?

Yes

eval_hallucination

QAG-graded hallucination — does the output contain content NOT in context?

Yes

eval_relevance

QAG-graded answer-vs-question relevance.

Yes

eval_answer_accuracy

QAG-graded semantic equivalence vs ground truth.

Yes

eval_context_precision

RAG retrieval quality — are the retrieved chunks on-topic?

Yes

eval_context_recall

RAG retrieval completeness — does context contain enough info to answer?

Yes

Safety, compliance, fairness

Tool

What it does

API key

eval_toxicity

QAG-graded toxicity / harmful-content detection.

Yes

eval_bias

QAG-graded bias across gender, race, politics, age, socioeconomic axes.

Yes

eval_pii_detection

Local-only regex scan for PII (GDPR / CCPA / PIPEDA / HIPAA / DPDP packs).

No

eval_schema_compliance

Validate an LLM output against a JSON Schema.

No

Agent & multimodal

Tool

What it does

API key

eval_tool_call_accuracy

Deterministic agent tool-call correctness. No LLM.

No

eval_vqa_faithfulness

Image-grounded visual-QA faithfulness.

Yes (vision)

eval_document_grounding

Multi-page document-grounded faithfulness for document-AI agents.

Yes (vision)

Agent traces. eval_tool_call_accuracy and the other agent-trace evaluators in multivon-eval (ToolArgumentAccuracy, ToolCallNecessity, TrajectoryEfficiency, AgentMemoryEval, PlanQuality, TaskCompletion, StepFaithfulness) take an agent_trace=[AgentStep(...)] plus expected_tool_calls=[...] on the case. Three-shape semantics matter: expected_tool_calls=None skips, [] asserts "no tools called", and [...] checks for the named calls. On repository main (shipping in the next release), the MCP tool supports the same trace mode: normalize trace JSON with eval_ingest_trace, then pass its agent_trace plus expected_tool_calls to eval_tool_call_accuracy. Set require_order=true when sequence matters or penalize_unexpected=true for a strict allow-list. See the multivon-eval agent integrations for the source-of-truth tracer code.

Flexible scoring

Tool

What it does

API key

eval_g_eval

G-Eval holistic 0.0-1.0 scoring against a plain-English criterion.

Yes

eval_custom_rubric

Score against your own list of yes/no quality checks.

Yes

Agent workflows (new in 0.3.0)

Tool

What it does

API key

eval_acceptance_report

Apply required-check, coverage and slice policy to a saved report; returns accept/reject/indeterminate.

No

eval_compare_runs

Diff two eval report JSONs — pass-rate delta, per-case regressions/improvements, McNemar p-value. Includes identity warnings; inconclusive comparisons cannot confirm improvement.

No

eval_generate_cases

Generate N eval cases (input / expected_output / context) from a chunk of source text. Eliminates the cold-start when building a new suite.

Yes (judge)

eval_ingest_trace

Convert a JSON agent trace (LangGraph / OpenAI Agents / manual) into an EvalCase payload. Use to score trajectories your agent just executed.

No

Example session

User: I just shipped a RAG endpoint. Can you check it for hallucinations?

Claude: I'll use multivon to evaluate it.
        [calls eval_discover to see what's available]
        [calls eval_faithfulness with your input/context/output]

→ score: 0.667 (passed: False), threshold: 0.9
  reason: 2/3 claims grounded
    ✓ "annual renewal" — supported by context
    ✓ "30-day notice" — supported by context
    ✗ "automatic upgrade" — NOT in context

Claude: Your RAG hallucinated the "automatic upgrade" detail. The context
        doesn't mention upgrades. I'd add a Hallucination evaluator to your CI
        gate, threshold ≥0.85, and re-prompt with explicit "only use facts
        from context" instructions.

Release decisions from saved evidence

Use eval_acceptance_report(report_json_path, policy_json_path) to apply the same multivon.policy/v1 contract used by the CLI and CI action. It makes no model calls. The result includes decision (accept, reject, indeterminate), exit_code, policy_digest, measurements and findings. Malformed files or policies produce an MCP tool error, not an accepted result. See the acceptance policy guide.

Comparison is diagnostic: eval_compare_runs retains identity_verified and identity_issues. Missing or incompatible evidence suppresses the paired p-value. A large p-value does not prove equivalence, and an unchanged failing application still needs an absolute release contract.

Evaluator responses include status, measured and original metadata. For skipped or errored measurements, score and passed are null. Do not coerce them into an ordinary pass or fail. Missing agent_trace means unknown; provide agent_trace: [] only for an observed empty trajectory. Trace ingestion also requires an explicit steps list.

In single-call accuracy mode, supplied expected arguments must match exactly: extra keys, absent null-valued keys and changed JSON types fail. Omitting expected_arguments explicitly selects tool-name-only comparison. Trace mode checks tool names/order, not argument correctness or external side effects.

These response semantics change in 0.4.0. Update clients that assume passed and score are always measured values. The stdio integration test exercises real initialization, discovery, acceptance, missing evidence and tool errors.

Why these 23 tools (not all 44)

eval_discover returns the full 44-evaluator catalog, so the agent can always introspect everything. The 23 tools we expose directly are the ones agents actually call mid-edit:

  • RAG generation checks (faithfulness, hallucination, relevance, answer_accuracy)

  • RAG retrieval checks (context_precision, context_recall)

  • Safety / fairness guardrails (toxicity, bias)

  • Compliance (pii_detection, schema_compliance) — local-only, no API egress

  • Flexible scoring (g_eval, custom_rubric) for user-defined rubrics

  • Multimodal (vqa_faithfulness, document_grounding) for vision agents

  • Agent traces (tool_call_accuracy)

  • Document AI (pdfhell_run, pdfhell_make) — for any RAG-on-PDFs flow

  • Audit pack — when procurement is involved

  • Discover — meta-capability for planning

  • Agent workflows (compare_runs, generate_cases, ingest_trace) — the loop that turns one-shot scoring into iterative improvement

The three new 0.3.0 tools exist because evals pay off as a loop: generate a starting suite from your own docs (eval_generate_cases), run your agent over it, score the trace (eval_ingest_traceeval_*), make a fix, then verify the fix improved things vs. the baseline (eval_compare_runs). Agents need that whole loop callable from within a conversation, or they fall back to ad-hoc judgment.

Exposing all 44 evaluators as MCP tools would bloat the agent's context window and overwhelm tool-selection. If you need an evaluator that's not directly exposed, the agent can still use multivon-eval as a library — eval_discover returns the import paths.

Evaluate saved execution evidence

The multivon-eval development checkout includes an OTLP evidence bridge. Its example instruments an actual MCP stdio call with the official OpenTelemetry SDK, grades the retained trace, then passes the saved report and policy to eval_acceptance_report in published multivon-mcp 0.4.0. The complete synthetic fixture is accepted; missing capture-completeness evidence is indeterminate. No model API calls are required.

This is an opt-in library integration, not automatic server instrumentation or a new MCP tool. The bridge is not included in multivon-eval 0.18.0; see its guide for the checkout installation, native capture requirements and limitations.

The development Gymnasium outcome bridge also produces reports this server can evaluate. Three actual stdio calls verified accept, reject and indeterminate decisions from saved SQLite outcome evidence. The adapter checks persisted state and forbidden changes; it is a development preview, not part of the server's pinned multivon-eval 0.18.0 dependency.

The development media evidence bridge binds native Inspect media to exact content and explicit verdict references. Published MCP 0.4.0 reproduced a rejection from its saved six-case document report over stdio. This tool reads the report and policy; it does not fetch or decode media itself. The new media APIs require the core development checkout and are not added to this server's pinned dependency by this example.

Dependencies

Tested runtime bounds (from pyproject.toml):

  • mcp[cli] >= 1.29, < 2 — official MCP Python SDK and Inspector. MCP 2.0 has a different server API and is intentionally excluded until this server migrates.

  • multivon-eval >= 0.18.0, < 0.19 — the 44-evaluator engine, current report schema, and reasoning-judge fix.

  • pdfhell >= 0.6.2, < 0.7 — the 17-family mini-v4 registry, corrected trap renderings, and current audit-pack schema.

These bounds ship in 0.4.0. Upgrade with pip install -U multivon-mcp.

All Apache 2.0.

MCP server vs Claude Code skills vs eval-action — which one do I use?

multivon-eval ships three agent-facing surfaces. They overlap on what they call (the same evaluator catalog) but differ on where the agent lives.

Surface

Where the agent runs

Best for

multivon-mcp (this repo)

Any MCP-compatible client — Claude Desktop, Cursor, Cline, OpenCode, Claude Code

Mid-edit scoring inside an IDE or chat app. Agent calls eval_faithfulness / eval_hallucination / etc. directly as tools.

Claude Code skillseval-bootstrap, eval-audit, eval-explain (bundled in multivon-eval >= 0.9.8; install with multivon-eval install-skills)

Claude Code only

Workflow-shaped tasks: scaffold an eval suite from a project description, pre-PR regression checks against a baseline, explaining why a particular evaluator was picked. The skills know how to call multivon-eval bootstrap / use compare_reports / etc. so the agent doesn't have to figure it out from docs.

eval-action

GitHub CI

Gate every PR on eval regressions automatically. Posts the Wilson-CI + McNemar verdict as a PR comment.

If you're building an LLM product and want the agent in your editor to score a RAG output without copy-pasting Python, use multivon-mcp. If you live in Claude Code and want the bootstrap → audit → explain loop wired up as native commands, use the bundled skills. For PR-time gating, use the GitHub Action. Most projects end up using more than one.

The Multivon ecosystem

Four public packages plus one closed early-access product, built around the same evaluation engine:

Repo

What it is

multivon-eval

Python SDK — 44 evaluators + bootstrap CLI + multivon_eval.auto. The engine multivon-mcp wraps.

pdfhell

Adversarial PDFs that break AI document readers — exposed here as pdfhell_run + pdfhell_make tools

multivon-mcp (you are here)

MCP server — 23 tools from multivon-eval + pdfhell

eval-action

GitHub Action — runs the same evals on every PR

multivon-guard (early access)

Local proxy that catches LLM coding agents leaking secrets / PII

License

Apache 2.0.

Citing

@software{multivon_mcp,
  title  = {multivon-mcp: MCP server exposing multivon-eval + pdfhell as agent-callable tools},
  author = {Multivon},
  year   = {2026},
  url    = {https://github.com/multivon-ai/multivon-mcp},
}

The experimental vector world-model bridge produces the same saved report format. Actual stdio checks using published MCP 0.4.0 and core 0.18.0 reproduced accept/reject/indeterminate for measured versus missing CartPole forecast checks. The server ran outside the development checkout so the installed core wheel was used. These post-hoc checks establish transport and coverage behavior, not world-model quality or a release decision. Training, simulation and prediction remain in the upstream library workflow; this server adds no world-model runner or heavy learning dependencies.

Available Tools

23 tools
eval_acceptance_reportA

Apply a versioned acceptance policy to saved evidence without model calls.

Read a full EvalReport JSON and a multivon.policy/v1 JSON policy. Return accept, reject, or indeterminate, the policy digest, measured coverage, per-slice results and findings. Missing required checks or trials cannot pass. A known quality failure can reject even with incomplete evidence. The returned exit_code is the policy result, not the MCP process status. Input/configuration failures are MCP tool errors, never accepted reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_json_pathYes
report_json_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the entire burden and meets it: it explains determinism ('without model calls'), result semantics (accept/reject/indeterminate plus digest, coverage, per-slice results), failure rules ('Missing required checks... cannot pass', 'known quality failure can reject even with incomplete evidence'), and the important exit_code vs MCP process status distinction. No behavioral trait is hidden.

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?

Six sentences, each adding a distinct fact: mode, inputs/outputs, hard failure rules, and the exit_code caveat. There is no filler, and the core purpose is 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 and two non-trivial inputs, the description covers input semantics, decision logic, and process-vs-policy exit code behavior. It also has an output schema to further specify return values. Only minor gaps remain, such as exact accepted file path forms or explicit routing relative to sibling eval tools, but nothing that blocks correct 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?

Schema coverage is 0%, so the description must add meaning, and it does: report_json_path is a full EvalReport JSON and policy_json_path is a 'multivon.policy/v1 JSON policy.' This is enough for an agent to know what each argument must reference, though it stops short of detailing path constraints or policy syntax.

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 first sentence names a specific verb ('Apply'), a specific resource ('versioned acceptance policy to saved evidence'), and a distinctive constraint ('without model calls'). It then states the outcome values and artifacts, clearly differentiating this offline policy gate from sibling model-based eval tools like eval_toxicity or eval_custom_rubric.

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 phrase 'to saved evidence' and 'without model calls' indicates when this tool is appropriate: offline acceptance on an existing EvalReport JSON rather than generating a new evaluation. It does not explicitly name sibling alternatives or give negative routing guidance, so it misses full when-not-to-use clarity.

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

eval_answer_accuracyA

Evaluate whether an answer is semantically equivalent to the ground truth.

QAG-graded — generates yes/no questions about whether the actual answer matches the meaning of the expected answer. Useful when string match is too strict (e.g. paraphrased correct answers).

Args: expected_answer: Ground-truth answer. actual_answer: The LLM's answer. judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str}.

ParametersJSON Schema
NameRequiredDescriptionDefault
judge_modelNoanthropic:claude-haiku-4-5
actual_answerYes
expected_answerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses the QAG grading method, return type (score, passed, reason), and the use of a judge model. It does not mention side effects or API dependencies, but for an eval tool this is acceptable.

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 concise, with two focused paragraphs. The first paragraph states the purpose and method, the second details parameters and return value. No filler or redundant information.

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 the absence of an output schema, the description still provides the return format and explains the QAG method. It covers the essential aspects but could mention edge cases or error handling for completeness.

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?

Despite 0% schema description coverage, the description provides clear parameter semantics: expected_answer (ground-truth), actual_answer (LLM's answer), judge_model (provider:model). This compensates fully for the lack of schema descriptions.

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 evaluates semantic equivalence of answers to ground truth using QAG, distinguishing it from strict string matching. Among sibling eval tools, this purpose is distinct and well-defined.

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 includes a clear usage guideline: 'Useful when string match is too strict (e.g. paraphrased correct answers).' It provides context but does not explicitly differentiate from other eval tools like eval_faithfulness or eval_hallucination.

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

eval_audit_packA

Build a self-verifying audit ZIP from a pdfhell run.

Combines the run JSON, the case PDFs + answer keys, JUnit XML, and a SHA-256 manifest into one downloadable ZIP. Suitable for attaching to a procurement diligence appendix. Anchor the manifest hash outside the ZIP when you need evidence against deliberate rewriting; the ZIP alone is self-verifying, not tamper-proof.

Args: run_json_path: Path to a pdfhell run JSON (from pdfhell run --out). cases_dir: Directory containing the case PDFs + answer keys that were evaluated. Same dir the run used. output_zip_path: Where to write the audit ZIP.

Returns: {"path": "/abs/path/to.zip", "size_bytes": N, "manifest": {...}}. The manifest dict mirrors the one inside the ZIP — useful for an agent that wants to verify the contents without opening the ZIP itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
cases_dirYes
run_json_pathYes
output_zip_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It usefully reveals that the ZIP is 'self-verifying, not tamper-proof', that the manifest hash should be anchored externally for tamper evidence, and that the returned manifest mirrors the one inside the ZIP. This goes beyond a simple 'build a zip' statement and helps the agent set correct expectations about the artifact's guarantees.

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 front-loaded purpose statement, a concise composition list, a security caveat, and clearly separated Args/Returns sections. Every sentence adds information: what is combined, when it is suitable, what caveat applies, what each argument means, and what the return shape is. No wasted words.

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 has an output schema and the description separately documents the return value, so return semantics are covered. It also explains the artifact contents, the tamper-evidence limitation, and per-argument provenance. It does not discuss error cases or whether an existing output file gets overwritten, but for a straightforward packaging tool the description is complete enough for correct 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?

Schema description coverage is 0%, so the description must compensate, and it does. It explains run_json_path as output from 'pdfhell run --out', clarifies that cases_dir must be the same directory used by the run, and states where output_zip_path writes. The only weakness is that 'output_zip_path: Where to write the audit ZIP' is thin, but the overall parameter guidance is meaningful.

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: 'Build a self-verifying audit ZIP from a pdfhell run.' It clearly enumerates the ZIP contents (run JSON, case PDFs, answer keys, JUnit XML, SHA-256 manifest), which distinguishes it from the sibling eval_* tools that score or validate rather than package. An agent can immediately tell this is the packaging/audit artifact tool.

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 practical context: it is 'Suitable for attaching to a procurement diligence appendix' and explains when to anchor the manifest hash outside the ZIP ('when you need evidence against deliberate rewriting'). It does not name alternatives or explicitly say when not to use it, but the sibling tools are clearly different in function (metrics/scoring vs. artifact packaging), so this is sufficient guidance.

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

eval_biasA

Detect gender, racial, political, age, or socioeconomic bias.

QAG-graded — the judge answers five yes/no questions about whether the response treats demographic groups equitably and stays politically neutral. Score 1.0 = no detectable bias, 0.0 = significant bias.

Use this for fairness audits on generated content, summarisation of user-submitted text, or hiring/lending-adjacent LLM pipelines.

Args: input: The prompt the LLM was responding to. Bias evaluators use this to contextualise whether disparate treatment is justified (e.g. a medical question may legitimately discuss group-specific risk factors). output: The LLM-generated response. judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "bias"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
outputYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It explains the QAG-graded mechanism (five yes/no questions), score range (0.0-1.0), and return fields (score, passed, reason, threshold, evaluator). It also notes that input contextualizes whether disparate treatment is justified. Minor gaps: no discussion of failure modes or rate limits.

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?

Description is well-structured: first sentence defines purpose, then mechanism, use cases, args, and returns. Every sentence adds value, and the most critical information is front-loaded.

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 3 parameters, no nested objects, and an output schema (whose structure is described), the description is thorough. It covers purpose, usage, mechanism, all parameters, and return format. No gaps for an evaluator tool.

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 description must carry all parameter meaning. It does so comprehensively: explains 'input' as the prompt for context, 'output' as the LLM response, and 'judge_model' with a default provider:model. Adds significant meaning beyond the raw 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 clearly identifies the tool's purpose with a specific verb ('Detect') and resource ('bias'), listing multiple bias types (gender, racial, political, etc.). It distinguishes from siblings like eval_toxicity by focusing on fairness audits rather than harmful content.

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 explicitly states when to use this tool: 'fairness audits on generated content, summarisation of user-submitted text, or hiring/lending-adjacent LLM pipelines.' It provides clear context but does not explicitly state when not to use it or list alternatives.

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

eval_compare_runsA

Compare two multivon-eval report JSONs and return a structured diff.

Loads both reports from disk (the JSON produced by EvalReport.to_json()), pairs cases by stable ID and case digest, and returns pass-rate / average-score deltas plus the per-case regressions and improvements lists. Includes a McNemar p-value only when pairing evidence supports it. A large p-value does not establish equivalence. Legacy reports remain diagnostic.

Use this when you've made a prompt / retrieval / model change and want to know if the new run actually improved over the baseline — not just on aggregate, but case-by-case.

Args: baseline_json_path: Filesystem path to the baseline report JSON (e.g. "runs/baseline.json"). new_json_path: Filesystem path to the new / proposal report JSON to compare against the baseline.

Returns: A dict with: - pass_rate_delta: float, new - baseline pass rate - avg_score_delta: float, new - baseline average score - regressions: list of dicts with input, baseline_status, proposal_status, baseline_score, proposal_score - improvements: same shape as regressions - mcnemar_p_value: float or null — paired-test p-value - baseline / proposal: summary blocks with name, pass_rate, avg_score, errors, flaky - paired_count / added_count / removed_count: pairing stats so the caller can see how many cases lined up vs. drifted between runs

ParametersJSON Schema
NameRequiredDescriptionDefault
new_json_pathYes
baseline_json_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/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 burden, and it does well: it discloses that files are loaded from disk, cases are paired by stable ID and case digest, McNemar's p-value is included only when pairing evidence supports it, and a large p-value does not establish equivalence. This prevents meaningful misinterpretation of statistical results and reveals the pairing behavior.

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 long but well-structured: purpose, usage, args, and returns are clearly separated and front-loaded. The detailed Returns section earns its place because it documents the delta semantics and field shapes, though it is slightly more verbose than strictly necessary.

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 no annotations, minimal input schema, and complex return semantics, the description is complete. It covers input paths, pairing strategy, statistical caveats, return fields, and even pairing statistics like paired_count/added_count/removed_count so the agent can interpret drift between runs.

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, and it does. It defines baseline_json_path as the filesystem path to the baseline report JSON with an example, and new_json_path as the new/proposal report JSON to compare. This adds semantic meaning and role beyond the raw string type in the 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 opening sentence states a specific action and resource: 'Compare two multivon-eval report JSONs and return a structured diff.' This clearly distinguishes eval_compare_runs from the sibling eval_* tools, which perform their own single-report evaluations rather than pairwise comparison.

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 explicitly says when to use the tool: after a prompt/retrieval/model change when you want to know whether the new run improved on the baseline, case-by-case rather than only on aggregate. It does not explicitly name alternatives or state when-not-to-use, but the use-case guidance is clear enough to route an agent correctly.

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

eval_context_precisionA

Measure whether retrieved RAG context chunks are relevant to the question.

High precision = the retriever returned mostly on-topic chunks; low noise. The judge asks "is this chunk relevant?" for each chunk (up to 8) and scores precision = fraction marked relevant.

Use this to diagnose retriever quality: if precision is low, your embedding model, chunk size, or reranker is returning noise.

Args: input: The user's question. context: Either a list of retrieved chunks, or a single string with the full retrieved context (will be evaluated as one chunk). judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "context_precision"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
contextYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Describes the judge process (each chunk up to 8, fraction relevant) and output format. With no annotations, the description adequately covers behavioral expectations.

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?

Well-structured with clear sections (purpose, usage, args). Each sentence is informative, no fluff. Appropriate length.

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 output schema exists and describes return values, the description is complete: explains inputs, process, and return. No gaps.

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?

Provides meaningful descriptions for all three parameters despite 0% schema coverage. Explains input, context formats, and judge_model default. Adds value beyond the 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 clearly states the tool measures relevance of RAG context chunks to a question, defines high precision, and distinguishes it from sibling tools like eval_context_recall. The verb 'measure' and resource 'context precision' are 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?

Explicitly says to use for diagnosing retriever quality and gives examples of what low precision indicates. Does not explicitly mention when not to use or alternatives, but the context is clear.

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

eval_context_recallA

Measure whether retrieved context contains enough information to answer.

High recall = the retriever found the information needed to derive the expected answer. The judge asks whether the expected answer could plausibly be reconstructed from the retrieved context alone.

Use this when you have a labelled QA dataset and want to diagnose whether failures are retriever misses vs. generator errors.

Args: input: The user's question. context: The retrieved context chunks (list or single string). expected_answer: The ground-truth answer the context should support. judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "context_recall"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
contextYes
judge_modelNoanthropic:claude-haiku-4-5
expected_answerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It explains the judge's role: 'asks whether the expected answer could plausibly be reconstructed from the retrieved context alone.' It also defines 'high recall.' No destructive side effects are expected, and the behavioral disclosure is adequate.

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: a short summary, a clarification paragraph, an explicit usage line, and an Args section. It is efficient without being wordy, though it could be slightly more compact.

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 complexity and the presence of an output schema, the description covers all essential aspects: purpose, usage context, parameter meanings, and the return structure (score, passed, reason, threshold, evaluator). This is fully sufficient for correct agent 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?

Schema coverage is 0%, so the description must compensate. It lists all four parameters (input, context, expected_answer, judge_model) with brief but clear explanations. For example, it notes that context can be a list or single string. This adds meaning beyond the raw 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 starts with a clear one-sentence purpose: 'Measure whether retrieved context contains enough information to answer.' It specifies the resource (retrieved context) and the action (measuring recall). The context of retriever vs. generator diagnosis distinguishes it from sibling tools like eval_context_precision or eval_faithfulness.

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?

Explicitly states when to use: 'when you have a labelled QA dataset and want to diagnose whether failures are retriever misses vs. generator errors.' It clearly sets the context but does not explicitly mention alternatives or when not to use it, leaving some room for improvement.

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

eval_custom_rubricA

Score an output against your own list of yes/no quality checks.

Each criterion is a [question, expect_yes] pair. The judge answers each question with yes/no; the score is the fraction answered as expected. Best for compliance-style rubrics where each aspect should be auditable separately.

Args: input: The prompt the LLM was responding to. output: The LLM-generated response. criteria: A list of [question_str, expect_yes_bool] pairs. Example: [["Does it cite a source?", true], ["Does it speculate beyond the source?", false]]. name: Optional label for the rubric (appears in the result dict's evaluator field). context: Optional context string for the judge to consider (e.g. retrieved RAG context, source document). judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": <name>}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNocustom_rubric
inputYes
outputYes
contextNo
criteriaYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 full burden. It transparently explains the scoring mechanism (yes/no per criterion, fraction correct) and notes the use of a judge model. It does not disclose any destructive behavior (none expected) and adequately describes the evaluation process.

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-structured with an introduction, use-case paragraph, and enumerated arguments. It is appropriately sized for a tool with 6 parameters and a return value. A minor improvement could be trimming some redundant phrasing, but overall it is concise and easy to scan.

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 has 6 parameters with no schema descriptions, and an output schema is present, the description covers all parameters and the return value (mentioning keys like score, passed, reason). It provides enough context for correct invocation, including examples and default values, making it complete for an evaluation tool.

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 fully explain parameters. It provides an Args section with clear definitions, including an example for the 'criteria' parameter that adds significant meaning beyond the schema's type-only specification. All six parameters are explained with defaults and types.

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 'Score an output against your own list of yes/no quality checks', clearly identifying the tool's purpose as a custom rubric evaluator. It distinguishes from sibling evaluation tools by noting it's for compliance-style rubrics, making its specific role clear.

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 explicitly says 'Best for compliance-style rubrics where each aspect should be auditable separately', providing clear context for when to use the tool. However, it does not mention when not to use it or explicitly contrast with sibling tools, but the guidance is sufficient.

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

eval_discoverA

Return the full machine-readable capability catalog.

Useful as a first call at session start — an agent can plan its evaluation strategy against the actual available evaluators rather than guessing or hallucinating tool names.

Returns: A dict with six top-level keys:

- ``evaluators``: every available multivon-eval evaluator,
  with its category, import path, evaluator ID, and summary.
- ``traps``: every pdfhell trap family, the failure mode each
  elicits, and the expected_failure_mode metadata.
- ``suites``: every named pdfhell suite, the (trap_family,
  seed_count) breakdown, and the suite_hash for the canonical
  version.
- ``calibration``: shipped per-(evaluator, judge) threshold rows.
- ``version``: installed multivon-mcp, multivon-eval, and pdfhell
  versions.
- ``server``: the stable server identifier.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the tool's non-mutating nature by describing a return-only operation retturns a dict with six top-level keys and their semantics. It also adds behavioral context about avoiding hallucinated tool names. It doesn't mention potential side effects or rate limits, but for a catalog-retrieval tool the disclosed behavior is sufficient.

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-structured and front-loaded with the core purpose. The return-value breakdown is detailed but not bloated. It could arguably be more concise, but every section earns its place by helping an agent understand what to expect.

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 zero-parameter discovery tool, the description is complete: it explains what the tool returns, how the agent should use it, and why it matters. The output schema exists, so the detailed return-value listing in the description is a helpful supplement, not a requirement. Nothing critical is missing.

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?

The input schema has zero parameters, so there is no parameter semantics to document. The description appropriately focuses on the return value, which is what an agent needs to know. A baseline of 4 for zero-parameter tools is appropriate here.

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 ('Return') and resource ('full machine-readable capability catalog'). It clearly distinguishes this tool from the sibling evaluator tools by framing it as a discovery/capability-planning call, so an agent can tell it apart from eval_* and pdfhell_* tools.

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 explicitly says to use it 'as a first call at session start' so the agent can plan its evaluation strategy against available evaluators. It provides a clear context for use, though it does not explicitly state when not to use it or name an alternative discovery tool.

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

eval_document_groundingA

Check whether an answer about a multi-page document is grounded.

Document-page-grounded faithfulness for multi-page document agents (contracts, invoices, scientific PDFs, medical records). The vision judge answers three yes/no questions per document: is every claim supported, no inventions, exceptions handled.

Provide one image per page. Use exactly one of:

  • images: list of paths, http(s) URLs, or data URIs.

  • images_base64: list of raw base64 strings; pair with mime_type.

Args: input: The question or prompt the LLM was answering about the document. output: The LLM-generated answer to verify against the pages. images: List of page image sources (paths/URLs/data URIs). images_base64: Alternative — list of raw base64 strings. mime_type: Mime type when using images_base64. Default "image/png". judge_model: Provider:model for the vision judge. Must be vision-capable. Default "google:gemini-2.5-flash".

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "document_grounding"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
imagesNo
outputYes
mime_typeNoimage/png
judge_modelNogoogle:gemini-2.5-flash
images_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full transparency burden. It explains the vision judge evaluates three criteria, returns a structured response, and requires images per page. It lacks disclosure on performance implications or auth requirements, but for an evaluation tool, this is acceptable.

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 concise and front-loaded with purpose, then uses Args/Returns structure to detail parameters and output. It is efficient with no wasted words, though slightly more structured formatting (e.g., line breaks) could improve readability.

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 6 parameters, 0% schema coverage, and an output schema, the description covers all aspects: required inputs, optional parameters, defaults, and return format. It misses edge cases like handling both image options, but overall sufficient for an agent.

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 fully documents all 6 parameters: input, output, images (paths/URLs/data URIs), images_base64 (alternative), mime_type (default png), judge_model (default and vision capability requirement). It explains constraints like using exactly one of images or images_base64, adding meaning beyond the 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 clearly states the tool checks document grounding for multi-page documents, specifying it answers three yes/no questions via a vision judge. This distinguishes it from sibling evaluation tools like eval_faithfulness or eval_vqa_faithfulness by being explicitly document-page-grounded.

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 usage guidelines: specify input and output, provide one image per page using exactly one of images or images_base64, and optionally set mime_type and judge_model. However, it does not explicitly contrast with alternative 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.

eval_faithfulnessA

Evaluate whether an LLM output is grounded in the retrieved context.

Uses multivon-eval's QAG-graded Faithfulness evaluator. Extracts factual claims from the output and verifies each one against the context. Score is the fraction of claims supported.

Use this when a RAG pipeline returned an answer and you want to check the LLM didn't invent facts not present in retrieved documents.

Args: input: The user's question. context: The retrieved context the LLM was given. output: The LLM's answer being evaluated. judge_model: Provider:model for the QAG judge. Default "anthropic:claude-haiku-4-5" (cheap + calibrated).

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
outputYes
contextYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains the evaluation process: extracts factual claims, verifies each against context, and provides a score. It also specifies the default judge model and hints at its calibration. It lacks details on error handling or permissions but is fairly 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 well-structured and concise: a one-sentence purpose, a brief explanation of the evaluator, a use-case line, then bullet-style parameter descriptions and a return format. Every sentence adds value with no 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?

The description covers the tool's purpose, usage context, behavioral details, parameter meanings, and return format (matching the output schema). For a tool with 4 parameters and no nested objects, this is comprehensive.

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 coverage is 0%, so the description must compensate. It describes each parameter: 'input' as the user's question, 'context' as retrieved context, 'output' as LLM answer, and 'judge_model' with a default and hint. This adds meaning beyond the bare schema, though not extremely detailed.

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 evaluates whether an LLM output is grounded in retrieved context, using a specific evaluator (QAG-graded Faithfulness). It differentiates from sibling tools like eval_hallucination by focusing on factual claim verification against context.

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 explicitly says when to use: 'when a RAG pipeline returned an answer and you want to check the LLM didn't invent facts.' It does not mention when not to use or name alternative tools, but the context of use is well-defined.

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

eval_generate_casesA

Generate synthetic eval cases from a source text.

Calls multivon-eval's synthetic generator to produce n eval cases from raw text (docs, FAQ, knowledge base). Each case has an input (question), expected_output (ground-truth answer), and context (the source excerpt the answer was grounded in). Eliminates the cold-start problem when building a new eval suite from scratch.

Requires a provider API key in env so the underlying judge can propose question/answer pairs.

Args: from_text: Source text to generate cases from (e.g. FAQ, docs chunk, knowledge base article). n: Number of cases to generate. Default 10. task: One of "qa" (question/answer pairs — default), "summarization" (text + expected summary), or "hallucination" (faithful answer + expected_output = "faithful" for hallucination benchmarks). judge_model: Provider:model string used to generate the cases. The generator calls this judge under the hood; it does NOT need to match the judge you eventually use to evaluate the cases. Default "anthropic:claude-haiku-4-5".

Returns: A list of dicts {"input", "expected_output", "context", "metadata"} ready to feed into EvalCase(**d) or to persist as a JSONL eval dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
taskNoqa
from_textYes
judge_modelNoanthropic:claude-haiku-4-5

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 full burden. It discloses that the tool calls an external generator, requires an API key, and returns a specific data structure. It does not mention potential latency or costs, but is transparent about the dependency on an underlying judge model and the generation process.

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 front-loaded with a clear one-sentence summary. It then follows a structured docstring format with Args and Returns sections. While somewhat lengthy, each sentence adds value; minor redundancy could be trimmed without losing clarity.

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 the complexity (4 parameters, no schema descriptions, no annotations), the description covers purpose, parameters with defaults, output structure, and prerequisites (API key). It does not mention error handling or edge cases (e.g., API failure), but for a generation tool, the provided information is sufficient for an agent to use it 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. It provides a detailed 'Args' section explaining each parameter: 'from_text' (source text), 'n' (number of cases, default 10), 'task' (QA, summarization, hallucination with explanations), and 'judge_model' (provider:model string with default). This fully adds meaning beyond the 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 clearly states the verb 'Generate' and the resource 'synthetic eval cases' from a source text. It distinguishes itself from sibling evaluation metrics by focusing on generation rather than evaluation, and provides specifics like producing 'input', 'expected_output', and 'context' for each case.

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 mentions eliminating the cold-start problem when building an eval suite, implying use when starting from scratch. It also notes the requirement of a provider API key. However, it does not explicitly state when not to use or provide alternatives among siblings, though the sibling tools are mostly evaluation metrics, making this tool's purpose distinct.

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

eval_g_evalA

G-Eval style holistic scoring against a plain-English criterion.

The judge reads the criterion and the output, then returns a numeric score from 0.0 to 1.0 plus a short reason. To reduce single-sample variance the prompt is run twice by default and the scores averaged (position/framing bias mitigation per the original G-Eval paper).

Best for fuzzy or holistic qualities: creativity, tone, style, helpfulness, conciseness. For criteria with multiple discrete aspects, prefer eval_custom_rubric.

Args: input: The prompt the LLM was responding to. output: The LLM-generated response to score. criteria: A plain-English description of what to score on, e.g. "Is the response concise, polite, and free of jargon?". name: Optional label for the evaluator instance (appears in the result dict's evaluator field). runs: How many independent judgements to average. Default 2. judge_model: Provider:model for the scoring judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": <name>}.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNog_eval
runsNo
inputYes
outputYes
criteriaYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 full burden. It discloses that two independent runs are averaged by default to mitigate position/framing bias, and describes the return format. It does not discuss authorization, rate limits, or destructive effects, but those are not critical for a scoring tool.

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 summary line, usage guidance, parameter list, and return format. It is front-loaded with the core purpose. Every sentence adds value, and there is no 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?

Given 6 parameters, no annotations, and an output schema (described in text), the description is comprehensive. It covers purpose, behavior, parameters, return format, and sibling comparison. No gaps are evident for the tool's complexity.

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% (no parameter descriptions in schema), but the description's Args section provides detailed semantics for each parameter: input, output, criteria, name, runs, judge_model. It explains defaults and purpose, fully compensating for the schema's lack.

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 it performs 'G-Eval style holistic scoring against a plain-English criterion', using specific verbs and resources. It distinguishes from sibling eval_custom_rubric by noting that tool is better for 'criteria with multiple discrete aspects'.

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 recommends this tool for 'fuzzy or holistic qualities' and explicitly names eval_custom_rubric as an alternative. It also explains the dual-run averaging for variance reduction. However, it lacks explicit when-not-to-use guidance beyond the alternative mention.

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

eval_hallucinationB

Detect fabricated information not present in the context.

Score 1.0 = no hallucination. Score 0.0 = significant hallucination.

Args: output: The LLM output to check. context: The ground-truth context the output should be grounded in. judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float}.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputYes
contextYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It describes return format but does not disclose if it makes external API calls via judge_model or any side effects, permissions, or rate limits.

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?

Front-loaded purpose, concise arguments and returns sections. Could be slightly tighter if output schema were present, but overall efficient.

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?

Covers purpose, parameters, and return structure, but lacks usage guidance and behavioral context. Given medium complexity and available output schema, gaps remain.

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?

Adds clear explanations for each parameter beyond the schema (e.g., 'The LLM output to check', 'Provider:model for the QAG judge'), compensating for zero schema description coverage.

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?

Clearly states it detects fabricated information not in context. Differentiates from siblings by naming hallucination detection but does not explicitly compare to eval_faithfulness or others.

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?

Provides score interpretation but lacks guidance on when to use this tool versus alternatives like eval_faithfulness, and no exclusions or prerequisites.

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

eval_ingest_traceA

Convert a JSON agent trace into a JSON-friendly EvalCase payload.

Parses a serialised agent trajectory and returns the :class:EvalCase shape the rest of the eval pipeline (and the other eval_* MCP tools) expect. Use this when your agent has just finished a trajectory at runtime and you want to score that trajectory immediately — no need to re-run anything.

Supports three frameworks:

  • "langgraph" (default): canonical universal step list

  • "openai_agents": canonical OR {"new_items": [...]} from a RunResult you serialised

  • "manual": canonical step list

Args: trace_json: The trace as a JSON-friendly dict. Must include input; steps (or new_items for openai_agents) is strongly recommended. framework: One of "langgraph", "openai_agents", "manual". Defaults to "langgraph".

Returns: A dict with input, expected_output, context, expected_tool_calls, agent_trace (list of step dicts), and metadata — ready to feed back into other eval_* MCP tools or to persist as part of an eval dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNolanggraph
trace_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 full burden. It discloses supported frameworks, expected input structure (trace_json must include input and steps), and the return shape (keys like input, expected_output, agent_trace). It does not cover error handling or edge cases, but for a conversion tool, the disclosure is adequate.

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-structured with a clear summary, usage guidance, framework details, and structured Args/Returns sections. It is informative without being overly verbose, though it could be slightly shorter while retaining clarity.

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 complexity (multiple frameworks, conversion task) and minimal schema, the description is complete. It explains the output shape (return dict keys) so that the agent knows how to use the result with other eval_* tools. The presence of an output schema in signals does not detract from the description's completeness.

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 has 0% description coverage, so the description must compensate. It does so thoroughly: explains that trace_json must include 'input' and 'steps' (or 'new_items' for openai_agents), and lists the three valid framework values. This adds significant meaning beyond the raw 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 exactly what the tool does: 'Convert a JSON agent trace into a JSON-friendly EvalCase payload.' It is specific about the verb ('Convert') and the resource ('agent trace into EvalCase payload'), and it clearly distinguishes itself from sibling eval_* tools by focusing on trace ingestion rather than evaluation.

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 explicitly says when to use: 'Use this when your agent has just finished a trajectory at runtime and you want to score that trajectory immediately.' It provides context for usage but does not explicitly state when not to use it or compare to alternatives. The guidance is clear but could be more comprehensive with exclusions.

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

eval_pii_detectionA

Detect personally-identifiable information (PII) in an LLM output.

Local-first: zero API calls. Uses a regex pattern library covering emails, phone numbers, SSNs, credit cards, IBANs, IPs, addresses, and jurisdiction-specific identifiers (HIPAA MRNs, EU VAT, California bank accounts, etc).

Score 1.0 = no PII detected. Score 0.0 = PII found (the reason field lists which types matched and example substrings).

Args: output: The LLM-generated text to scan. jurisdiction: Which extra pattern set to include. One of "all" (default), "gdpr", "ccpa", "pipeda", "hipaa", or "dpdp" (India). custom_patterns: Optional dict of {name: regex} to add to the default library (e.g. {"employee_id": r"EMP-\d{6}"}). redact: If True, replace matched substrings with [REDACTED-TYPE] markers in the reason field.

Returns: {"score": 0.0 or 1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "pii_detection"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputYes
redactNo
jurisdictionNoall
custom_patternsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description shoulders the full transparency burden, and it succeeds. It discloses local execution, score semantics, reason-field content, redaction behavior, jurisdiction handling, and custom pattern support. It also documents the exact return shape, so an agent can predict the tool's behavior accurately.

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 detailed but well-organized: a one-sentence purpose, a concise behavioral note, then Args/Returns sections. Every sentence adds useful information, and the most important decision-relevant details are front-loaded.

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?

The description is fully complete for this tool's complexity. It covers all four parameters, the output schema fields, scoring behavior, privacy characteristics, and extension points. Even though an output schema exists, the description adds decision-relevant context such as the threshold/evaluator fields and jurisdiction semantics.

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, and it does extensively. It explains what 'output' is scanned, enumerates every jurisdiction value, gives a concrete custom_patterns example, and clarifies the effect of redact. This adds substantial meaning beyond the bare schema properties.

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: 'Detect personally-identifiable information (PII) in an LLM output.' It also clarifies the local-first scope and defines the 1.0/0.0 scoring meaning, making it clearly distinct from sibling eval tools such as eval_toxicity or eval_schema_compliance.

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: whenever PII detection in LLM output is needed, with a strong signal that it is suitable for privacy-sensitive cases because it is local-first and makes zero API calls. It does not explicitly name alternatives or state when-not-to-use it, so it stops short of a 5.

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

eval_relevanceA

Check whether an LLM output actually addresses the user's question.

QAG-graded — generates yes/no questions about whether the output answers the input, stays on topic, contains relevant content.

Args: input: The user's question. output: The LLM's response. judge_model: Provider:model for the QAG judge.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float}.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
outputYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 discloses the QAG method and the return structure, but does not mention side effects, permissions, rate limits, or determinism. The behavioral disclosure is adequate but not comprehensive.

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 short, front-loaded with the purpose, and structured with Args and Returns sections. Every sentence is necessary and no extraneous information is present.

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 the tool has 3 parameters and an output schema described in the returns, the description covers the main points: method, parameters, and return values. However, it misses explaining the threshold default and configuration, and lacks guidance on when to use this tool versus siblings. Still, it is largely complete.

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 coverage is 0%, so the description must add parameter meaning. It clearly explains input as 'The user's question', output as 'The LLM's response', and judge_model with format 'Provider:model'. This adds value beyond the schema's titles and types. A slight deduction for lacking constraints on judge_model values.

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 checks if an LLM output addresses the user's question, using a QAG-graded method. This is a specific verb+resource, and the method detail (generates yes/no questions) distinguishes it from sibling evaluators like eval_answer_accuracy or eval_faithfulness.

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 implies usage for relevance checking, but does not explicitly provide when-to-use or when-not-to-use guidance relative to sibling tools. No alternatives or exclusions are mentioned, which is a gap given the presence of many similar eval_* tools.

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

eval_schema_complianceA

Validate that an LLM output conforms to a JSON Schema.

Wraps multivon-eval's SchemaEvaluator. Parses the LLM output as JSON (tolerantly strips markdown code fences), then validates the parsed structure against the provided JSON Schema dict. Reports per-field validation errors — not just "valid/invalid".

For Pydantic-model validation or more advanced setups (custom validators, recursive schemas), use the multivon-eval SDK directly.

Args: output: The LLM-generated text expected to contain JSON. schema: A JSON Schema dict (Draft 7). Example: {"type": "object", "required": ["title", "score"], "properties": {"title": {"type": "string"}, "score": {"type": "number"}}}. strict: If True, additional fields not in the schema are treated as failures.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "schema_compliance"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputYes
schemaYes
strictNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It thoroughly explains behavior: tolerant parsing (strips markdown fences), per-field validation errors, strict mode effect, and the exact return format. No contradictions.

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-structured and front-loaded with the purpose. It is slightly lengthy due to parameter and return details, but each sentence adds value. Could be slightly more concise without losing clarity.

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 complexity (3 parameters, output schema exists), the description is complete. It explains the return format, error handling, and parameter semantics. No gaps remain for the agent to guess.

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%, but the description compensates fully with detailed parameter explanations: 'output' as LLM-generated text, 'schema' with a concrete JSON Schema example, and 'strict' with its boolean effect. This adds significant meaning beyond the 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 clearly states the tool's purpose: 'Validate that an LLM output conforms to a JSON Schema.' It differentiates from sibling eval tools by focusing on schema compliance, and mentions internal details that help the agent understand its scope.

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?

Explicit usage guidance is provided: 'For Pydantic-model validation or more advanced setups... use the multivon-eval SDK directly.' This tells the agent when not to use this tool, and the description explains the tool's capabilities (tolerant parsing, per-field errors) that help decide when to use it.

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

eval_tool_call_accuracyA

Evaluate whether an agent called the expected tool or tool sequence.

Pure deterministic — no LLM judge needed. Two compatible modes:

  • Single-call mode compares expected_tool / actual_tool and optional argument dictionaries exactly.

  • Trace mode consumes expected_tool_calls plus the canonical agent_trace returned by eval_ingest_trace. It can require order and optionally penalize unexpected calls.

Args: expected_tool: Single tool name the agent should have called. actual_tool: Single tool name the agent actually called. expected_arguments: Expected arguments for single-call mode. actual_arguments: Actual arguments for single-call mode. expected_tool_calls: Expected names for trace mode. An empty list explicitly asserts that the agent should call no tools. agent_trace: Canonical step dictionaries returned by eval_ingest_trace. require_order: In trace mode, require expected names in order. penalize_unexpected: In trace mode, lower the score for calls not present in expected_tool_calls.

Returns: {"score": float, "passed": bool, "reason": str, "evaluator": "tool_call_accuracy"}, or an error dict when the arguments do not form either mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
actual_toolNo
agent_traceNo
expected_toolNo
require_orderNo
actual_argumentsNo
expected_argumentsNo
expected_tool_callsNo
penalize_unexpectedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure responsibility, and it does very well. It explicitly states 'Pure deterministic — no LLM judge needed', explains exact argument comparison, describes order-sensitive behavior, optional unexpected-call penalization, the empty-list assertion, and the return/error contract.

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 front-loaded with the core purpose and then organized into mode bullets, Args, and Returns. Despite covering eight parameters and two modes, it contains no filler and each sentence adds necessary information.

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 complex evaluation tool with zero annotations and zero schema descriptions, the description is remarkably complete. It covers both modes, the relationship to eval_ingest_trace, special cases like empty expected_tool_calls, default-order behavior, penalization semantics, return schema, and the error condition for invalid argument combinations.

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, and it does: every parameter is named and given operational meaning. Expected/actual arguments are tied to single-call mode, expected_tool_calls and agent_trace to trace mode, and require_order/penalize_unexpected to boolean behavioral switches.

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: 'Evaluate whether an agent called the expected tool or tool sequence.' It clearly distinguishes this as an evaluation tool for tool-call accuracy, not a generic evaluator or a tool being evaluated. The mention of two modes further pins down 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?

The description gives clear context for when each mode applies: single-call mode for comparing one expected/actual pair, trace mode for consuming the canonical agent_trace from eval_ingest_trace. It does not explicitly name alternatives or state 'use this instead of X', but the mode breakdown and deterministic no-LLM-judge note give sufficient decision guidance.

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

eval_toxicityA

Detect harmful, offensive, or inappropriate content in an LLM output.

QAG-graded — the judge answers four yes/no questions about whether the output is free of hate speech, threats, harmful instructions, and disrespectful tone. Score is the fraction of questions that pass; 1.0 = not toxic, 0.0 = toxic.

Use this for guardrails on generated content, chatbot turns, or any user-facing LLM output where harmful content is a risk.

Args: output: The LLM-generated text to evaluate. judge_model: Provider:model for the QAG judge, e.g. "anthropic:claude-haiku-4-5" (default), "openai:gpt-4o-mini", or "google:gemini-2.5-flash".

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "toxicity"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputYes
judge_modelNoanthropic:claude-haiku-4-5

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 full burden. It describes the scoring logic (four yes/no questions, fraction), the returned output schema, and that it evaluates LLM output. It does not mention any destructive side effects, which is appropriate for a read-only evaluation tool.

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 concisely structured with a clear one-line purpose, followed by grading details, usage guidance, and parameter explanations. Every sentence adds necessary information 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?

Given the tool's simplicity (2 parameters, output schema provided), the description covers all necessary aspects: purpose, scoring method, usage context, parameter details, and return value structure. No gaps remain.

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%, but the description adds full meaning: 'output' is defined as 'The LLM-generated text to evaluate' and 'judge_model' is explained with examples and default. This compensates entirely for the schema's lack of descriptions.

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 detects harmful content in LLM output, with a specific verb 'detect' and resource. It explains the QAG-grading mechanism, distinguishing it from sibling eval tools like eval_bias or eval_hallucination.

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 explicitly says to use for guardrails, chatbot turns, or user-facing LLM output where harmful content is a risk. It provides clear context but does not mention when not to use or compare directly to alternatives.

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

eval_vqa_faithfulnessA

Check whether an LLM answer about an image is grounded in what's visible.

Image-grounded faithfulness. The vision judge extracts up to 3 factual claims from the answer, then verifies each one against the image. Score = fraction of claims that are accurate.

Use this for visual QA, image captioning, chart/diagram reading, and any LLM output that purports to describe an image.

Image input — exactly one of:

  • image: a local path, http(s) URL, or full data URI.

  • image_base64: raw base64 (no data: prefix); pair with mime_type (default "image/png").

Args: input: The question or prompt the LLM was answering. output: The LLM-generated answer to verify against the image. image: Path / URL / data URI for the image. image_base64: Alternative — raw base64 image bytes. mime_type: Mime type when using image_base64. Default "image/png". Other common values: "image/jpeg", "image/webp". judge_model: Provider:model for the vision judge. Must be vision-capable. Default "google:gemini-2.5-flash" (cheap). Other vision-capable options: "openai:gpt-4o-mini" or "anthropic:claude-sonnet-4-6". Haiku 4.5 also supports image input; verify task quality on your own held-out cases.

Returns: {"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "vqa_faithfulness"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNo
inputYes
outputYes
mime_typeNoimage/png
judge_modelNogoogle:gemini-2.5-flash
image_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 the internal process (claim extraction, verification), the scoring logic, and the return format including score, passed, reason, threshold, and evaluator. It also details judge_model options and cautions about Haiku quality. It doesn't disclose edge cases (e.g., unreadable images) but covers the core behavior thoroughly.

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-organized into sections (purpose, usage, image input, args, returns) and front-loads the core purpose and method. Though moderately long, every sentence adds necessary information for a tool with six parameters. There is no redundancy or filler.

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 complexity (6 params, no annotations, output schema present), the description is complete. It covers all parameters, defaults, alternatives, return format, and usage guidance. It even notes the threshold field in the output. An agent has everything needed to call it 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 fully compensates. The Args section provides detailed explanations for all six parameters, including input/output roles, image input alternatives (path/URL/data URI vs. base64), mime_type defaults and common values, and judge_model defaults and alternatives. This goes well beyond the bare schema definitions.

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 precise statement of what the tool does: 'Check whether an LLM answer about an image is grounded in what's visible.' It then details the method (extract up to 3 factual claims, verify each against the image, score = fraction accurate). This clearly distinguishes it from text-only siblings like eval_faithfulness and eval_hallucination.

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 explicitly states when to use it: 'Use this for visual QA, image captioning, chart/diagram reading, and any LLM output that purports to describe an image.' This gives clear positive use cases, but it does not explicitly mention alternatives or when not to use it. It could be improved by naming text-only counterparts (e.g., eval_faithfulness) as not applicable.

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

pdfhell_makeA

Generate one adversarial PDF + its answer key.

Useful for an agent to inspect what a specific trap looks like before deciding to evaluate against it.

Args: trap: Trap family name. The full list of 17+ families is discoverable via eval_discover (which is also the source of truth — pdfhell adds families over time and hard-coding them here would go stale). Examples include "hidden_ocr_mismatch", "footnote_override", and the autoresearch-discovered families in mini-v3/v4. seed: Integer seed. Same seed → byte-identical PDF + identical answer key. return_pdf_bytes: If True, include the base64-encoded PDF bytes in the response. Default False — most agents want the question / expected answer, not the raw PDF.

Returns: A dict with the case JSON (id, trap_family, question, expected_answer, forbidden_answers, metadata) and optionally the base64-encoded PDF bytes under pdf_base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedYes
trapYes
return_pdf_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 bears full responsibility. It discloses output structure (dict with case JSON and optional PDF bytes) and behavioral guarantee (same seed yields identical output). No destructive side effects are implied, which is appropriate for a generative tool.

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-structured with a summary line, usage context, and an Args/Returns list. Every sentence adds value, though it is slightly verbose. It front-loads the primary purpose.

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 the presence of an output schema and the tool's simplicity, the description covers essential aspects: output structure, parameter semantics, and usage context. It is sufficient 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?

With 0% schema description coverage, the description fully explains all three parameters: trap (family name, examples, source of truth), seed (integer, determinism), and return_pdf_bytes (default behavior and purpose). This goes 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 clearly states the tool's purpose: 'Generate one adversarial PDF + its answer key.' It uses a specific verb-resource pair and distinguishes itself from siblings like eval_discover and pdfhell_run by noting that eval_discover lists trap families.

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 explains when to use this tool ('to inspect what a specific trap looks like before deciding to evaluate against it') and provides guidance on obtaining trap family names via eval_discover. It does not explicitly exclude scenarios but gives clear context for typical usage.

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

pdfhell_runA

Run the pdfhell adversarial-PDF benchmark against a vision model.

Args: model: Provider:model spec, e.g. "anthropic:claude-sonnet-4-6", "openai:gpt-4o", "google:gemini-2.5-flash". suite: Any suite from eval_discover. Current suites: "smoke" (3 cases, ~10s), "mini" (30 cases, ~$0.01 on Flash), "mini-v2", "mini-v3", the flagship "mini-v4" (17 trap families, 510 cases), and "mini-v4-sample" (170 cases — cheap reproduction of mini-v4). Default "mini". workers: Parallel API requests. Default 4.

Returns: A dict with overall pass_rate, Wilson 95% CI, per-trap-family pass rates and CIs, and per-case details. Suite version + hash included so consumers can verify the run measured the expected cases.

Provider API keys come from environment variables (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY) — not passed through this tool, never logged.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
suiteNomini
workersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 fully carries the burden. It discloses that it runs a benchmark, calls external APIs using environment variables (with keys like ANTHROPIC_API_KEY), and that keys are not logged. It also describes the return value structure. This provides good behavioral insight, though it does not explicitly state non-destructive or rate-limit behaviors.

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 'Args' and 'Returns' sections, making it easy to parse. It uses bullet points for suite options and includes example formats for model. Every sentence provides useful information; there is no fluff. It is appropriately sized for the tool's complexity.

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 that an output schema exists, the description needs not detail return values fully. However, it does summarize the return dict and notes that suite version/hash are included. It covers the tool's purpose, all parameters with defaults, and additional context about environment variables. The description is complete for this tool's context.

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 input schema has 0% description coverage, so the description must compensate. It does so excellently: model format with examples, suite options with case counts and cost estimates, and workers with default. This adds significant meaning beyond the raw schema types. Every parameter is explained with concrete details.

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 starts with 'Run the pdfhell adversarial-PDF benchmark against a vision model,' which clearly states the verb (run) and resource (adversarial-PDF benchmark). This distinguishes it from sibling eval_* tools and pdfhell_make, all of which have different purposes. The purpose is specific and immediately understandable.

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?

While the description explains what the tool does and details the parameters, it does not explicitly guide when to use this tool versus alternatives like pdfhell_make or other eval tools. It implies usage when running a pdfhell benchmark, but no explicit when-to-use/when-not-to-use guidance is provided. The lack of differentiation from siblings limits the score.

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. 2 tool updatesv0.4.0
    • Addedeval_acceptance_report
    • Changedeval_tool_call_accuracy11 fields changed
      • addedInput schema / properties / actual_tool / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / actual_tool / default
        Added value: +null
      • removedInput schema / properties / actual_tool / type
        Removed value: -"string"
      • addedInput schema / properties / agent_trace
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Agent Trace"
        +}
      • addedInput schema / properties / expected_tool / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / expected_tool / default
        Added value: +null
      • removedInput schema / properties / expected_tool / type
        Removed value: -"string"
      • addedInput schema / properties / expected_tool_calls
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Expected Tool Calls"
        +}
      • addedInput schema / properties / penalize_unexpected
        Added value: +{
        +  "default": false,
        +  "title": "Penalize Unexpected",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / require_order
        Added value: +{
        +  "default": false,
        +  "title": "Require Order",
        +  "type": "boolean"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "expected_tool",
        -  "actual_tool"
        -]
  2. 13 tool updatesv0.3.2
    • Addedeval_bias
    • Addedeval_compare_runs
    • Addedeval_context_precision
    • Addedeval_context_recall
    • Addedeval_custom_rubric
    • Addedeval_document_grounding
    • Addedeval_g_eval
    • Addedeval_generate_cases
    • Addedeval_ingest_trace
    • Addedeval_pii_detection
    • Addedeval_schema_compliance
    • Addedeval_toxicity
    • Addedeval_vqa_faithfulness
  3. 9 tool updatesv0.1.0
    • First observedeval_answer_accuracy
    • First observedeval_audit_pack
    • First observedeval_discover
    • First observedeval_faithfulness
    • First observedeval_hallucination
    • First observedeval_relevance
    • First observedeval_tool_call_accuracy
    • First observedpdfhell_make
    • First observedpdfhell_run

TDQS

A3.9/5.0

Scored across 23 tools

Disambiguation3/5

Most eval tools target distinct metrics, but several are easy to conflate: eval_faithfulness/eval_hallucination are inverse measures of the same construct, eval_vqa_faithfulness/eval_document_grounding both do vision-grounded checking, and eval_relevance/eval_answer_accuracy both score response quality. The detailed descriptions help, but the sheer number of similar score/pass/reason evaluators still creates real selection ambiguity.

Naming Consistency4/5

All tools use snake_case and nearly all share the eval_ prefix followed by a metric noun (eval_toxicity, eval_context_precision), with a few verb-style exceptions (eval_discover, eval_ingest_trace, eval_generate_cases). The two pdfhell_* tools form a coherent sub-namespace rather than a violation, so overall naming is consistent but not perfectly uniform.

Tool Count3/5

With 23 tools, this is on the heavy end for an MCP server and an agent must navigate a large surface. The breadth is defensible for a full LLM evaluation platform covering text, vision, RAG, safety, and PDF benchmarks, but some tools are closely related and could plausibly be consolidated.

Completeness4/5

The set covers a full eval lifecycle: case generation, trace ingestion, diverse text/vision/RAG/safety evaluators, report comparison, acceptance policies, and audit packaging. Minor gaps remain—such as no dedicated summarization or code-quality evaluator and no explicit tool for assembling arbitrary eval results into a saved report—but generic G-Eval and custom-rubric tools close most holes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that provides AI coding agents with AST-accurate, context-budget-aware codebase querying, safety gates, and team policy integration via structured tools and a local plugin layer.
    121 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.
    123 npm
    5
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    MCP server that gives AI coding assistants persistent memory, structural code graph analysis, and safe multi-agent coordination, enabling them to answer architectural questions, track decisions across sessions, and coordinate safely in multi-agent workflows.
    39
    4
    -