MCP server that exposes HR operations as tools/prompts over stdio, providing employee management, leave tracking, meeting scheduling, and ticket management for an HRMS system.
Server has 6 tools with basic verb-noun naming (add_employee, get_employee_details, send_email, create_ticket, update_ticket_status, list_tickets). Descriptions are present but minimal (10-50 chars), lacking context on WHEN to use each tool or prerequisites. Input schemas are visible with type declarations, but parameter descriptions are sparse or generic. No output schemas documented. Error handling is minimal, tools raise ValueError but provide no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Composition is reasonable (single responsibility per tool), but parameter naming lacks consistency (emp_id vs employee_id, emp_name vs name). No pagination support on list_tickets despite returning potentially large result sets.
Add a new employee to the HRMS system.
Create a ticket for buying required items for an employee.
Get employee details by name.
List tickets for an employee with optional status filter.
Send an email to specified recipients with optional HTML content.
Update the status of a ticket.
Minimal parameter descriptions. Parameters like 'manager_id' (add_employee), 'status' (update_ticket_status), and 'html' (send_email) lack context on format, constraints, or when to use them. LLMs cannot infer whether manager_id is required, what format it expects, or how to obtain it.
No output schemas documented. Tools return strings or dicts without specifying field names, types, or structure. LLMs cannot plan downstream calls or extract required IDs (e.g., ticket_id from create_ticket, emp_id from add_employee).
Inconsistent parameter naming. add_employee uses 'emp_name' and 'manager_id', but get_employee_details uses 'name'. list_tickets uses 'employee_id' while create_ticket uses 'emp_id'. This forces LLMs to reason about field mappings and increases error likelihood.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No error recovery guidance. Tools raise ValueError with messages like 'NO employee found matching...' but provide no actionable next steps. LLMs receive raw errors with no guidance on retry, alternative tools, or user correction.
No tool annotations. Tools lack readOnlyHint (get_employee_details, list_tickets), destructiveHint (add_employee, create_ticket, update_ticket_status, send_email), or idempotentHint. Agents cannot distinguish safe reads from state-modifying operations.