mcp-apple-music
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool has a clearly distinct purpose with no ambiguity. The tools are well-organized around specific operations like adding tracks, creating playlists, retrieving different library entities, and searching catalog vs library. Even similar-sounding tools like get_library_songs and get_playlist_tracks have clearly different scopes.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern with perfect uniformity. The naming convention uses clear action prefixes (add, create, get, search) followed by specific resource identifiers, making the entire set predictable and easy to understand.
Tool Count5/5With 11 tools, this server is well-scoped for Apple Music functionality. Each tool serves a distinct purpose that earns its place, covering library management, playlist operations, search capabilities, and personalization features without being overwhelming or insufficient.
Completeness4/5The tool surface provides excellent coverage for core Apple Music operations including CRUD for playlists, comprehensive library browsing, and search capabilities. The only minor gap is the lack of update/delete operations for playlists or library items, but agents can still accomplish most workflows effectively.
Average 3.6/5 across 11 of 11 tools scored. Lowest: 2.9/5.
See the Tool Scores section below for per-tool breakdowns.
- 0 of 4 community issues answered or closed in the last 6 months
- 1 commit in the last 12 weeks
- Last stable release on
- 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.jsonto 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?
No annotations provided, so description carries full burden. Fails to disclose what the output schema contains, whether duplicate names are allowed, if the operation is idempotent, or what happens upon success/failure. 'Create' implies mutation but lacks safety/side-effect details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded action statement is good, but the 'Args:' section feels like mechanical schema documentation rather than narrative description. Appropriately brief but leaves significant gaps for a mutation tool with no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage and no annotations, the description should provide more behavioral context. While output schema exists (relieving return-value burden), missing critical context: error conditions, uniqueness constraints, and relationship to sibling tools that populate playlists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by documenting both parameters (name and description) with their purposes. However, lacks validation constraints (max length, allowed characters) or detailed semantics beyond basic labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (Create) + resource (playlist) + scope (Apple Music library). However, fails to explicitly distinguish from sibling 'add_tracks_to_playlist' (creation vs. modification) or clarify that this creates an empty playlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance, prerequisites (e.g., authentication requirements), or alternatives mentioned. The description does not indicate whether to use this before or after add_tracks_to_playlist, or how it relates to get_library_playlists.
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?
No annotations are provided, so the description carries full disclosure burden. While 'Add' indicates a write operation, it lacks critical behavioral details such as duplicate handling (whether adding existing tracks creates duplicates), idempotency, or partial failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Uses an 'Args:' structure to document parameters, which is appropriate given the complete lack of schema descriptions. Information is front-loaded with the action summary, and every line provides necessary parameter constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately documents inputs given the output schema exists, covering parameter formats and valid values. However, for a mutation tool with no annotations, it should disclose edge case behaviors (e.g., duplicate handling) to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Effectively compensates for 0% schema description coverage by adding the 'p.' format hint for playlist_id and detailed semantic explanations for track_type (distinguishing library-songs vs songs sourced from search_catalog).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb (Add) and resource (tracks) with scope (to existing playlist). The word 'existing' implicitly distinguishes from the sibling create_playlist tool, though it does not explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides parameter-level guidance by referencing sibling tool search_catalog for the 'songs' track_type value. However, lacks tool-level guidance on when to use this versus create_playlist or prerequisites like playlist ownership.
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?
With no annotations provided, the description carries the full burden. It adds valuable behavioral context by documenting pagination constraints (limit 1–100) and offset semantics in the Args section. However, it omits sorting order, whether results include only favorited artists or all library artists, and any rate limiting considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear single-sentence purpose followed by an Args docstring. No redundant filler. The information density is appropriate for the tool's complexity, though the 'Args:' header is slightly formal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read tool with an output schema available, but gaps remain given zero annotations. It lacks disclosure on authentication requirements, sorting behavior, or the specific relationship between 'library artists' and catalog artists. Sufficient but not generous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Excellent compensation for 0% schema description coverage. The Args section adds specific constraints (1–100 range), semantic meaning ('Number of artists', 'Pagination offset'), and default values that the bare schema lacks. Both parameters are fully documented in text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('List') and resource ('artists in your Apple Music library') scopes the operation specifically to the user's personal library. While it implicitly distinguishes from siblings like get_library_albums by specifying 'artists', it does not explicitly differentiate from search_library (search vs. enumeration) or other alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives like search_library (for searching) or get_library_songs (for individual tracks). No prerequisites (e.g., authentication requirements) or exclusion criteria are mentioned.
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?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it identifies the scope as 'Apple Music library', it lacks crucial context: authentication requirements, whether results include collaborative/subscribed playlists, pagination behavior beyond the limit parameter, or rate limiting details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured with the core purpose front-loaded in the first sentence, followed by a concise Args section. No filler text; every line serves a specific informational purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool with output schema present. The single parameter is well-documented, but the description misses behavioral context and usage guidance expected when no annotations are present to carry that load.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Excellent compensation for 0% schema description coverage. The Args section fully documents the 'limit' parameter with its purpose (maximum to return), valid range (1–100), and default value (100), adding substantial semantic value missing from the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb (List), resource (playlists), and scope (Apple Music library) clearly. However, it does not explicitly distinguish from sibling 'get_playlist_tracks' (which retrieves contents) or clarify when to use this versus 'search_library'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives like 'search_library' or 'get_playlist_tracks'. No prerequisites, pagination strategy (offset/cursor), or error handling guidance is mentioned.
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?
With no annotations provided, the description carries the full disclosure burden. It adds 'personalised' (indicating user-specific/history-based behavior) and 'recommendation groups' (indicating the return structure). However, it omits authentication requirements, rate limits, or caching behavior for the Apple Music API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely efficient at two sentences. The first states purpose; the second documents the parameter. Every element earns its place, though the 'Args:' formatting is slightly informal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Appropriate for the tool's low complexity (one optional parameter) and presence of output schema. The description successfully bridges the schema coverage gap. Could be improved by noting the personalization/auth prerequisite, but sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Excellent compensation for 0% schema coverage. The Args section explicitly documents 'limit' as 'Number of recommendation groups to return', providing semantic meaning (groups vs tracks), valid range (1–10), and default value (5) that the schema completely lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'Get' and resource 'personalised Apple Music recommendations', clarifying the tool fetches discovery content. However, it lacks explicit differentiation from siblings like 'search_catalog' or 'get_library_songs' to help the agent choose between discovery methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines provided for when to use this tool versus alternatives. The agent cannot determine whether to use recommendations, search, or library retrieval for music discovery without external reasoning.
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?
With no annotations provided, the description carries the full burden. It implicitly conveys read-only behavior through the word 'List' and explains pagination via the offset parameter description. However, it lacks explicit safety declarations, rate limit warnings, auth requirements, or error behavior that would be critical for a tool accessing a user's personal library.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is optimally structured with a single clear sentence stating purpose, followed by a standard Args docstring block. No sentences are wasted; every line earns its place by providing essential parameter constraints immediately after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (standard pagination pattern) and existence of an output schema, the description adequately covers the core functionality. However, with no annotations covering auth or safety, the description should have mentioned that this requires Apple Music authentication/authorization, which is missing. It meets minimum viability but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage (properties only have titles, no descriptions), the Args section compensates effectively by documenting the limit constraint (1–100, default 25) and explaining offset as pagination context. This adds meaningful semantic value beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'List' followed by the resource 'albums' and clear scope 'saved in your Apple Music library'. It effectively distinguishes from siblings like get_library_songs, get_library_artists, and search_catalog by specifying this retrieves saved/library albums rather than catalog search or other media types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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. It does not mention when to prefer this over search_library for filtering, or how it relates to get_recently_played. The Args section documents parameters but does not constitute usage guidelines.
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?
No annotations provided, so description carries full burden. Explains the pagination mechanism (offset for subsequent pages) and default values, but omits read-only nature, rate limits, failure behaviors, or output format details (though 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient two-part structure: single declarative sentence for purpose, followed by concise Args documentation. No redundant text or unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Appropriate for a simple read operation with 2 optional parameters. Output schema exists to document return values. Minor gap: doesn't explicitly confirm read-only status or mention total result set availability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage (only titles and types). The Args section fully compensates by documenting semantics, valid ranges (1–100), default values (25, 0), and purpose (pagination) for both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb (List) and specific resource (songs in Apple Music library). Implicitly distinguishes from siblings by specifying 'songs' versus albums/artists/playlists and 'library' versus catalog/recommendations, though it lacks explicit comparative guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to prefer this over search_library, get_recently_played, or get_playlist_tracks. No mention of pagination strategy or maximum result limits beyond the parameter range.
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?
With no annotations provided, the description carries the full burden. It successfully documents pagination limits (1-25) and available type options, but omits critical behavioral context like authentication requirements, rate limits, or search scope (which fields are indexed).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Information is efficiently organized with the purpose statement first, followed by Args documentation. The 'Args:' header format is slightly informal but every sentence earns its place; no redundant text or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and parameters are documented in the description, the essentials are covered. However, for a search tool with zero annotations, the description should ideally address authentication requirements and the relationship to sibling 'get_library_*' tools (when to search vs. list).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage (only titles). The description compensates effectively by documenting all three parameters: 'Search term' for query, comma-separated type options with the four valid values for types, and range constraints with defaults for limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search within your personal Apple Music library'—a specific verb-plus-resource statement that clearly distinguishes this from the sibling 'search_catalog' tool by emphasizing the personal library scope versus the public catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'personal Apple Music library' provides implicit context for when to use this tool (vs. 'search_catalog'), but lacks explicit guidance on prerequisites (e.g., requiring Apple Music subscription/library access) or conditions when this might return empty results.
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?
No annotations are provided, so the description carries the full disclosure burden. It clearly states the search scope but lacks details on rate limits, authentication requirements, or pagination behavior beyond the 'limit' parameter. Defaults are documented, which provides some 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses an efficient structure: a single summary sentence followed by a structured Args section. Every line provides specific constraints, examples, or defaults. No redundant or filler text is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately focuses on input parameters and search scope. It adequately covers the 3 parameters despite zero schema coverage. A brief note explicitly contrasting 'catalog' vs 'library' search would improve contextual completeness given the sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by documenting all three parameters: 'query' includes concrete examples (Radiohead, Bohemian Rhapsody), 'types' specifies valid options and default value, and 'limit' provides the valid range (1-25) and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb (Search) and resource (Apple Music catalog) with clear scope (songs, albums, artists, playlists). However, it does not explicitly distinguish from the sibling tool 'search_library', though the use of 'catalog' vs 'library' in the names provides implicit 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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying 'Apple Music catalog', suggesting public content vs personal library, but provides no explicit guidance on when to choose this over 'search_library' or other alternatives. No when-not-to-use or prerequisite information is included.
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?
No annotations are provided, so the description carries the full burden. It successfully discloses the key behavioral trait that the API returns containers rather than tracks. However, it omits the time window for 'recently', pagination behavior, and authentication requirements beyond the implied 'your'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, followed by the important behavioral Note, then parameter details. The structure is logical and appropriately sized for a single-parameter tool. The 'Args:' formatting is slightly informal but clear and wastes no space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately avoids duplicating return value structure. It covers the essential Apple Music-specific context (container behavior). Minor gap: the timeframe for 'recently' is undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage (no 'description' field on the limit property). The description fully compensates by documenting the limit parameter with its semantic meaning ('Number of items to return'), constraints ('1–50'), and default value ('default 10') in the Args section.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') and resource ('recently played albums, playlists, and stations'). The Note explicitly distinguishes this from track-returning siblings like get_playlist_tracks or get_library_songs by clarifying it returns containers, satisfying 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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The Note about containers vs tracks provides implied usage guidance (don't use for individual tracks), but lacks explicit when-to-use recommendations or named alternatives. It does not explicitly contrast with get_library_* tools for history vs full-library access.
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?
With no annotations provided, the description carries full disclosure burden. It provides operational constraints (limit range 1-100, default 100, ID format 'p.'), but lacks explicit safety confirmation (read-only nature), error behaviors, or pagination details for large playlists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured with clear purpose statement followed by Args block. No redundant information; every line provides specific value. Appropriate length for tool complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema, simple parameter structure (2 primitives), and clear behavioral anchors, the description is complete. Prerequisites, constraints, and sibling relationships are adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Excellent compensation for 0% schema description coverage. Provides format pattern for playlist_id ('p.'), cross-reference for ID lookup, and complete constraint documentation for limit (valid range and default), adding substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' with clear resource 'tracks' and scope 'inside a specific playlist'. Clearly distinguishes from sibling get_library_playlists which retrieves playlists rather than tracks within them, and from add_tracks_to_playlist which modifies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear prerequisite guidance by referencing sibling tool get_library_playlists to find valid IDs. However, lacks explicit 'when not to use' guidance compared to alternatives like get_library_songs or search_catalog.
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
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Cifero74/mcp-apple-music'
If you have feedback or need assistance with the MCP directory API, please join our Discord server