MCP server that governs an AI coding agent through a delivery lifecycle: every role must produce a machine-checkable artifact before it may sign off.
Charter defines 4 tools with basic schemas and descriptions. All tools have input schemas with type definitions and descriptions present. However, parameter descriptions are minimal (10-30 chars), falling well below the 72-char baseline for A+ tools. Tool names follow verb_noun convention (charter_init, charter_next, charter_submit, charter_status), which is good. Critical gaps: no output schemas documented, no error recovery guidance, no parameter constraints (enums, ranges), and descriptions lack WHEN/WHY context. The 'artifact' parameter in charter_submit is typed as 'object' with no structure definition, forcing LLMs to guess valid fields. No pagination, no idempotency hints, no permission scopes declared.
Start a governed build in this repository.
Get the next role assignment and its contract.
Report roster, sign-offs and outstanding roles.
Submit a role's artifact for validation.
Parameter descriptions are 10-30 characters, far below the 72-char baseline. 'The role submitting the artifact' and 'The artifact object with kind, and role-specific fields' lack actionable detail. LLMs cannot infer valid artifact structure or role values.
No output schemas documented. Tools return JSON via model_dump_json() but LLMs have no schema to plan downstream calls or extract fields. E.g., charter_next returns a role assignment, what fields does it contain? What IDs must be passed to charter_submit?
charter_submit 'artifact' parameter is untyped object with no schema. Description says 'with kind, and role-specific fields' but does not enumerate valid kinds or per-role field requirements. LLMs must guess structure, risking validation failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Error responses return JSON with 'error' field but provide no recovery guidance. E.g., 'no charter in this repository -- call charter_init first' is helpful, but most errors lack actionable next steps or categorization (retryable vs. user-fixable).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). charter_init and charter_submit are destructive writes; charter_next and charter_status are read-only. Annotations would help agents reason about safety and retry logic.