An MCP server that lets an agent ask whether it may act on its own output.
Two well-defined tools with complete JSON schemas, clear descriptions, and thoughtful parameter design. Tool names are verb-based and unambiguous. Schemas include proper type definitions, enums, and defaults. Descriptions explain WHAT the tool does and WHEN to use it. However, parameter descriptions lack depth (e.g., 'Field name.' is minimal), and output schemas are documented only in prose, not as formal JSON Schema. Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint) despite both tools being read-only operations.
Sweep the confidence threshold across a range and report how review load trades against errors that get through. Use this to choose a bar deliberately rather than accepting a default.
Decide which extracted fields may be written to a system of record and which must go to a person. Returns a disposition per field: post, review, or escaped. Call this before acting on extracted data.
Parameter descriptions are minimal (e.g., 'Field name.', 'Extracted value, null if absent.'). LLMs need richer context to understand intent and constraints. Descriptions should explain the semantic role and any validation rules.
Output schemas are documented only in prose (return statements show text format with JSON embedded). Formal JSON Schema for outputs is missing, forcing LLMs to parse unstructured text and extract the embedded JSON manually.
No tool annotations despite both tools being read-only. Adding readOnlyHint=true would signal to clients that these tools are safe to call without side effects, enabling optimizations and safety checks.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Error handling is implicit (no explicit error responses shown in code). Tools should return structured error objects with actionable guidance (e.g., 'Invalid confidence: must be 0.0 - 1.0') rather than relying on exceptions.
The 'verification' enum includes 'unchecked' as a valid state, but the tool descriptions do not explain what happens when verification is missing or how to interpret results in that case. Guidance is needed for agents calling these tools without a verification pass.