MCP TIDAL Server
Provides tools to search the TIDAL music catalog, manage playlists, favorites, and get recommendations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP TIDAL Serversearch for songs by Dua Lipa"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP TIDAL Server 🎵
Model Context Protocol (MCP) server for TIDAL Music. Enables AI assistants (Claude, etc.) to access TIDAL catalog: search, playlists, favorites, and recommendations.
Note: Uses tidalapi which accesses TIDAL's internal APIs (reverse-engineered).
Installation
git clone https://github.com/yourusername/mcp-tidal.git
cd mcp-tidal
pip install -e .Related MCP server: Spotify MCP Server
Configuration
1. Authentication
First time, authenticate with your TIDAL account:
python3 -c "from mcp_tidal.client import TidalClient; TidalClient().login()"Session saved to /tmp/tidal-session-oauth.json.
2. Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tidal": {
"command": "mcp-tidal"
}
}
}Available Tools
Authentication
tidal_login()- Browser authenticationcheck_auth()- Check status
Search & Metadata
search_music(query, limit)- Search all contentget_track(track_id)- Track detailsget_album(album_id)- Album detailsget_artist(artist_id)- Artist details
Favorites & Recommendations
get_favorite_tracks(limit)- Your favorite tracksget_track_recommendations(track_id, limit)- Suggestions
Playlists
get_user_playlists()- Your playlistsget_playlist_tracks(playlist_id, limit)- Playlist trackscreate_playlist(title, description, track_ids)- Create playlistadd_tracks_to_playlist(playlist_id, track_ids)- Add tracks to playlistremove_tracks_from_playlist(playlist_id, track_indices)- Remove tracks from playlistdelete_playlist(playlist_id)- Delete playlist
Transport Modes
stdio (default - for Claude Desktop)
mcp-tidalSSE (Server-Sent Events)
mcp-tidal-sse # Runs on http://0.0.0.0:8000/sseHTTP Streamable
mcp-tidal-http # Runs on http://127.0.0.1:8000/mcpAvailable Tools
14 toolsadd_tracks_to_playlistB
Add tracks to an existing playlist.
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes | List of track IDs to add | |
| playlist_id | Yes | Playlist ID to add tracks to |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks details on behavioral aspects such as whether tracks are appended or replaced, handling of duplicates, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded. No wasted words, but could benefit from slight expansion on behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers basic purpose, but given output schema exists, more behavioral details would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description does not add additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Add' and resources 'tracks to an existing playlist'. It distinguishes from sibling like remove_tracks_from_playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like create_playlist or get_playlist_tracks. No prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_authA
Check current TIDAL authentication status.
Returns: Authentication status and user information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries full burden. It only states it returns status and user info but does not disclose safety, idempotency, or side effects. Insufficient for a tool likely involving authentication state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, two sentences with no waste. Communicates core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema covers return values, but description omits context like whether previous login is required or what 'authentication status' ranges are. Adequate but not full.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Description adds nothing beyond schema, which is acceptable for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool checks current TIDAL authentication status and returns authentication status and user information. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like tidal_login. Does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_playlistB
Create a new playlist in the user's account.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Playlist title | |
| track_ids | No | List of track IDs to add (optional) | |
| description | No | Playlist description (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It simply says 'create', implying mutation, but does not explain side effects (e.g., overwriting existing playlist with same name), required permissions, or what happens on duplicate titles. The return value is not described, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it is overly minimal. It could include more useful context without becoming verbose, such as noting that a title is required or that the playlist is created empty by default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that a creation tool has 3 parameters (1 required) and an output schema, the description is insufficient. It fails to mention that the tool returns the newly created playlist object, nor does it address edge cases or behavior with optional parameters. The output schema may cover return values, but the description should still provide high-level context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage), so the description adds no additional meaning beyond stating 'optional' for track_ids and description, which is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new playlist in the user's account.' which uses a specific verb (create) and resource (playlist) with scope (user's account). It distinctly differentiates from sibling tools like add_tracks_to_playlist and delete_playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., add_tracks_to_playlist). There is no mention of prerequisites like authentication requirements, uniqueness of playlist names, or situations where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_playlistB
Delete a playlist from the user's account.
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | Playlist ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only states the action without detailing irreversibility, permission requirements, or side effects (e.g., effects on shared playlists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no extraneous words. It is front-loaded with the action and resource, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is adequate but minimal. It does not explain return values or error conditions, though the output schema exists. Could be more informative about the operation's impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes 'playlist_id' as 'Playlist ID to delete'. The description adds no further semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('a playlist'), and the context ('from the user's account'). It distinguishes itself from sibling tools like 'create_playlist' and 'add_tracks_to_playlist' by specifying deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as 'remove_tracks_from_playlist'. Lacks prerequisites like ownership requirements or conditions under which deletion is allowed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_albumA
Get detailed information about a specific album.
| Name | Required | Description | Default |
|---|---|---|---|
| album_id | Yes | TIDAL album ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description lacks behavioral details such as read-only nature, required permissions, or what 'detailed information' includes. Minimal transparency beyond the obvious read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema, one simple parameter, and the description is adequate for a basic lookup tool. Lacks usage guidance but is otherwise complete given context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with album_id described as 'TIDAL album ID'. Description adds no extra parameter meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'album', distinguishing it from sibling tools like get_track and get_artist which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives to sibling tools like get_track or get_artist, but context implies use for album details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artistC
Get detailed information about a specific artist.
| Name | Required | Description | Default |
|---|---|---|---|
| artist_id | Yes | TIDAL artist ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention whether this operation is read-only, requires authentication, or has any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with 8 words. It is concise and front-loaded, but could be slightly more informative without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (assumed), the description adequately conveys the core purpose. However, missing usage guidelines and behavioral transparency reduce completeness for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter that is already described in the schema. The description adds no new meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get) and resource (artist), and is distinct from siblings like get_album or get_track. However, 'detailed information' is somewhat vague; specifying what details (e.g., name, bio, discography) would improve it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives like get_album or get_track. No prerequisites or context for usage are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_favorite_tracksB
Get the current user's favorite tracks.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum tracks to return (default: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as authentication requirements, pagination, or that it returns a list. The description is too brief to convey necessary behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the key purpose, containing no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists, the description lacks context about authentication, user session requirements, or expected response structure. It is minimally sufficient for a simple read operation but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter (limit) already described in the schema. The description adds no additional meaning beyond what the schema provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the current user's favorite tracks', specifying verb 'Get' and resource 'current user's favorite tracks', which distinguishes it from siblings like get_playlist_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., get_playlist_tracks) or any prerequisites like authentication, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playlist_tracksB
Get all tracks from a specific playlist.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tracks (default: 100) | |
| playlist_id | Yes | TIDAL playlist ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It says 'Get all tracks' but uses a limit parameter, implying pagination not explained. Lacks any mention of authentication, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, very concise. However, 'all tracks' is ambiguous given the limit parameter, slightly reducing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too minimal for a retrieval tool with pagination. Fails to mention how to handle large playlists, ordering, or required auth context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; parameters are already well-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all tracks from a specific playlist'. It is specific and distinct from sibling tools like add_tracks_to_playlist or remove_tracks_from_playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_track for a single track, get_album for album tracks). No mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackA
Get detailed information about a specific track.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | TIDAL track ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It does not mention any authentication requirements, rate limits, error handling, or what happens if the track is not found. This is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no unnecessary words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and an output schema (though not shown), the description is adequate. It could mention the return format, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add extra meaning beyond the schema's definition of 'track_id' as a 'TIDAL track ID'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a specific track'. It is specific and distinguishes from sibling tools like 'get_album' and 'get_artist'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. However, the simplicity of retrieving a single track by ID makes it implicit. A bit more context could help, but it's acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_recommendationsB
Get recommended tracks based on a specific track.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum recommendations (default: 20) | |
| track_id | Yes | TIDAL track ID to base recommendations on |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only states the core action but doesn't mention that the tool is read-only, requires authentication, or how the limit parameter affects output. Additional context (e.g., 'returns track objects') is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with main action. While efficient, it could include a bit more detail without becoming verbose. Still, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with a small schema and an output schema, the description covers the essential purpose. However, it lacks behavioral or usage context that would be helpful for an agent, such as authentication requirements or recommended use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond what the schema already provides for both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Get', specific resource 'recommended tracks', and basis 'based on a specific track'. Unambiguously distinguishes from sibling tools like get_track and get_album.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use vs alternatives, but the purpose is simple enough that an agent can infer usage from the name and description. Lacks guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_playlistsA
Get the current user's playlists.
Returns: List of user's playlists with URLs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Get' (read) but fails to mention authentication requirements, rate limits, or what constitutes 'current user'. The behavior is implied but not explicitly clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences: one for the action and one for the return. No unnecessary words, and it is well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no parameters, output schema exists), the description is adequate but incomplete. It fails to mention that the tool requires authentication or that it only returns the user's own playlists (not public ones). The output schema likely covers return format, but context about prerequisites is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline is 4. The description adds context by specifying the resource as 'current user's playlists' and the return includes 'URLs', which adds meaning beyond the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'current user's playlists', which distinguishes it from siblings like create_playlist or get_playlist_tracks. The addition of 'with URLs' further specifies the output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like search_music or get_favorite_tracks. It does not mention prerequisites such as authentication, nor does it explain why one would choose this over other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tracks_from_playlistB
Remove tracks from an existing playlist.
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | Playlist ID to remove tracks from | |
| track_indices | Yes | List of track positions to remove (1-based, as shown in get_playlist_tracks) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It only states the action without disclosing behavioral traits such as destructiveness, authentication needs, or impact on related data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is overly concise and could benefit from including key details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the presence of an output schema, the description is adequately complete for a basic understanding, but it lacks context on prerequisites and return value behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the resource (tracks from an existing playlist), which distinguishes it from sibling tools like add_tracks_to_playlist or delete_playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not provide context on prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_musicC
Search for music content on TIDAL.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results per type (default: 10) | |
| query | Yes | Search query string |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden but only says 'search', omitting behavioral traits like content scope (tracks, albums, artists), pagination, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it leaves out important context that could be added without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with many sibling tools and an output schema, the description is too sparse; it doesn't clarify what 'music content' includes (e.g., tracks, albums, artists) or how results are structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes the parameters. The description adds no additional meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'music content' on TIDAL, distinguishing it from sibling tools that perform specific retrievals like get_album or get_track.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_album or get_artist, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tidal_loginA
Authenticate with TIDAL through browser login flow.
This will open a browser window for you to log in to your TIDAL account.
Returns: Authentication status message
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it opens a browser window and returns an authentication status message. However, with no annotations, it omits details on token/session management, potential failures, and side effects beyond the browser interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three short lines covering purpose, behavior, and return value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (no parameters, output schema exists), the description covers the main flow and return. It could be more complete by linking to other tools or explaining session persistence, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the schema, and the description confirms the browser login flow, which adds no additional parameter meaning. Schema coverage is 100%, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Authenticate' and the resource 'TIDAL account', and specifies the method as 'browser login flow'. It distinguishes this tool from siblings as the only authentication tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is a prerequisite for other tools but does not explicitly state when to use it over alternatives like 'check_auth'. No guidance on when not to use or context for repeated login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.0- First observed
add_tracks_to_playlist - First observed
check_auth - First observed
create_playlist - First observed
delete_playlist - First observed
get_album - First observed
get_artist - First observed
get_favorite_tracks - First observed
get_playlist_tracks - First observed
get_track - First observed
get_track_recommendations - First observed
get_user_playlists - First observed
remove_tracks_from_playlist - First observed
search_music - First observed
tidal_login
TDQS
Scored across 14 tools
Each tool targets a distinct resource or action: authentication, search, album/artist/track retrieval, playlist CRUD, track management, favorites, and recommendations. There is no overlap, even between auth-related tools as one checks status and the other performs login.
Most tools follow a consistent verb_noun snake_case pattern (e.g., add_tracks_to_playlist, create_playlist, get_album). However, 'tidal_login' reverses the verb and noun order slightly, and 'check_auth' uses a shortened verb. Minor deviations but overall predictable.
With 14 tools, the server is well-scoped for a music streaming integration. It covers essential operations without redundancy, fitting comfortably within the ideal 3-15 range for a focused service.
The tool surface covers authentication, browsing, search, playlist management, favorites, and recommendations. Missing features like user profile retrieval or playback control could be considered minor gaps, but the core workflows are fully supported.
Maintenance
Related MCP Connectors
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Query your Twitch streams, events, supporters, raids & rankings from an AI assistant via OAuth.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Manage digital signage screens, playlists and media from your AI assistant.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables interaction with TIDAL music streaming service through 27 tools for searching music, managing playlists, favorites, and discovering artists and albums.273-
- FlicenseBqualityDmaintenanceEnables AI assistants to control Spotify playback, search for music, manage playlists, and interact with your Spotify library through natural language commands.19-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control Spotify playback, search music, manage playlists and library, and access user listening insights via the Spotify Web API.-
- FlicenseNot gradedqualityCmaintenanceEnables Claude to search, browse, and create playlists on Tidal, including AI-powered mood-based playlist generation.-