FastMCP-based server for audio ingestion, embedding, and music library management with support for metadata extraction, format conversion, and streaming
Server has 7 tools with visible schema definitions and descriptions, but significant gaps limit quality. Tool naming follows verb_noun conventions (get_, search_, update_, delete_, download_) which is good. However, descriptions are often generic and lack context about WHEN to use tools or HOW they fit into workflows. Parameter schemas exist but lack detailed constraints (enums, ranges, patterns). Most critically, output schemas are not documented, LLMs cannot plan downstream tool calls without knowing what fields are returned. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite having tools marked as DESTRUCTIVE and WRITE in the schema. Security parameters (audio_id is a UUID) are not validated or constrained in descriptions.
MCP tool to delete a previously processed audio track
Download audio track in specified format with conversion and metadata embedding
MCP tool to retrieve metadata for a previously processed audio track
Generate embed URL configuration for audio track player
Health check endpoint to verify server is running
MCP tool to search across all processed audio in the library
Update metadata for a previously processed audio track using JSON Merge Patch semantics
Output schemas not documented. Tools like search_library, update_metadata, and download_audio have descriptions but no visible return type schema. LLMs cannot plan multi-step workflows (e.g., search → get details → download) without knowing what fields are returned.
delete_audio lacks consequences clarity. Description says 'delete a previously processed audio track' but does not state whether this is reversible, whether it requires confirmation, or what happens to dependent records (e.g., metadata, references). Agents need explicit guidance on irreversible side effects.
Tool annotations missing. Tools marked as DESTRUCTIVE (delete_audio) and WRITE (update_metadata) in the schema file, but no readOnlyHint, destructiveHint, or idempotentHint properties visible in tool definitions. These annotations help LLMs reason about safety and retry logic.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Parameter constraints underspecified. audio_id is described as 'UUID of the audio track' but no regex pattern, length bounds, or format validation visible. format in download_audio is described as '(mp3, wav, flac, aac, ogg)' as an example, not an enum, LLMs may hallucinate other formats. preset defaults to 'high' but other valid values not listed.
Error handling and recovery guidance absent. No visible error responses, status codes, or recovery instructions. E.g., if audio_id is invalid, what should the LLM do? Call search_library first? No guidance provided.
Pagination and result limits unclear. search_library accepts limit and offset but no total count or next_cursor documented. No guidance on maximum result size, default limit, or what happens when offset exceeds available results.
Weak descriptions for parameters. filters in search_library is 'Optional filters (format, genre, year, etc.)', too vague. Should specify: what fields can be filtered, value types (string, number, date), and exact syntax. update_metadata lists fields but no guidance on which are mutable or what happens if you pass invalid fields.