My Personal Spotify music agent playing whatever i want
Server has 9 tools with explicit schemas and descriptions. However, definitions exhibit significant gaps: descriptions are generically brief (10-70 characters), most input parameters lack granular type hints and examples, output schemas are not documented, error handling is minimal with no recovery guidance, and several tools lack parameter descriptions entirely. Tool names are verb-based (search_, play_, list_, etc.) which is positive, but schema completeness and output documentation are weak. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. The server is domain-focused (Spotify) and functional, but falls short of production-grade definition quality.
Add one or more track URIs to a playlist
Show current playback state
List available Spotify devices
List tracks in a playlist
List current user's playlists
Skip to next track
Pause current Spotify playback
No output schemas documented. Tools return unstructured text responses; LLMs cannot infer expected fields or plan downstream tool calls.
Descriptions are too brief (10 - 70 chars). Current descriptions lack actionability.
Parameter descriptions missing or minimal. 'playlistId' in list_playlist_tracks has no description. 'limit' in search_tracks lacks constraints (min/max). LLMs cannot infer valid ranges or formats.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Start playback of a specific track URI on the active device
Search Spotify tracks by query text
No error handling guidance. If a track URI is invalid, or a device is offline, the tool throws raw errors. LLM has no recovery path (e.g., 'call search_tracks first' or 'retry after 5 seconds').
No tool annotations. WRITE tools (play_track, pause_playback, next_track, add_to_playlist) lack destructiveHint. READ_ONLY tools (search_tracks, list_devices, list_playlists, list_playlist_tracks, current_playback) lack readOnlyHint. LLMs cannot infer operation safety.
No pagination support on list_* tools. list_devices, list_playlists, list_playlist_tracks return all results without limit/offset.
Parameter type hints incomplete. 'limit' in search_tracks is 'number' but should specify min/max (e.g., 1 - 50). 'uris' in add_to_playlist is array of strings but lacks format hints (must be spotify:track:* URIs). LLMs cannot validate inputs.
add_to_playlist has no dry-run or confirmation step. Destructive operations should support pre-execution confirmation to prevent accidental bulk additions.