multivon-mcp
OfficialThe multivon-mcp server provides AI agents with 22 tools for comprehensive evaluation of LLM products, RAG pipelines, agent behavior, and document AI, directly via the Model Context Protocol.
Discovery & Document AI
eval_discover: Retrieve a machine-readable catalog of all evaluators, PDF traps, and test suites.pdfhell_make: Generate a single adversarial PDF and its answer key for a specific trap type.pdfhell_run: Run the adversarial-PDF benchmark against a vision model, returning pass rates, confidence intervals, and per-trap-family breakdowns.eval_audit_pack: Bundle a pdfhell run into a hash-chained, procurement-ready audit ZIP (SHA-256 manifest, JUnit XML, case PDFs).
RAG Generation & Retrieval Evaluation
eval_faithfulness: Check if a RAG output is grounded in the retrieved context (QAG-graded).eval_hallucination: Detect fabricated information not present in the provided context.eval_relevance: Assess whether an LLM response addresses the user's question.eval_answer_accuracy: Evaluate semantic equivalence against a ground-truth reference.eval_context_precision: Check if retrieved chunks are on-topic.eval_context_recall: Assess if the context contains enough information to answer.
Safety, Compliance & Fairness
eval_toxicity: Detect harmful content in LLM outputs.eval_bias: Identify bias across axes such as gender, race, and politics.eval_pii_detection: Local regex scan for PII — no API egress.eval_schema_compliance: Validate LLM output against a JSON Schema.
Agent & Multimodal Evaluation
eval_tool_call_accuracy: Deterministically verify correct tool calls and arguments (no LLM judge required).eval_vqa_faithfulness: Evaluate image-grounded visual-QA faithfulness.eval_document_grounding: Assess multi-page document-grounded faithfulness for document-AI agents.
Flexible Scoring
eval_g_eval: Score output against a plain-English criterion (0.0–1.0).eval_custom_rubric: Score output against a custom list of yes/no quality checks.
Agent Workflows
eval_compare_runs: Diff two eval report JSONs for regression analysis and pass-rate deltas.eval_generate_cases: Generate eval cases (input, expected output, context) from source text.eval_ingest_trace: Convert agent traces (e.g., LangGraph, OpenAI Agents) into an EvalCase payload for scoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@multivon-mcpevaluate my RAG output for hallucinations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
multivon-mcp
Docs · Website · PyPI · multivon-eval (engine) · Changelog
These 22 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 calibrated evaluators against them. 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.3.2. The repository's unreleased changes track MCP Python SDK 1.29.x, multivon-eval 0.16.1, and pdfhell 0.6.1. See the changelog.
Install
pip install "mcp<2" multivon-mcp # required by released 0.3.2The 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 multivonSet 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 22 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.pyFrom 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 22 tools
Discovery & document AI
Tool | What it does | API key |
| Full machine-readable capability catalog (evaluators, traps, suites, calibration data, versions). Call first. | No |
| Generate one adversarial PDF + its answer key. | No |
| Run the pdfhell adversarial-PDF benchmark against a vision model. Returns pass rate, per-trap CIs, suite hash. | Yes (vision) |
| 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 |
| QAG-graded faithfulness — is a RAG output grounded in the retrieved context? | Yes |
| QAG-graded hallucination — does the output contain content NOT in context? | Yes |
| QAG-graded answer-vs-question relevance. | Yes |
| QAG-graded semantic equivalence vs ground truth. | Yes |
| RAG retrieval quality — are the retrieved chunks on-topic? | Yes |
| RAG retrieval completeness — does context contain enough info to answer? | Yes |
Safety, compliance, fairness
Tool | What it does | API key |
| QAG-graded toxicity / harmful-content detection. | Yes |
| QAG-graded bias across gender, race, politics, age, socioeconomic axes. | Yes |
| Local-only regex scan for PII (GDPR / CCPA / PIPEDA / HIPAA / DPDP packs). | No |
| Validate an LLM output against a JSON Schema. | No |
Agent & multimodal
Tool | What it does | API key |
| Deterministic agent tool-call correctness. No LLM. | No |
| Image-grounded visual-QA faithfulness. | Yes (vision) |
| Multi-page document-grounded faithfulness for document-AI agents. | Yes (vision) |
Agent traces.
eval_tool_call_accuracyand the other agent-trace evaluators inmultivon-eval(ToolArgumentAccuracy,ToolCallNecessity,TrajectoryEfficiency,AgentMemoryEval,PlanQuality,TaskCompletion,StepFaithfulness) take anagent_trace=[AgentStep(...)]plusexpected_tool_calls=[...]on the case. Three-shape semantics matter:expected_tool_calls=Noneskips,[]asserts "no tools called", and[...]checks for the named calls. On repositorymain(shipping in the next release), the MCP tool supports the same trace mode: normalize trace JSON witheval_ingest_trace, then pass itsagent_traceplusexpected_tool_callstoeval_tool_call_accuracy. Setrequire_order=truewhen sequence matters orpenalize_unexpected=truefor a strict allow-list. See themultivon-evalagent integrations for the source-of-truth tracer code.
Flexible scoring
Tool | What it does | API key |
| G-Eval holistic 0.0-1.0 scoring against a plain-English criterion. | Yes |
| Score against your own list of yes/no quality checks. | Yes |
Agent workflows (new in 0.3.0)
Tool | What it does | API key |
| Diff two eval report JSONs — pass-rate delta, per-case regressions/improvements, McNemar p-value. Use after every fix to confirm it actually helped. | No |
| 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) |
| 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.Why these 22 tools (not all 44)
eval_discover returns the full 44-evaluator catalog, so the agent can always introspect everything. The 22 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 flowAudit 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_trace → eval_*), 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.
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.16.1— the 44-evaluator engine, current report schema, and reasoning-judge fix.pdfhell >= 0.6.1— the 17-family mini-v4 registry, corrected trap renderings, and current audit-pack schema.
These bounds are on repository main and will ship in the next release. For
released 0.3.2, use pip install "mcp<2" multivon-mcp so pip does not resolve
the incompatible MCP 2.0 server API.
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 |
Claude Code 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 |
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 |
Python SDK — 44 evaluators + | |
Adversarial PDFs that break AI document readers — exposed here as | |
multivon-mcp (you are here) | MCP server — 22 tools from multivon-eval + pdfhell |
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},
}Available Tools
22 toolseval_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}.
| Name | Required | Description | Default |
|---|---|---|---|
| expected_answer | Yes | ||
| actual_answer | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 hash-chained 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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_json_path | Yes | ||
| cases_dir | Yes | ||
| output_zip_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 tool combines multiple inputs and writes a ZIP file, listing contents (run JSON, case PDFs, answer keys, JUnit XML, manifest). It also describes the return value structure. However, it does not mention potential side effects like file overwriting or error handling, which would elevate it to 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise one-line summary, followed by a brief paragraph on contents, then Args/Returns. It is front-loaded with the purpose. While somewhat lengthy for a simple tool, every sentence adds value and the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters and no output schema shown (though context says one exists), the description covers inputs and return structure thoroughly. It includes a note about the manifest's utility. Missing elements are prerequisites (e.g., run must have been executed) and error conditions, but overall it is complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema lacks descriptions (0% coverage). The description compensates fully with a dedicated 'Args' section that explains each parameter in context: run_json_path is from 'pdfhell run --out', cases_dir contains case PDFs and answer keys, output_zip_path is where to write. This adds essential meaning beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear, specific verb-resource combination: 'Build a hash-chained audit ZIP from a pdfhell run.' It defines the output format and distinguishes itself from sibling tools (eval_*, pdfhell_make/run) which focus on evaluation metrics or execution, not packaging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is 'Suitable for attaching to a procurement diligence appendix,' providing a concrete use case. It implies usage after a pdfhell run, but does not explicitly exclude scenarios or name alternatives. Context with sibling tools clarifies its distinct role.
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 case_input, and
returns pass-rate / average-score deltas plus the per-case
regressions and improvements lists. Includes a McNemar
p-value so the agent can tell a real shift from small-sample
noise.
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
| Name | Required | Description | Default |
|---|---|---|---|
| baseline_json_path | Yes | ||
| new_json_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description discloses key behaviors: reads files from disk, pairs by case_input, computes deltas, and includes McNemar p-value for statistical significance. It is transparent about the operations and return values, though it could mention if the tool has any side effects (likely none).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-sentence summary, an explanation of functionality and use case, parameter listing, and detailed return format. Every sentence adds value, and it is concise given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two parameters fully explained and the return format detailed in the description (including nested dicts and lists), the description is complete. It also explains the logic (pairing, McNemar test) and provides context for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description provides an 'Args' section explaining both parameters (baseline_json_path and new_json_path) with examples. This fully compensates 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it compares two eval report JSONs and returns a structured diff. It uses a specific verb (compare) and resource (multivon-eval report JSONs), and the purpose is distinct from sibling tools that evaluate single aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly specifies when to use (after making a prompt/retrieval/model change to assess improvement) and provides context for case-by-case analysis. However, it does not explicitly mention when not to use or list alternative tools, though the sibling context implies uniqueness.
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| context | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| context | Yes | ||
| expected_answer | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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>}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| criteria | Yes | ||
| name | No | custom_rubric | |
| context | No | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 three top-level keys:
- ``evaluators``: every available multivon-eval evaluator,
with its tier, what inputs it needs, and (when shipped)
calibrated default thresholds per judge model.
- ``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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 the return structure in detail (three keys: evaluators, traps, suites) and mentions it is machine-readable. It does not mention side effects or permissions, but the tool is read-only and safe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise with a clear structure: a lead sentence, usage note, and a bullet-like list of return keys. It could be slightly shorter, but it is well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters), the description is complete. It explains the purpose, usage context, and output structure in sufficient detail. Even with an output schema present, the description provides all necessary information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (no props). The description adds value by detailing the output structure, which is not captured in the input schema. This compensates for the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Return the full machine-readable capability catalog.' It distinguishes itself from sibling evaluation tools by positioning itself as the initial discovery call, unlike the other eval tools that perform specific evaluations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool as a first call at session start to plan evaluation strategy, providing clear context. It does not explicitly say when not to use it, but the sibling names imply it is for initial discovery before other tools.
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 withmime_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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| images | No | ||
| images_base64 | No | ||
| mime_type | No | image/png | |
| judge_model | No | google:gemini-2.5-flash |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| context | Yes | ||
| output | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| from_text | Yes | ||
| n | No | ||
| task | No | qa | |
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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>}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| criteria | Yes | ||
| name | No | g_eval | |
| runs | No | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| output | Yes | ||
| context | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 aRunResultyou 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.
| Name | Required | Description | Default |
|---|---|---|---|
| trace_json | Yes | ||
| framework | No | langgraph |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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",
or "hipaa".
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| output | Yes | ||
| jurisdiction | No | all | |
| custom_patterns | No | ||
| redact | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: local-only operation, scoring (1.0 for no PII, 0.0 for PII found), and the redact feature. It adds value beyond the input schema by explaining the purpose and effects of parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: a one-line purpose, a brief feature paragraph, scoring explanation, and a list of args. It is concise but not overly brief; each section adds useful information. Slight room for tightening, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: purpose, usage context, parameter details, and a return format example. Given the presence of an output schema (context signal), the return values are explained, ensuring the agent has complete information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description thoroughly explains each parameter: 'output' (text to scan), 'jurisdiction' (lists possible values), 'custom_patterns' (dict of name:regex), and 'redact' (boolean for replacements). This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Detect personally-identifiable information (PII) in an LLM output.' It identifies the specific resource (LLM output) and verb (detect), and differentiates from sibling eval tools by focusing on PII detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes 'Local-first: zero API calls,' implying safe deployment without external dependencies. It also explains jurisdiction and custom patterns options, providing context for use. However, it does not explicitly state when to avoid using this tool or compare to alternatives like toxicity detection.
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| output | Yes | ||
| schema | Yes | ||
| strict | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 right tool with the right arguments.
Pure deterministic — no LLM judge needed. Compares the actual tool name + arguments against expected.
Args: expected_tool: Tool name the agent should have called. actual_tool: Tool name the agent actually called. expected_arguments: Dict of expected argument values (optional). actual_arguments: Dict of argument values the agent passed (optional).
Returns:
{"score": 0.0 or 1.0, "passed": bool, "reason": str}.
| Name | Required | Description | Default |
|---|---|---|---|
| expected_tool | Yes | ||
| actual_tool | Yes | ||
| expected_arguments | No | ||
| actual_arguments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries burden. It discloses deterministic behavior (no LLM), input parameters (expected/actual), and return format (score, passed, reason). Does not mention side effects, which is acceptable for a stateless 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is succinct (~8 lines) with clear sections: purpose, behavior, args, returns. No wasted words; structure facilitates quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of output schema, the description fully covers inputs, deterministic behavior, and return value. No gaps 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds meaning via Args section: explains each parameter (expected_tool, actual_tool, etc.) and notes optionality of arguments. Provides clarity beyond schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool evaluates tool call accuracy by comparing actual vs expected tool names and arguments. It distinguishes itself from sibling eval tools by focusing on tool call correctness and emphasizing deterministic nature without LLM judge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for objective evaluation but lacks explicit guidance on when to use this tool versus other eval tools like eval_answer_accuracy or eval_faithfulness. No when-not recommendations are given.
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"}.
| Name | Required | Description | Default |
|---|---|---|---|
| output | Yes | ||
| judge_model | No | anthropic:claude-haiku-4-5 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 (nodata:prefix); pair withmime_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" (not haiku — Haiku 4-5
is not vision-capable).
Returns:
{"score": 0.0-1.0, "passed": bool, "reason": str, "threshold": float, "evaluator": "vqa_faithfulness"}.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| output | Yes | ||
| image | No | ||
| image_base64 | No | ||
| mime_type | No | image/png | |
| judge_model | No | google:gemini-2.5-flash |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 the scoring mechanism (fraction of accurate claims), the use of a vision judge model, and the return format. Does not mention side effects, but as a read-only 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: summary, process, use cases, image input options, args, and returns. Every sentence adds value. Could be slightly more concise, but the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 2 required, output schema textually described), the description is comprehensive. Covers all parameters, return values, and use cases. Does not mention error handling, but for an evaluation tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by explaining all 6 parameters including formats, defaults, and alternatives. Input and output are clearly described, image input options are detailed, and judge_model options are provided with examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking if an LLM answer about an image is grounded in what's visible. It explains the process (extracts up to 3 claims, verifies each) and distinguishes from sibling tools like eval_faithfulness by focusing on image-grounded evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases: visual QA, image captioning, chart/diagram reading, and any LLM output describing an image. Provides guidance on judge model selection (including not using Haiku). Could be improved by explicitly stating when not to use (e.g., for text-only faithfulness), 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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| trap | Yes | ||
| seed | Yes | ||
| return_pdf_bytes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| suite | No | mini | |
| workers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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. Dates show when Glama detected each change.
13 tool updates
v0.3.2- Added
eval_bias - Added
eval_compare_runs - Added
eval_context_precision - Added
eval_context_recall - Added
eval_custom_rubric - Added
eval_document_grounding - Added
eval_g_eval - Added
eval_generate_cases - Added
eval_ingest_trace - Added
eval_pii_detection - Added
eval_schema_compliance - Added
eval_toxicity - Added
eval_vqa_faithfulness
9 tool updates
v0.1.0- First observed
eval_answer_accuracy - First observed
eval_audit_pack - First observed
eval_discover - First observed
eval_faithfulness - First observed
eval_hallucination - First observed
eval_relevance - First observed
eval_tool_call_accuracy - First observed
pdfhell_make - First observed
pdfhell_run
TDQS
Each evaluation tool targets a distinct aspect of LLM output quality (accuracy, bias, faithfulness, toxicity, etc.), with clear boundaries and no overlapping purposes. The few potential overlaps are clearly differentiated by context or methodology.
Most tools follow a consistent 'eval_' prefix with verb_noun pattern (e.g., eval_answer_accuracy). Minor deviations like 'eval_g_eval' and 'eval_discover' are still clear and do not break the overall pattern.
22 tools is well-scoped for a comprehensive evaluation server, covering a wide range of metrics, PDF generation, run comparison, and discovery. Each tool earns its place without being overwhelming.
The tool surface covers all major evaluation dimensions: answer accuracy, bias, context quality, faithfulness, hallucination, relevance, toxicity, PII, schema compliance, tool call accuracy, and vision/VQA. Additionally includes case generation, run comparison, and PDF benchmarks. No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn 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.5624MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI coding agents to communicate, share state, and coordinate work in real time via MCP tools or REST API.1595MIT
- FlicenseBqualityCmaintenanceMCP 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.394-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI coding agents structured access to a project's architecture, rules, modules, and technical decisions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/multivon-ai/multivon-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server