Skip to main content
Glama
byreshb

testing-toolkit-mcp

by byreshb

Run a golden set against a prompt version

llmeval.run
Idempotent

Evaluate LLM prompt versions against a golden dataset, returning per-case checks, score, tokens, latency, and pass rate. Replay recorded responses without an API key, or record new model calls.

Instructions

Runs llm-eval-harness over a golden dataset with one prompt version and returns every case with its checks, score, tokens and latency, plus the pass rate. Mode replay (default) serves recorded responses and needs no API key; record calls the model and saves recordings. The result file path is returned for llmeval.drift.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoreplay uses recordings (no API key); record calls the modelreplay
repoNoRepository root to run in; defaults to TOOLKIT_REPO
promptYesPrompt name, for example support-answer
versionYesPrompt version to run
goldenSetYesGolden dataset file (YAML or JSON), relative to the repository

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYes
casesYes
modelNo
promptYes
datasetYes
summaryYes
resultsPathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.1-SNAPSHOT

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare non-read-only and idempotent, while the description adds valuable behavior: replay serves recorded responses with no API key, record invokes the model and saves recordings, and the run returns per-case checks, score, tokens, latency, pass rate, and a result file path. This goes well beyond the structured hints and does not contradict them.

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

Conciseness5/5

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

Three sentences pack the core behavior, mode choice, returned metrics, and downstream hook with no filler. The central purpose is front-loaded, and the mode and result-file details follow in a natural order.

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

Completeness5/5

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

For a tool with five parameters, one enum, an output schema, and annotations, the description covers the input resources, the mode alternatives, the returned metrics, and how the result feeds llmeval.drift. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and every parameter already has a description, so the tool description is not required to add parameter-level detail. It reinforces the mode distinction in prose and explains the output, but it does not introduce new meaning for goldenSet, prompt, version, or repo beyond what the schema already provides.

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

Purpose5/5

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

The description names a concrete action ('Runs llm-eval-harness') and a precise resource ('a golden dataset with one prompt version'), and the title reinforces the exact unit of work. It also signals the downstream relationship to llmeval.drift, which helps distinguish this runner from the TQL/flake sibling tools.

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

Usage Guidelines4/5

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

The description gives clear decision-relevant guidance: replay is the default, serves recorded responses, and needs no API key, while record calls the model and saves recordings. It does not explicitly say 'use replay when X, use record when Y' or contrast with llmeval.drift, but the mode semantics are clear enough for an agent to choose correctly.

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