The server defines 3 tools with reasonable naming (prove, clean, version) but has significant documentation gaps. Tool descriptions exist but are brief (11-65 chars, below the 50-200 char baseline for LLM optimization). Parameter descriptions are present and mostly clear, but the `prove` tool has 6 parameters with minimal guidance on interdependencies and constraints. Schema definitions are valid JSON Schema but lack examples and detailed output documentation. The `sampling_handler` is implemented (UnsureSamplingHandler) but this is a deprecated pattern, the server should rely on integration with the LLM provider instead. No error handling guidance is documented. No tool annotations (readOnlyHint, destructiveHint) are visible despite the risk metadata indicating READ_ONLY and WRITE operations.
Clean GNATprove proof results and artifacts from the project.
Check, analyze and prove a SPARK program using GNATprove.
Get the version of GNATprove in-use by this MCP Server.
Tool descriptions are too brief (<50 chars). 'prove' (46 chars), 'clean' (65 chars), 'version' (65 chars) lack context on WHEN to use them instead of similar tools and what to expect in return. LLMs cannot disambiguate tools with minimal descriptions.
No output schema documentation. The `prove` tool returns proof results but the structure is opaque, are results a JSON object, a log dump, a list of violations? LLMs cannot plan downstream steps without knowing what fields to expect.
Parameter interdependencies undocumented. In `prove`, 'file', 'line', and 'subprogram' are mutually exclusive or hierarchical, but descriptions do not clarify valid combinations. LLMs will pass incompatible parameters.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 32 | - | v1 |
Missing tool annotations. Risk metadata shows 'prove' as READ_ONLY and 'clean' as WRITE, but no readOnlyHint or destructiveHint annotations are visible in the code. Without annotations, agents cannot determine idempotency or safety for retry logic.
Proof level constraint undocumented. 'level' parameter accepts integers 0-4, but descriptions do not explain the range, time/accuracy tradeoff, or default behavior. LLMs will guess or pass out-of-range values.
Mode parameter lacks enum constraint. 'mode' accepts 'stone', 'bronze', 'all' but is a free-form string without an enum schema. LLMs may hallucinate values like 'gold', 'silver', 'complete'.
No error recovery guidance. If gnatprove is not installed, if the project file is invalid, or if proof times out, the tool offers no hints to the LLM on how to proceed (e.g., 'Install GNATprove', 'Check project syntax', 'Increase timeout').
Deprecated sampling handler implemented. UnsureSamplingHandler is a deprecated pattern (removed from spec ~2027-07-28). The server should integrate directly with the LLM provider API rather than implementing server-side sampling.