A change/deploy-gate agent: a Burr state machine served as an MCP server with Theodosia.
Single tool 'step' has a generic name that violates verb_noun conventions and lacks specificity. Description is present but minimal (89 chars). Input schema exists but is severely underspecified: 'inputs' parameter is a bare object with no property definitions, type constraints, or validation guidance. No output schema documented. No error handling guidance. Tool appears to be a state machine dispatcher rather than a focused, composable action, violates single-responsibility principle.
Execute a single step in the deploy-gate state machine by calling a named action with inputs
Tool name 'step' is generic and non-descriptive. Does not start with action verb or convey intent. LLM cannot infer what 'step' does without reading description. Should be 'execute_deploy_action' or similar.
Input parameter 'inputs' is an untyped object with no property schema, constraints, or documentation. LLM cannot validate what fields are required or allowed. Violates JSON Schema best practices and pattern:constrained-input.
No output schema documented. LLM cannot predict what fields the response contains or plan downstream operations. Violates pattern:tool requirement for documented return types.
No error handling guidance. Tool description does not explain what happens on invalid transitions, missing inputs, or state violations. LLM has no recovery path if 'step' fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
Tool violates single-responsibility principle. 'step' is a generic dispatcher that accepts any action name and arbitrary inputs. Should decompose into separate tools: execute_open_change, execute_run_checks, execute_approve, etc., each with explicit parameters and schemas.