An MCP server for a conversational AI waifu character with user management, dialog history storage, and AI-powered chat responses using multiple providers.
MCP Waifu Chat exhibits fundamental definition quality gaps across naming, descriptions, and error handling. While tool names use appropriate verb-noun patterns (create_user, delete_user, get_dialog_json), descriptions are universally minimal and parameter documentation is sparse. All 8 tools have basic schemas with typed parameters, but lack depth in guidance for LLM selection. No input validation rules, error recovery paths, or output schema documentation visible. Security concerns around user management tools without explicit permission checks.
Handles chat message requests (using JSON data).
Checks if a user exists.
Creates a new user.
Deletes a user.
Gets the user's dialog history as a JSON object.
Gets the user's dialog history as a string.
Resets the user's dialog history.
Descriptions uniformly under 20 characters (e.g., 'Creates a new user.', 'Checks if a user exists.'). Per hard scoring rules, description score capped at 20 for all tools.
No parameter descriptions beyond type names. E.g., 'user_id' parameter in all 8 tools lacks guidance on format, uniqueness, or discovery method. LLMs cannot infer whether to use a numeric ID, UUID, or username.
Destructive operation (delete_user) lacks any confirmation step, dry-run mode, or warning in description. No error recovery guidance. Tool accepts user_id with no validation hint and no statement of what happens on non-existent user.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Gets the total number of users.
No output schemas documented. Tools returning dialog history (get_dialog_json, get_dialog_str, chat) do not specify the structure of returned data. LLMs cannot plan downstream calls or extract required fields.
user_count tool has empty input schema '{}'. No clarity on whether it returns a single integer, a structured object, or paginated results.
No error handling guidance in any tool description. Missing actionable error messages (e.g., 'User not found. Try create_user() first.' or 'Invalid user_id format'). Agents have no recovery path on failure.
No documentation of dependencies between tools. E.g., chat() requires a user to exist (must call create_user first), but this is not stated. Agents cannot reason about prerequisite ordering.
Two similar tools for dialog retrieval (get_dialog_json vs get_dialog_str) with identical descriptions and parameters. No guidance on when to use each. LLMs will conflate them and may pick the wrong one.
Security: No permission checks visible in tool definitions for user management operations (create, delete). No scope declarations (e.g., 'requires write:users'). Agents could modify any user without authorization.