MCP Server for Dijkstra's Weakest Precondition (wp) Calculus Skill - implements predicate transformer calculus to propagate postconditions backwards through assignment sequences and conditional branches to synthesize weakest preconditions
Single tool with minimal definition quality. Tool name 'compute_weakest_precondition' lacks action verb prefix (should be 'compute_' or 'calculate_'). Description is 234 chars and adequate but lacks WHEN to use guidance. Input schema present with types and descriptions, but output schema is undocumented, LLM cannot plan downstream actions. No error handling, no parameter constraints (x and y_target are unbounded integers), no security considerations. Tool is READ_ONLY but lacks idempotentHint annotation. Overall: bare-minimum implementation suitable only for specialized academic use, not production agent integration.
Computes the weakest precondition for a sequence of assignments given a postcondition. Takes initial value of x and target threshold for y, executes sequence: x := x + 1; y := x * 2, and returns whether the initial state satisfies the weakest precondition for y >= y_target
Output schema completely undocumented. Tool returns {x, satisfies_wp} but LLM has no visibility into field types or structure. Prevents downstream tool chaining and forces LLM to infer output shape.
No parameter constraints. x and y_target accept any integer with no documented min/max bounds. Unbounded numeric parameters invite LLM to pass absurd values (negative x, y_target=999999) that may cause unexpected behavior.
No error handling or recovery guidance. If computation fails or inputs are invalid, tool returns generic error dict. LLM receives no actionable guidance on what went wrong or how to retry.
Tool name lacks action verb clarity. 'compute_weakest_precondition' is domain-specific jargon. LLM may not recognize this as a computation tool without explicit WHEN guidance in description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Missing tool annotations. Tool is READ_ONLY but lacks idempotentHint annotation in schema. LLM cannot infer safety properties and may avoid retrying on transient failures.