MCP server that exposes mavis functionality to AI agents for generating and committing git messages
Mavis has 3 well-named tools following verb_noun convention (prepare_commit, preview_commit, approve_commit). Descriptions are present and moderately detailed (73-198 chars), exceeding the 20-char minimum. All three tools declare required string parameters with descriptions. However, parameter schemas lack formal type constraints (no enums, ranges, or patterns), and output schemas are not documented in the visible code. The tool trio implements a multi-step approval workflow with good semantic clarity around state transitions, but lacks formal schema documentation and comprehensive error handling guidance.
Execute a previously previewed commit. ONLY call this after the user has explicitly approved the commit message. Never call this automatically.
Get the commit message template, fields, and instructions. Call this first to understand what values are needed for a commit.
Preview a commit message with the provided field values. Returns the rendered commit message and an approval ID. IMPORTANT: After calling this, you MUST show the message to the user and wait for their explicit approval before calling approve_commit.
Output schemas not documented. prepare_commit returns PrepareCommitResult (visible in code) with template, fields, and instructions, but no OpenAPI/JSON Schema spec is exposed to the agent. preview_commit and approve_commit output schemas are completely undocumented.
preview_commit accepts 'values' as a free-form JSON string. No schema constraints, format examples, or field title enumeration provided. The instruction text says 'keys match field titles exactly' but field titles are only revealed at runtime via prepare_commit. LLM must infer structure from multi-step discovery.
No error handling guidance. No recovery suggestions if prepare_commit fails, if preview_commit rejects malformed JSON, or if approve_commit fails. Tool descriptions lack 'When to call' or 'If this fails, try' guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Tool descriptions do not clearly state what each tool RETURNS. prepare_commit says 'Get the commit message template, fields, and instructions' but does not document the structure (is it a string template? An object with typed fields?). LLM cannot plan downstream tool calls without knowing the response shape.
Destructive tool (approve_commit) lacks confirmation or dry-run support. The description warns 'ONLY call this after the user has explicitly approved' but relies entirely on the LLM remembering and enforcing this rule. No pattern.destructiveHint or tool annotation present to signal danger to the MCP client.
No tool annotations (readOnlyHint, destructiveHint). prepare_commit and preview_commit should be marked read-only; approve_commit is destructive and should have a destructiveHint annotation to inform clients of side effects.