Skip to main content
Glama
valentil

FeatureBoard MCP Server

by valentil

Eval: model up/downgrade effectiveness at test time

eval_model_matrix

Runs a ticket's per-model test variants against seeded regressions to measure defect detection by model tier, including unique-catch rate, overlap matrix, and cost per caught defect.

Instructions

FBMCPF-148 — run a ticket's per-model test variants (test/..test.js, from generate_multi_model_tests / save_generated_test) against seeded regressions to see which tier's tests actually catch bugs. Seeds deterministic textual mutations (a built-in set, or caller-supplied find/replace patch specs) into a COPY of targetFile inside a fresh temp dir — the repo is never touched — runs each model's variant file with node --test before and after, and reports per-model defects caught, unique-catch rate (defects only that tier's tests caught), an overlap matrix, and cost per caught defect (tokensByModel × pricing.js rates). Omit targetFile to just run the baseline pass/fail matrix (no seeded mutations). Writes nothing to the repo unless writeEvidence:true, which appends the formatted readout to docs/EVIDENCE.md under codeLocation — mode is required so a demo run can never be silently mistaken for real defect data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYesLabel the readout honestly: 'real' for actual ticket variants against real seeded defects, 'harness-validation' for a demo fixture proving the harness works end-to-end.
ticketYesTicket whose test/<ticket>.<model>.test.js variants to run.
projectYes
mutationsNoCustom seeded-regression patch specs; defaults to a built-in deterministic mutation set (flip ===, flip &&/||, negate boolean return, off-by-one literal, flip </>).
targetFileNoPath (relative to codeLocation) of the source module the variants exercise, e.g. server/pricing.js. Required to run seeded mutations; omit to run the baseline matrix only.
tokensByModelNoGeneration token counts per model tier, e.g. {sonnet: 12000, opus: 40000}, used for cost-per-caught-defect.
writeEvidenceNoAppend the formatted readout to docs/EVIDENCE.md under codeLocation.
Behavior5/5

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

Despite annotations providing only destructiveHint=false and readOnlyHint=false, the description gives extensive behavioral context: it works on a COPY in a temp dir (never touches the repo), seeds deterministic mutations, and writes nothing unless writeEvidence:true. It also mandates a mode field to prevent confusion between demo and real runs. This far exceeds the minimum transparency required.

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

Conciseness4/5

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

The description is a single paragraph that packs a lot of information without excessive verbosity. It front-loads the core purpose and then details parameters and behavior. While dense, it remains readable and every sentence adds value. A minor improvement could be breaking into bullet points for easier scanning.

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

Completeness5/5

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

Given the complexity (7 parameters, nested objects, no output schema), the description is remarkably complete. It covers the overall process, the return values (defects caught, unique-catch rate, overlap matrix, cost), edge cases (omit targetFile, writeEvidence), and the importance of the mode field. The description compensates for the lack of an output schema by describing the readout.

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

Parameters5/5

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

With 86% schema coverage, the description still adds significant value. It explains that targetFile is required for mutations, the default built-in mutation set, how tokensByModel feeds into cost calculations, and that writeEvidence appends to docs/EVIDENCE.md. The mode parameter's enum values are explained, and the description clarifies the behavior when mutations or targetFile are omitted.

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

Purpose5/5

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

The description clearly states the tool evaluates per-model test variants against seeded regressions to determine defect-catching effectiveness. It specifies the file pattern (test/<ticket>.<model>.test.js), the use of copies in temp dirs, and the outputs (defects caught, unique-catch rate, overlap matrix, cost per caught defect). This distinguishes it from sibling tools like eval_report or generate_multi_model_tests by focusing on model comparison via seeded mutations.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to run test variants against regressions for model effectiveness. It distinguishes two modes ('real' vs 'harness-validation') and clarifies that omitting targetFile runs a baseline matrix. While it doesn't explicitly compare to alternatives like eval_report, the context signals show siblings are diverse and this tool is clearly specialized. The description provides sufficient guidance for correct usage.

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

Install Server

Other Tools

Latest Blog Posts

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/valentil/featureboard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server