MCP server that gives AI agents a searchable catalog of the most extensive list of free, open-source, royalty-free music sources via multiple APIs and curated catalogs
Server has 4 tools with complete schemas and descriptions. Naming follows verb_noun pattern (search_music, list_sources, skills_list, skill_read). Descriptions are present and adequate (100-200 chars), meeting baseline. However, parameter descriptions lack detail on constraints, formats, and valid values. The 'sources' parameter in search_music accepts an array of strings but does not enumerate valid source names in the description, LLMs must infer from context. Output schemas are partially documented in code comments but not formally exposed. Error handling is instrumented (telemetry, categorization) but recovery guidance is minimal. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Overall: solid foundation, but parameter constraints and output documentation need strengthening.
List all available music sources with their configuration status, license families, and API key requirements.
Search for music across multiple free, royalty-free sources (Internet Archive, Wikimedia Commons, Jamendo, Freesound, Incompetech). Returns tracks with license and attribution information.
Read the full content of a specific skill (guide or troubleshooting documentation).
List all available skills (guides and troubleshooting documentation) for using the music search server.
Parameter 'sources' in search_music lacks enum constraint. Description says 'List of source names' but does not enumerate valid values (internet_archive, wikimedia_commons, jamendo, freesound, incompetech). LLMs will hallucinate invalid source names.
Output schemas not formally documented in tool definitions. Code comments describe result shapes (e.g., search_music returns {hits, skipped}) but LLMs cannot see these. Agents cannot plan downstream calls without knowing what fields to expect.
No tool annotations despite all tools being read-only. Adding readOnlyHint=true to all 4 tools would signal to clients that these are safe to call without user confirmation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter 'intent' in search_music is optional but lacks description of its purpose and expected format. Is it free-form text? Does it affect ranking? LLMs cannot reason about when to include it.
Error responses from tools are categorized internally (ValidationError, AuthError, APIError) but this taxonomy is not exposed to LLMs. Agents cannot distinguish retryable from user-fixable errors without seeing the error_category field.