AWS Cognito authentication server for Model Context Protocol
Server has 4 tools with basic schemas and descriptions, but significant quality gaps. Tool names lack clear verb-noun structure (e.g., 'confirm_code_from_email_for_signUp' is verbose and inconsistent). Descriptions are present but minimal (10-50 chars), below the 50-200 char baseline for LLM optimization. Input schemas use Zod but lack descriptions for parameters, critical for LLM reasoning. No output schemas documented. Error handling returns unstructured text arrays rather than actionable recovery guidance. No parameter constraints (enums, ranges, formats). Security concern: credentials injected via environment but no validation of required env vars at startup.
Confirm user registration with confirmation code from email
Sign in user with username and password
Sign out the currently authenticated user
Sign up a new user with email and password
Tool names lack consistent verb-noun structure. 'confirm_code_from_email_for_signUp' is verbose and mixes camelCase; should be 'confirm_signup' or 'confirm_registration'. LLMs struggle to parse intent from inconsistent naming.
Parameter descriptions are completely missing. Zod schema defines 'password', 'email', 'username', 'confirmationCode' but provides no descriptions explaining what each controls, format constraints, or validation rules. LLMs cannot infer parameter meaning from names alone.
No output schemas documented. Tools return unstructured text arrays with multiple text blocks. LLMs cannot plan downstream calls or extract structured data. Should return typed objects with fields like 'user_id', 'username', 'status', 'confirmation_required'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
Error handling returns raw error messages without recovery guidance. 'Signup failed: <err.message>' tells the LLM nothing actionable. Should categorize errors (retryable vs user-fixable) and suggest next steps, e.g., 'Email already registered. Try sign_in() instead.'
No input validation or constraint documentation. Parameters like 'password' lack minimum length, complexity rules, or format guidance. 'email' lacks format validation. Zod schemas exist but are not exposed to LLM via descriptions.