A helpdesk workflow skill for handling password reset requests
This MCP server has severe definition quality issues. The single tool 'handle_reset' uses a generic, non-verb name that violates core naming conventions. The description is minimal (50 chars) and lacks critical details about what the tool actually does, when to call it, or what it returns. The input schema has basic types but parameters lack proper descriptions and constraints. Most critically, there is no visible output schema documentation, we can infer from example_usage.py that it returns {"status": "RESET_LINK_SENT"}, but this is not formally documented in the tool definition. The implementation is a mock that returns hardcoded values, not a real integration. No error handling, no validation, no recovery guidance.
Handles password reset workflow for a user service
Tool name 'handle_reset' is non-verb generic. 'handle' is ambiguous and vague, does it create a reset link? Send an email? Validate credentials? Does not follow verb_noun pattern.
Tool description is only 50 characters and lacks essential information: What exactly does it do? Does it send a reset link, generate a token, or reset the password immediately? When should an agent call this vs other reset mechanisms? Does it have side effects?
Input parameter 'service' lacks constraints. Is it free-form text? What are valid values? The description mentions 'e.g. VPN' but does not enumerate valid options. Should be an enum (VPN, email, ldap, etc.).
Output schema is not documented. The tool definition does not specify what fields are returned, their types, or their meaning. Inferred from example_usage.py: {"status": "RESET_LINK_SENT"}, but this is not formally declared.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 23 | 2026-07-28+ | v2 |
No error handling or recovery guidance. What happens if user_id is invalid? If service is not found? If the reset fails? The tool returns a hardcoded success response with no failure path.
No input validation. Parameters lack min/max length, regex patterns, or format constraints. LLMs could pass arbitrary strings.
Implementation is a mock stub. The handle_reset method in client.py returns a hardcoded {"status": "RESET_LINK_SENT"} with no actual logic, API calls, or integration.