OAuth 2.1 + PKCE authentication and authorization toolkit for Model Context Protocol (MCP) servers
Server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly adequate) and input schemas with typed parameters. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract return values. No error handling guidance, no recovery paths, and no security annotations (destructiveHint, readOnlyHint) despite tools ranging from READ_ONLY to DESTRUCTIVE. Tool naming is clear (verb_noun pattern), but descriptions lack context on when to use each tool vs alternatives. OAuth tools (oauth_token, oauth_introspect, oauth_revoke) are security-critical but have minimal descriptions and no guidance on prerequisites or error cases. delete_user is DESTRUCTIVE but has no confirmation pattern or dry-run option. Average tool score: 42/100.
Delete a user (requires admin scope)
Get weather information for a location (requires read scope)
Token introspection endpoint
Token revocation endpoint
OAuth token exchange endpoint
Send an email (requires write scope)
No output schemas documented for any tool. LLMs cannot infer return structure, forcing them to guess field names and types. This breaks tool chaining and wastes tokens on exploratory calls.
delete_user is DESTRUCTIVE but lacks confirmation pattern, dry-run option, or explicit warning in description. Agents may invoke it without user consent.
OAuth tools (oauth_token, oauth_introspect, oauth_revoke) have minimal descriptions (35 chars) lacking context on prerequisites, error cases, or when to call each. No guidance on CSRF protection flow or token lifecycle.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No error handling guidance. Tools lack recovery hints (e.g., 'If user not found, try search_users()'). Errors will not tell LLMs what to do next.
No tool annotations (destructiveHint, readOnlyHint, idempotentHint) despite Risk labels in metadata. Clients cannot infer safety properties from schema alone.