Strong naming and schema coverage (21 tools with proper JSON Schema definitions). Most tools have helpful descriptions with dependency hints (e.g., 'Unknown? Call search_projects first'). Good parameter type coverage with enums, minimums, maximums, and descriptions. However, several critical gaps: (1) Output schemas are completely undocumented, no tool specifies what fields are returned or pagination structure; (2) Error handling is absent from definitions, no recovery guidance or error classification; (3) Some parameter descriptions are thin (e.g., 'Discussion ID' lacks format hints); (4) No idempotency or confirmation patterns for destructive operations (merge_merge_request, approve_merge_request). Tool naming is verb-forward and generally clear, with good use of action verbs (search_, list_, get_, create_, update_, merge_, approve_). PROJECT_ID parameters intelligently accept both IDs and 'group/project' format with helpful resolution logic visible in code. However, descriptions lack structured guidance on error recovery and output structure.
Approve a merge request.
Create a new merge request.
Create a new review comment on a merge request.
Get MRs for a branch.
Get discussions/comments on commits within a merge request.
Get CI job log. Use job IDs from get_merge_request_pipeline.
Get MR status, approvals, and merge readiness.
Output schemas completely undocumented. No tool definition specifies what fields are returned, data types, pagination structure, or chaining IDs needed by downstream tools.
No error handling guidance. Definitions lack recovery hints, error classification (retryable vs user-fixable vs fatal), or actionable error messages. Code has generic exception handling without context for LLM recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get pipeline jobs and statuses. Returns job IDs for get_job_log.
Get MR reviews and discussions. Returns discussion IDs.
Get test failures with error messages and stack traces.
Get test pass/fail counts. Faster than full test report.
List MRs with optional filters.
List all accessible projects. Slow — use search_projects if you know the name.
List labels in a project.
List members of a project.
Merge a merge request.
Reply to a discussion thread.
Mark a discussion as resolved or unresolved.
Find projects by name. Use first when project is unknown.
Revoke approval from a merge request.
Update an existing merge request.
Destructive operations (merge_merge_request, approve_merge_request) lack confirmation or dry-run patterns. No warning in description that these are irreversible. LLMs will execute without hesitation.
Parameter descriptions lack actionable detail. E.g., 'Discussion ID' has no format hint (UUID, numeric, opaque string?). 'Comment text' doesn't specify max length or allowed markup. This forces LLMs to guess.
Tool naming 'merge_merge_request' is awkward (verb repeated). Consider 'merge_mr' or clarify in description that this performs the actual merge action (not idempotent).