MCP (Model Context Protocol) server exposing the ohmyperf engine as 'measure' and 'diff' tools for AI agents (Claude / OpenCode / Cursor / Cline / Continue).
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. 'measure' and 'diff' both have descriptions (good baseline), but parameter descriptions are minimal and output schemas are not documented. No error handling guidance, no recovery patterns, and no tool annotations. Naming is acceptable (verb-noun style) but descriptions lack context on when to use each tool vs. the other. Parameter 'runs' lacks range constraints; 'mode' enum is present but sparse. No evidence of idempotency guarantees or composition guidance.
Compare performance metrics between two measurements or URLs
Measure web performance metrics (Core Web Vitals: LCP, INP, CLS) for a given URL
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., does 'measure' return LCP/INP/CLS values separately or as an object?). Breaks tool composition.
Parameter 'runs' lacks range constraints. No min/max specified; LLMs could pass 0, negative, or absurdly large values. Should document '1-100 runs' or similar.
No error handling guidance. If a URL is unreachable or measurement fails, what does the tool return? How should the LLM recover? Missing recovery patterns.
Parameter descriptions are minimal. 'The URL to measure' and 'Number of measurement runs' lack context on format, constraints, or dependencies. Should explain expected URL format, what 'runs' means (sequential? parallel?), and any prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No distinction between 'measure' and 'diff' in descriptions. When should an LLM call 'measure' vs 'diff'? 'measure' appears to measure a single URL; 'diff' compares two. Descriptions should clarify this intent difference.