An MCP server that provides access to TIDAL music streaming service, enabling authentication, favorite track retrieval, music recommendations, and playlist creation.
Server has 4 tools with basic descriptions and some parameter documentation, but significant gaps in schema completeness, error handling guidance, and composition. Tool names follow verb_noun convention (good), but descriptions lack LLM-optimized structure. Parameters have types but many lack constraints. No output schemas documented. Error responses are generic ('Unknown error') rather than actionable. Descriptions range 50-400 chars (within baseline 34-392), but lack WHEN/WHY guidance. No tool annotations (readOnlyHint/destructiveHint). Overall structure is functional but below production quality.
Creates a new TIDAL playlist and adds tracks to it.
Retrieves tracks from the user's TIDAL account favorites. USE THIS TOOL WHENEVER A USER ASKS FOR: - "What are my favorite tracks?" - "Show me my TIDAL favorites" - "What music do I have saved?" - "Get my favorite songs" - Any request to view their saved/favorite tracks This function retrieves the user's favorite tracks from TIDAL.
Recommends music tracks based on specified track IDs or can use the user's TIDAL favorites if no IDs are provided. USE THIS TOOL WHENEVER A USER ASKS FOR: - Music recommendations - Track suggestions - Music similar to their TIDAL favorites or specific tracks - "What should I listen to?" - Any request to recommend songs/tracks/music based on their TIDAL history or specific tracks This function gets recommendations based on provided track IDs or retrieves the user's favorite tracks as seeds if no IDs are specified.
Authenticate with TIDAL through browser login flow. This will open a browser window for the user to log in to their TIDAL account.
Output schemas not documented. Tools return dicts with 'status', 'message', 'recommendations' fields, but LLMs cannot plan downstream calls without knowing the structure. Baseline: 100% of A+ tools document return types.
Error responses lack recovery guidance. Errors return generic 'Unknown error' or 'Failed to connect' without actionable next steps. Baseline pattern: 'User not found. Try search_users() with a partial name.'
recommend_tracks has 4 optional parameters with no constraints or defaults documented. 'limit_per_track' and 'limit_from_favorite' lack min/max bounds. Baseline: numeric params should specify range (e.g. 1-100).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
create_playlist description (40 chars) is too brief and lacks state-change clarity. Does not explicitly state this is a WRITE operation or what happens on retry. Baseline: descriptions 10-1024 chars; write operations must declare mutability.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). tidal_login and create_playlist should be marked destructive/write; get_favorite_tracks and recommend_tracks should be marked readOnly. Current spec supports these.