MCP Server for inferring active invariants across state snapshots and synthesizing executable assertion code contracts from invariants
Both tools have minimal descriptions (under 100 chars) and severely underdeveloped parameter documentation. Input schemas exist but lack parameter-level descriptions entirely, LLMs cannot understand what variable_traces or invariants should contain. No output schema documented. No error handling guidance. No parameter constraints (enums, ranges, formats). Tool names lack action verbs (infer_invariants is acceptable; synthesize_assertion_code is vague about what 'code' means). This server fails to meet baseline standards for LLM-driven tool selection.
Infer active invariants across state snapshots
Generate executable assertion code contract from invariants
Parameter descriptions completely missing. 'variable_traces' and 'invariants' have no descriptions explaining what structure they expect, what fields are required, or what values are valid. LLMs cannot infer this from names alone.
No output schema documented. Callers do not know what fields infer_invariants returns (is it 'invariants' or 'results'? what are the field names?). synthesize_assertion_code returns JSON-wrapped assertions but the structure is not declared.
Tool descriptions are too brief (35-40 chars) and lack context. 'Infer active invariants across state snapshots' does not explain WHEN to use this tool, what invariants are, or what the agent should do with the output. Baseline is 194 chars.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If variable_traces is empty, malformed, or contains unexpected types, the tool returns a generic error. LLMs have no guidance on what to do next.
Input schema uses generic 'object' items without field definitions. 'variable_traces' is an array of objects, but the schema does not specify what keys/fields those objects must have. This forces LLMs to guess the structure.