A tool for extracting monthly Git logs, parsing commit history with diffs, and searching via CLI or MCP server
Three tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. search_commits has good parameter coverage (6 params, all described), but list_projects and get_commit_changes lack depth. No output schemas documented, LLMs cannot plan downstream calls or extract structured data. Error handling is minimal (basic 'not found' messages). No tool annotations (readOnlyHint, etc.). Descriptions are adequate (100-200 chars) but lack WHEN/WHY guidance. Parameter constraints present (date format, minimum limit) but not comprehensive.
Retrieves detailed change history for a specific commit. Uses the commit hash (full or at least 7 characters).
Returns the list of available projects and the commit count for each project.
Search Git commits. Finds keywords in commit messages or changed file paths. Can filter by date range and author.
No output schemas documented. LLMs cannot infer what fields search_commits, list_projects, or get_commit_changes return, forcing them to guess at downstream field names and breaking tool chaining.
list_projects has minimal description (47 chars). Does not explain WHEN to call it, what structure it reveals, or how to use results with search_commits. Lacks discovery guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only and idempotent, but LLMs cannot infer this without explicit hints.
Error handling is generic. 'Commit not found' and 'Error: <message>' provide no recovery guidance. Should suggest next steps: 'Commit hash not found. Try search_commits() to find the commit first.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
search_commits description includes example values ('2024-01-01', '2024-12-31'). LLMs tend to reuse examples literally. Replace with format constraints and remove hardcoded dates.