Skip to main content
Glama
jamiew

Spotify MCP Server

by jamiew

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 clearly distinct purpose. Playlist info and tracks are separated, and search covers multiple types via parameter. No ambiguity between tools.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case, e.g., get_album_info, create_playlist, remove_tracks_from_playlist. Even 'playback_control' is a slight deviation but still clear.

    Tool Count4/5

    16 tools cover the core aspects of Spotify (search, playlist management, playback control). Slightly above the typical well-scoped range but still reasonable and not excessive.

    Completeness3/5

    Covers most essential workflows: playlist CRUD (missing delete), search, playback control, and info retrieval. Notable gaps include playlist deletion and volume control, but the surface is functional.

  • Average 3.9/5 across 16 of 16 tools scored. Lowest: 2.9/5.

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

    • 0 of 2 community issues answered or closed in the last 6 months
    • 7 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • 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

  • Behavior2/5

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

    Annotations already indicate this is not read-only and not destructive. The description adds minimal behavioral context beyond 'add'; it does not specify whether tracks are appended, duplicates handled, or errors reported. No contradiction with annotations.

    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 very short and front-loaded with a clear purpose. However, it is somewhat under-specified for a two-parameter tool, and the Args section is minimal.

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

    Completeness2/5

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

    Given the tool has an output schema and annotations, the description still lacks important contextual information such as error handling, authentication requirements, and differentiation from sibling tools. It is adequate for basic invocation but incomplete for robust 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 description adds meaning beyond the schema by stating 'playlist_id: Playlist ID' and 'track_uris: List of track URIs (up to 100)'. This compensates for the 0% schema description coverage, clarifying the URI limit.

    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 'Add tracks to a playlist,' which is a specific verb and resource. It distinguishes the tool from siblings like 'remove_tracks_from_playlist' and 'reorder_playlist_tracks', though it could be more explicit about the operation's scope.

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

    Usage Guidelines2/5

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

    There is no guidance on when to use this tool versus alternatives like 'modify_playlist_details' or 'reorder_playlist_tracks'. No context on prerequisites or restrictions is provided.

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

  • Behavior3/5

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

    Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds 'Modify playlist details' which aligns with these hints but does not provide additional behavioral context such as permission requirements, side effects, or partial update behavior. With annotations present, the description adds minimal value.

    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 short and front-loaded with the purpose. However, the Args section redundantly lists parameter names and types that are already in the schema. It could be more concise by omitting the Args list or summarizing the parameters.

    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?

    For a simple 4-parameter tool with an output schema, the description is minimal but adequate. It lacks context on idempotency (though annotations provide it) and does not mention that only provided fields are updated. With output schema present, return values are acceptable, but the description could still be more thorough.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. However, it only lists parameter names and basic types without any added meaning (e.g., constraints on name length, behavior of null values, or that changes are optional). This barely adds value beyond the schema itself.

    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 'Modify playlist details' with the verb 'modify' and resource 'playlist details'. It implies updating an existing playlist, which distinguishes it from sibling tools like create_playlist or remove_tracks_from_playlist, though it could be more explicit about the specific fields affected.

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

    Usage Guidelines2/5

    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 mention when not to use it or provide context for choosing between related tools like reorder_playlist_tracks or add_tracks_to_playlist.

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

  • Behavior2/5

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

    The description merely restates what the tool does, adding no behavioral details beyond the annotations (destructiveHint=true, readOnlyHint=false). It does not disclose whether removal is reversible, whether it requires ownership, or what happens to the playlist order. The annotations already convey destructive nature, so the description adds minimal value.

    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 short but includes unnecessary 'Args:' format that repeats the function name. It is not front-loaded with the most critical information (e.g., that this is destructive). Could be more concise by removing the docstring boilerplate and focusing on usage.

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

    Completeness2/5

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

    Despite having an output schema (not shown), the description omits side effects (e.g., permanent removal, impact on playlist length), authentication needs, or rate limits. For a destructive action with two required parameters, the description should provide more context to avoid misuse.

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

    Parameters3/5

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

    The description provides basic meanings for both parameters ('Playlist ID' and 'List of track URIs to remove'), which the schema lacks entirely (0% coverage). However, no format, constraints, or examples are given. For a simple two-parameter tool, this is minimally adequate but not helpful for complex usage.

    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 action ('Remove tracks') and the resource ('a playlist'), using a specific verb and noun. This distinguishes it from sibling tools such as 'add_tracks_to_playlist' or 'reorder_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 Guidelines2/5

    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, such as 'modify_playlist_details' or 'reorder_playlist_tracks'. There are no preconditions, caveats, or context about authorization, making it hard for an AI agent to decide when to invoke this tool.

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

  • Behavior2/5

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

    Annotations indicate the tool is not read-only (readOnlyHint=false), not destructive (destructiveHint=false), not idempotent (idempotentHint=false), and has side effects (openWorldHint=true). The description states 'Control Spotify playback' implying mutations, but it does not disclose rate limits, authentication requirements, or error handling behaviors beyond the annotations.

    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 with a clear Args list. Every sentence adds value, but it could be slightly more structured with a brief introductory sentence.

    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 multi-action nature and presence of an output schema, the description covers core functionality but omits details like return value format (e.g., 'get' returns playback state), error conditions, and prerequisites (e.g., active device required). It is minimally adequate but not fully complete.

    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 schema provides no descriptions (0% coverage). The description compensates by explaining each parameter: 'action' lists valid values, 'track_id' is for 'start', and 'num_skips' specifies number of tracks to skip. This adds meaningful context beyond the schema's type and default information.

    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 it controls Spotify playback and lists concrete actions ('get', 'start', 'pause', 'skip'). However, it does not explicitly differentiate from sibling tools like 'add_to_queue' or 'get_queue', which are queue-related rather than playback control.

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

    Usage Guidelines2/5

    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. For example, it does not mention that 'get' retrieves current playback state, nor does it specify prerequisites like needing an active device.

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

  • Behavior2/5

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

    Annotations are neutral (readOnlyHint=false, destructiveHint=false), but the description only states the operation and parameter, missing behavioral details like prerequisites (e.g., active Spotify device), side effects, or whether it appends to the queue end.

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

    Conciseness5/5

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

    The description is extremely concise: one sentence for purpose and minimal parameter/return details, with no wasted words.

    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 low complexity (1 param, no enums) and existing output schema, the description is adequate but omits usage context like requiring an active device or how the queue is modified.

    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 coverage, the description adds value by explaining track_id as a 'Spotify track ID to add to queue', clarifying the parameter's purpose beyond the schema's plain string type.

    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 states 'Add a track to the playback queue' with a clear verb and resource, distinguishing it from sibling tools like add_tracks_to_playlist (adds to a playlist) and get_queue (retrieves queue).

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

    Usage Guidelines2/5

    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 when an active device is required or when to use add_tracks_to_playlist instead.

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

  • Behavior3/5

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

    Annotations already indicate non-read, non-destructive, non-idempotent behavior. The description adds a return value statement but no further behavioral details, such as side effects or rate limits. No contradiction with annotations.

    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 includes a clear list of parameters and return value. However, it could be slightly more structured (e.g., separating parameter descriptions from the main text).

    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?

    While the description covers basic creation, it lacks details about required scopes, Spotify API constraints, or how the returned Playlist object looks. Given multiple sibling tools, more context on use cases would help.

    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 provides meaningful text for each parameter (name, description, public) including defaults, compensating for the lack of schema descriptions.

    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 explicitly states the action ('Create') and the resource ('new Spotify playlist'). It is specific and distinguishes from sibling tools like 'add_tracks_to_playlist' or 'modify_playlist_details'.

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

    Usage Guidelines2/5

    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. There is no mention of prerequisites (e.g., authentication) or context for choosing this over similar tools.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds minimal behavioral detail (returns current and upcoming tracks) but does not contradict annotations. Adequate but not enhanced.

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

    Conciseness5/5

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

    Extremely concise: two sentences, front-loaded with the main action, and no wasted words.

    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 zero parameters, informative annotations, and an output schema, the description is sufficient for a simple read operation. It explicitly states the return content, fulfilling basic needs.

    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?

    No parameters exist (0 params, 100% schema coverage). The description is not required to add parameter info, and it correctly omits irrelevant details.

    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 retrieves the current playback queue and specifies the return content (currently playing and upcoming tracks). It distinguishes itself from sibling tools like add_to_queue or playback_control.

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

    Usage Guidelines2/5

    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 get_playlist_tracks or search_tracks. The description lacks context for selective invocation.

    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?

    Annotations already indicate readOnlyHint, idempotentHint, openWorldHint. Description adds return value detail (artist and top tracks), which is consistent and provides useful behavioral context beyond annotations.

    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?

    Description is brief with clear Args/Returns structure. Slightly verbose for a simple tool, but no wasted words. Could be tightened.

    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 low complexity (1 param, output schema present), description covers purpose, input, and return content. Mentions top tracks inclusion. Sufficient for effective invocation.

    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?

    Schema has 0% coverage but description documents the single parameter as 'Spotify artist ID' in the Args line, adding clarity beyond the schema's basic title and type. With one simple parameter, this is adequate.

    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?

    Description clearly states the tool gets detailed information about a Spotify artist and returns artist and top tracks. Title 'Get Artist Info' matches. Distinguishes from siblings like get_album_info, get_track_info.

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

    Usage Guidelines2/5

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

    No guidance on when to use vs alternatives. Description does not provide context for when to choose this tool over others like get_album_info or search_tracks.

    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?

    Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds that it returns AlbumInfo with release_date, label, and tracks, providing useful context beyond annotations.

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

    Conciseness5/5

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

    The description is very concise, with clear 'Args' and 'Returns' sections. Every sentence adds value, no unnecessary words.

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

    Completeness5/5

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

    Given the presence of an output schema (not provided but mentioned), the description need not detail return values further. It adequately covers metadata and tracks, making it complete for a simple retrieval tool.

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

    Parameters3/5

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

    Schema description coverage is 0%, so the description must add meaning. It documents album_id as 'Spotify album ID,' which adds minimal detail beyond the schema. Acceptable for a single parameter.

    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 'Get detailed information about a Spotify album,' specifying the verb (Get) and resource (album). It distinguishes from siblings like get_artist_info, get_playlist_info, and get_track_info.

    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 does not explicitly provide when-to-use or when-not-to-use guidance. However, the purpose is clear enough to imply usage context among siblings.

    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?

    Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that the tool returns 'playlist metadata' and explicitly excludes tracks, providing behavioral context beyond annotations. However, 'basic information' is somewhat vague; output schema could fill gaps.

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

    Conciseness5/5

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

    The description is brief and well-structured: a clear title line, Args/Returns sections, and a note about alternative tool. Every sentence adds value, and key information is front-loaded.

    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 tool's simplicity (one parameter, rich annotations, output schema present), the description covers purpose, usage, and return scope. The only gap is parameter semantics, but overall completeness is high for decision-making.

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

    Parameters1/5

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

    With 0% schema description coverage, the description should compensate but only restates 'playlist_id: Spotify playlist ID', adding no new meaning beyond the schema's title and type. No constraints or format hints are provided.

    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 'Get basic information about a Spotify playlist', specifying both verb and resource. It explicitly distinguishes from sibling tool get_playlist_tracks by stating it returns 'no tracks' and directing users to that tool for track data.

    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 (for playlist info) and when not (for tracks, use get_playlist_tracks). It also notes that get_playlist_tracks supports full pagination for large playlists, helping agents decide between tools.

    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?

    Annotations already provide readOnlyHint, idempotentHint, openWorldHint. The description adds return structure details (SavedTracks with items and added_at timestamp, pagination via limit/offset), which is valuable context beyond the annotations.

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

    Conciseness5/5

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

    The description is concise: one opening line, Args section for two parameters, Returns section. No wasted words, well-structured and front-loaded.

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

    Completeness5/5

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

    Given the low complexity, simple schema with two optional params, rich annotations, and existing output schema, the description covers all essential aspects: function, parameters, return shape, and pagination. No gaps.

    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?

    Schema description coverage is 0%, so the description fully compensates. It explains limit as 'Max tracks to return per page (1-50, default 20)' and offset as 'Number of tracks to skip for pagination (default 0)', adding constraints and semantics not 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 'Get user's saved/liked tracks (Liked Songs library)', using a specific verb 'Get' and resource 'saved/liked tracks'. The title 'Get Liked Songs' further clarifies. This distinguishes it from siblings like get_playlist_tracks or get_track_info.

    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 for retrieving saved tracks but does not explicitly state when not to use or mention alternatives. No guidance on conflicts with siblings like add_tracks_to_playlist or search_tracks.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint and idempotentHint. Description adds pagination behavior and return format, which is useful but not critical beyond annotations.

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

    Conciseness5/5

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

    Concise, well-structured: purpose, args, returns, note. Every sentence adds value with no redundancy.

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

    Completeness5/5

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

    Covers purpose, parameters, returns (including pagination info), and usage note. Output schema exists, so return details are adequately explained.

    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?

    Despite 0% schema coverage, description fully explains both parameters (limit, offset) with defaults, range, and example usage, compensating for schema gaps.

    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?

    Clearly states 'Get current user's playlists with pagination support', specifying verb, resource, and a key differentiator (pagination). Distinguishes from siblings like get_playlist_info.

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

    Usage Guidelines4/5

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

    Provides pagination usage example and note about many playlists, but does not explicitly contrast with alternatives like get_playlist_info or search_tracks.

    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?

    Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds value by detailing the return format (SearchResults with items and pagination) and search syntax behavior, complementing the annotations without contradiction.

    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 structured as a docstring with clear sections (Args, Returns, Note). It is fairly detailed but not overly verbose; each sentence contributes to understanding or usage guidance.

    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 tool's complexity (9 parameters, 15 siblings, existing output schema), the description covers purpose, all parameters, return format, and usage notes. It lacks error handling or rate limit info, but annotations and output schema partially cover gaps.

    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, the description fully compensates by listing all 9 parameters with concise explanations and an example showing their combination. This enables correct invocation without relying on 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 explicitly states 'Search Spotify for tracks, albums, artists, or playlists', with a clear verb and resource. It distinguishes from sibling tools that target specific entities (e.g., get_album_info), making its purpose unambiguous.

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

    Usage Guidelines4/5

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

    The description includes a note about Spotify's search syntax and an example, implying its use for general discovery. It lacks explicit when-not-to-use or alternative references, but the context of siblings with specific ID-based queries provides indirect guidance.

    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?

    Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds context beyond these: it specifies the return format (TrackList with 'tracks' containing metadata including release_date) and the behavior difference for single vs list input.

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

    Conciseness5/5

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

    The description is well-structured into three short paragraphs (purpose, args, returns, note). Every sentence adds value without redundancy.

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

    Completeness5/5

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

    Given the single parameter, thorough annotations, and existence of an output schema, the description provides sufficient context. It explains the return format for both single and list inputs and offers an efficiency tip.

    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 the parameter: 'track_ids: Single track ID or list of track IDs (up to 50)'. This adds type, limit, and usage context not present 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 'Get detailed information about one or more Spotify tracks,' specifying the verb (Get), resource (track info), and scope (one or more). It distinguishes itself from sibling tools like get_album_info and get_artist_info.

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

    Usage Guidelines4/5

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

    The description includes an important usage note about batch efficiency: 'Batch lookup is much more efficient - 50 tracks = 1 API call instead of 50.' This guides the agent to prefer batch calls, but does not explicitly state when not to use the tool.

    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?

    Annotations indicate non-read-only and non-destructive. Description discloses concurrency guard via snapshot_id and positional semantics, adding behavioral context beyond annotations.

    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?

    Well-structured with Args block, Returns, Note, and Example. Slightly lengthy due to detailed example, but all content is relevant and aids understanding.

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

    Completeness5/5

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

    Complete description for a 5-parameter reorder tool: explains all params, return value, concurrency guard, and provides a helpful example. Output schema exists, so return details are covered.

    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?

    Schema description coverage is 0%, but the description explains all parameters (playlist_id, range_start, insert_before, range_length, snapshot_id) with clear semantics, default behavior, and usage note.

    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?

    Clear verb+resource: 'Move a contiguous block of tracks to a new position within a playlist.' 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.

    Usage Guidelines4/5

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

    Provides example and explains zero-based positions, but does not explicitly state when to use this tool versus alternatives (e.g., when reordering vs. adding/removing).

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

  • Behavior5/5

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

    Annotations already indicate read-only and idempotent behavior. The description adds important behavioral details: a safety limit of 10,000 tracks, the effect of limit=None, and pagination mechanics. These go beyond the annotations and prevent misuse.

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

    Conciseness5/5

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

    The description is well-organized with Args, Returns, and Note sections. Each sentence provides necessary information without redundancy. The examples are concise and illustrative, earning their place.

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

    Completeness5/5

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

    Given the complexity of pagination and the presence of an output schema (not shown), the description fully covers usage: parameter semantics, return structure, safety limits, and common usage patterns. No gaps are apparent.

    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?

    Schema coverage is 0%, so the description carries full responsibility. It explains playlist_id as 'Playlist ID', limit as 'Max tracks to return (None for all tracks, up to 10,000 safety limit)', and offset as 'Number of tracks to skip for pagination (default 0)'. This adds complete meaning beyond 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 explicitly states 'Get tracks from a playlist with full pagination support', which clearly defines the action and resource. It distinguishes itself from sibling tools like 'get_playlist_info' (which retrieves playlist metadata) by focusing on tracks and pagination.

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

    Usage Guidelines4/5

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

    The description provides examples of usage patterns (limit/offset combinations) and notes when to use pagination. However, it does not explicitly contrast with sibling tools or state when not to use it, which would improve clarity for an agent selecting among many options.

    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

spotify-mcp MCP server

Copy to your README.md:

Score Badge

spotify-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/jamiew/spotify-mcp'

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