MCP server for accessing Spotify playlists and user data
Single tool with minimal definition quality. GetUsersPlaylists has a basic description (47 chars, within range) but critically lacks parameter descriptions, the userId parameter has no guidance on format or constraints. Input schema is present but incomplete: no type validation, no format hints, no enum constraints. Output is unstructured JSON string with no documented schema. No error handling guidance for LLMs (McpException thrown but not actionable). Tool does one thing (good composition) but lacks the rigor expected of production tools. Baseline: 194 chars avg description, 72 chars avg param annotation; this tool has 47 chars description and 0 chars param annotation.
Get playlists belonging to a specific user
Parameter userId lacks description. LLMs cannot infer whether to pass 'spotify_user_123', '[email protected]', or a display name. Violates pattern:tool-description requirement that every parameter must have a non-empty description.
Output schema not documented. Tool returns JsonSerializer.Serialize(allPlayLists), a raw JSON string with no documented structure. LLMs cannot plan downstream operations or extract required fields (e.g., playlist IDs for chaining). Violates pattern:tool requirement for documented return types.
Error handling provides no recovery guidance. McpException thrown for 'No playlists found' but LLM receives no actionable next step (e.g., 'Try a different user ID' or 'Call list_users() to find valid IDs'). Violates pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | <=2025-11-25 | v2 |
No pagination limit documented. Tool fetches all playlists in a loop without capping results. If a user has thousands of playlists, response bloats context window. Violates mxe:enforce-result-limits (cap at 20-50 items, offer pagination).
Tool name 'GetUsersPlaylists' uses PascalCase instead of snake_case verb_noun convention. Should be 'get_user_playlists'. Violates naming baseline: 90% of A+ tools start with lowercase action verb in snake_case.