Skip to main content
Glama
yuhuacheng

TIDAL MCP: My Custom Picks

by yuhuacheng

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation5/5

    Each tool has a distinct purpose with no overlap: create/delete playlists, get favorites, get playlist tracks, get user playlists, recommend tracks, and login. The descriptions clearly differentiate them, and an agent can easily select the correct tool for any TIDAL-related request without confusion.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with 'tidal' prefix (e.g., create_tidal_playlist, get_favorite_tracks, recommend_tracks). The naming is uniform and predictable, making it easy for agents to understand and use the toolset.

    Tool Count5/5

    With 7 tools, this server is well-scoped for managing TIDAL playlists and recommendations. It covers essential operations (CRUD for playlists, fetching tracks, login) without being too sparse or bloated, making each tool valuable and necessary for the domain.

    Completeness4/5

    The toolset provides strong coverage for playlist management (create, delete, list, view tracks) and recommendations, with a login tool for authentication. A minor gap is the lack of an update_playlist tool for modifying existing playlists, but agents can work around this by deleting and recreating. Overall, it supports core TIDAL workflows effectively.

  • Average 4.3/5 across 7 of 7 tools scored. Lowest: 3.5/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the action (opens a browser window) and return value (dictionary with auth status and user info), which covers basic behavior. However, it lacks details on error handling, timeouts, or what happens if the user cancels the login, leaving gaps in transparency for an authentication tool.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise and well-structured: two sentences that clearly state the action and the return value, with no wasted words. It's front-loaded with the main purpose. A minor deduction because it could be slightly more efficient by combining ideas, but overall it's very effective.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity of an authentication tool with no annotations and no output schema, the description is moderately complete. It covers the core action and return value, but lacks details on prerequisites (e.g., browser availability), side effects, or error cases. For a tool that interacts with external systems, more context would be beneficial to ensure safe and correct usage.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics beyond the schema, but it correctly notes no inputs are required. Baseline is 4 for 0 parameters, as it appropriately handles the absence of parameters without redundancy.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Authenticate with TIDAL through browser login flow.' It specifies the verb (authenticate) and resource (TIDAL) with the mechanism (browser login flow). However, it doesn't explicitly differentiate from sibling tools, which are all data retrieval/manipulation tools rather than authentication tools, so it doesn't fully address sibling differentiation.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage context by mentioning 'browser login flow' and returning authentication status, suggesting this tool should be used to establish a session before other TIDAL operations. However, it doesn't explicitly state when to use it versus alternatives (e.g., if there are other auth methods) or provide clear exclusions, leaving some ambiguity.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully describes key behaviors: that it retrieves playlists sorted by last updated date (most recent first), and provides guidance on how to process results. It doesn't mention authentication requirements, rate limits, or error conditions, but covers the core operational behavior adequately.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured with clear sections for purpose, usage guidelines, behavioral details, and return format. However, it includes overly specific implementation advice ('When processing the results...') that belongs in agent instructions rather than tool description. Some sentences don't earn their place in a tool definition context.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a read-only tool with no parameters and no output schema, the description provides good contextual completeness. It explains what the tool does, when to use it, how results are sorted, and what information is returned. The main gap is the lack of authentication context (TIDAL account requirement), but otherwise covers the essential context for this tool's complexity level.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The tool has 0 parameters with 100% schema description coverage. The description appropriately doesn't waste space discussing non-existent parameters. The baseline for 0 parameters is 4, and the description meets this by focusing on what the tool does rather than parameter documentation.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Fetches the user's playlists from their TIDAL account.' This is a specific verb+resource combination that distinguishes it from sibling tools like get_favorite_tracks or get_playlist_tracks. However, it doesn't explicitly differentiate from create_tidal_playlist or delete_tidal_playlist in terms of read vs write operations.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit usage guidelines with a dedicated section: 'USE THIS TOOL WHENEVER A USER ASKS FOR:' followed by multiple example queries. This gives clear context for when to use this tool versus alternatives like get_favorite_tracks or recommend_tracks for different types of music content requests.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries full burden and does well by disclosing authentication requirements, naming convention guidance, and post-creation processing steps. However, it doesn't mention potential failure modes, rate limits, or whether the operation is idempotent, leaving some behavioral gaps.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is appropriately front-loaded with purpose and usage, but contains verbose sections like the detailed naming convention guidance and post-processing steps that could be streamlined. While all content is relevant, some sentences could be more concise.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a mutation tool with no annotations and no output schema, the description does well by covering authentication, parameters, usage context, and post-creation expectations. However, it lacks explicit information about return value structure and error handling, which would help complete the context.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage, the description compensates by explaining all three parameters in the Args section, adding meaning about track IDs being TIDAL-specific, description being optional with default, and title being the playlist name. It doesn't specify format constraints for track IDs, leaving a minor gap.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose with specific verb ('Creates') and resource ('new TIDAL playlist'), and distinguishes it from sibling tools like 'delete_tidal_playlist' and 'get_user_playlists' by focusing on creation rather than deletion or retrieval.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit usage guidance with a dedicated 'USE THIS TOOL WHENEVER' section listing specific user request patterns, plus prerequisites ('user must be authenticated with TIDAL first') and references to alternative tools ('first check the user's existing playlists using get_user_playlists()').

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the read-only nature ('retrieves'), specifies the default limit parameter behavior, and provides detailed guidance on how to process and present results. However, it doesn't mention potential limitations like rate limits or authentication requirements.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is appropriately front-loaded with the core purpose, but includes extensive processing instructions that might be better placed elsewhere. While the content is valuable, the structure could be more streamlined by separating usage guidelines from implementation details.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given no annotations and no output schema, the description provides substantial context including purpose, usage guidelines, parameter semantics, and detailed processing instructions. However, it doesn't explicitly describe the return format beyond 'a dictionary containing playlist information and all tracks,' leaving some ambiguity about the exact response structure.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage, the description must compensate for the lack of parameter documentation. It provides clear semantic meaning for both parameters: playlist_id ('TIDAL ID of the playlist to retrieve') and limit ('Maximum number of tracks to retrieve'). The description also explains where to obtain playlist_id and specifies the default value for limit.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose with a specific verb ('retrieves') and resource ('tracks from a specified TIDAL playlist'). It distinguishes this tool from siblings like get_user_playlists (which lists playlists) and get_favorite_tracks (which retrieves favorite tracks rather than playlist tracks).

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit usage guidelines with a dedicated 'USE THIS TOOL WHENEVER' section listing multiple user query patterns. It also specifies prerequisites (playlist_id must come from get_user_playlists) and distinguishes this tool from alternatives by focusing on playlist content retrieval.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it can use either provided track IDs or the user's TIDAL favorites as seeds, returns both seed and recommended tracks, and includes important processing instructions (e.g., not including seed tracks in recommendations, avoiding duplicates). However, it doesn't mention rate limits, authentication needs, or error conditions.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is appropriately front-loaded with the core purpose and usage guidelines, but it becomes overly verbose with 10 detailed processing instructions for the agent. While some instructions are helpful, others (like formatting requirements and internet search suggestions) exceed what's typically needed in a tool description and could be streamlined.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity of a recommendation tool with 4 parameters, no annotations, and no output schema, the description does a good job of explaining the tool's behavior, parameters, and expected usage. It covers the main aspects well, though it could benefit from more detail about the return structure (beyond 'a dictionary containing both the seed tracks and recommended tracks') and any limitations or error cases.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage, the description must compensate for the lack of parameter documentation in the schema. It provides clear explanations for all four parameters: 'track_ids' (optional seeds), 'filter_criteria' (specific preferences), 'limit_per_track' (recommendations per track), and 'limit_from_favorite' (favorite tracks to use as seeds). The description adds meaningful context beyond the bare parameter names in the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Recommends music tracks based on specified track IDs or can use the user's TIDAL favorites if no IDs are provided.' This specifies the verb ('recommends'), resource ('music tracks'), and distinguishes it from sibling tools like 'get_favorite_tracks' or 'create_tidal_playlist' which have different functions.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit guidance on when to use this tool with a bulleted list of user request scenarios (e.g., 'Music recommendations', 'Track suggestions', 'What should I listen to?'). It also distinguishes usage from alternatives by specifying this is for recommendations based on track IDs or favorites, unlike sibling tools that manage playlists or retrieve favorites directly.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully describes key behaviors: authentication requirements ('if not authenticated'), error handling ('if retrieval fails'), and the default limit behavior. However, it doesn't mention rate limits, pagination, or whether this is a read-only operation.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured with clear sections (purpose, usage guidelines, function description, args, returns). While slightly longer than minimal, every section adds value. The information is front-loaded with the core purpose in the first sentence.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a single-parameter read operation with no annotations or output schema, the description provides comprehensive context: clear purpose, usage guidelines, parameter semantics, return format details, and error conditions. The main gap is the lack of explicit read-only declaration, though this is implied by 'retrieves'.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage and only one parameter, the description provides good semantic context for the 'limit' parameter, explaining its purpose, default value, and usage guidance ('should be large enough by default unless specified otherwise'). This compensates well for the lack of schema documentation.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the specific action ('retrieves tracks') and resource ('from the user's TIDAL account favorites'), distinguishing it from sibling tools like get_playlist_tracks or get_user_playlists which target different resources. The opening sentence provides a complete, unambiguous purpose statement.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description includes an explicit 'USE THIS TOOL WHENEVER' section with multiple example user queries, providing clear guidance on when to invoke this tool. It distinguishes this tool from alternatives by focusing specifically on favorite tracks rather than playlists or recommendations.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries full burden. It clearly states this is a destructive operation ('Deletes', 'Get rid of'), mentions authentication requirements, and provides post-execution guidance ('Confirm the playlist was deleted successfully'). However, it doesn't mention potential side effects (e.g., whether deletion is permanent/reversible) or error conditions.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured with clear sections (purpose, usage guidelines, prerequisites, processing instructions, Args, Returns) but contains some redundancy (e.g., 'This function deletes...' repeats the opening sentence). Most sentences earn their place, but could be slightly tighter.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a destructive tool with no annotations and no output schema, the description does well by covering purpose, usage, authentication, parameter semantics, and expected response handling. However, it could better explain the return value format ('dictionary containing the status') and potential error cases.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage for the single parameter, the description fully compensates by clearly explaining 'playlist_id: The TIDAL ID of the playlist to delete (required)' in the Args section. This adds essential meaning beyond the bare schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the specific action ('Deletes') and resource ('a TIDAL playlist by its ID'), distinguishing it from sibling tools like create_tidal_playlist or get_user_playlists. It provides a complete, unambiguous statement of what the tool does.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description includes explicit 'USE THIS TOOL WHENEVER' examples covering various user request phrasings, plus a clear prerequisite ('The user must be authenticated with TIDAL first'). This provides comprehensive guidance on when to use this tool versus alternatives.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

tidal-mcp MCP server

Copy to your README.md:

Score Badge

tidal-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yuhuacheng/tidal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server