An MCP server for managing employee leave balances and leave applications
LeaveManager has 3 tools with basic verb-noun naming (get_*, apply_*) and present descriptions, but significant gaps in parameter documentation, output schema definition, and error handling. All tools lack parameter descriptions beyond the bare type. No output schemas are documented. Error messages are generic strings without recovery guidance. The apply_leave tool modifies state but lacks confirmation/dry-run patterns. No input validation or constraint documentation (e.g., date format, employee_id format). Descriptions are adequate length (40-80 chars) but lack WHEN/WHY context. Overall structure is functional but falls short of production quality.
Apply leave for specific dates (e.g., ["2025-04-17", "2025-05-01"])
Check how many leave days are left for the employee
Get leave history for the employee
Parameter descriptions missing. 'employee_id' and 'leave_dates' have type info but no descriptions explaining format, constraints, or valid values. LLMs cannot infer whether employee_id is 'E001' or 'john.doe' or email.
Output schemas not documented. Tools return plain strings ('Employee ID not found.', 'Leave applied for X day(s)...') with no structured schema. LLMs cannot parse or chain results reliably.
apply_leave modifies state (deducts balance, adds history) but lacks confirmation/dry-run pattern. No way for agent to preview impact before committing. Irreversible operations should support confirmation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Error messages are generic and non-actionable. 'Employee ID not found.' does not guide LLM on recovery (e.g., 'Try list_employees() to find valid IDs'). No error classification (retryable vs user-fixable).
No input validation or constraint documentation. Date format for leave_dates is not specified (ISO 8601? 'YYYY-MM-DD'?). No min/max for balance. No regex or enum constraints.