Event-driven EasyCrypt prover-agent workflow with structured proof-state facts and tree search
Shannon Prover exposes 4 tools with complete JSON schemas and descriptions. However, descriptions are domain-specific and moderately detailed (100-250 chars), parameter descriptions are present but terse, and error handling guidance is absent. Tool naming follows verb_noun convention (submit_proof_intent, read_easycrypt_source, search_easycrypt_source, resolve_easycrypt_declaration). Schemas are well-formed with proper types and constraints (e.g., search_easycrypt_source has enums for scope, min/max for max_results). No output schemas are documented. The server lacks recovery guidance, error classification, and actionable error messages, critical for agent reasoning. Composition is sound: tools are single-responsibility and chainable (search → read → resolve). However, the domain is highly specialized (EasyCrypt proof assistant), limiting general applicability.
Read a bounded line range from the proof-stripped EasyCrypt task or configured EasyCrypt theories through the manager-owned source boundary. Returns native-Read-style line-numbered text. This tool does not inspect or mutate proof state.
Resolve an EasyCrypt declaration to its definition location and metadata.
Search literal text in the proof-stripped EasyCrypt task and configured EasyCrypt theories. Returns copy-ready file paths, line numbers, and optional bounded context. Matches are lexical candidates, not resolved EasyCrypt declarations. This tool does not inspect or mutate proof state.
Submit exactly one proof intent to the managed proof node.
No output schemas documented. LLMs cannot predict response structure, forcing them to guess field names and types for downstream tool calls.
No error handling guidance. Tools do not indicate what errors are retryable, user-fixable, or fatal. No recovery suggestions (e.g., 'If path not found, call search_easycrypt_source first').
resolve_easycrypt_declaration description is vague ('Resolve an EasyCrypt declaration to its definition location and metadata'). Does not explain when to call it vs search_easycrypt_source, what 'metadata' includes, or what format the response uses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
submit_proof_intent accepts additionalProperties=true on both input and payload, allowing arbitrary fields. No validation rules, constraints, or examples of valid proof intent payloads documented.
search_easycrypt_source returns 'lexical candidates, not resolved EasyCrypt declarations' but does not document the response structure (e.g., does it return file paths, line numbers, matched text, context?). Agents cannot extract the right fields.