Model Context Protocol (MCP) server for SonicBridge, providing AI agents with physical music aesthetic capabilities.
Three tools with complete input schemas and descriptions, but significant gaps in parameter documentation and output schema specification. Tool names follow verb_noun convention (analyze_, compare_, save_). Descriptions are present (60-90 chars) but lack actionable context for LLM selection. Critical issue: no output schemas documented anywhere, LLMs cannot plan downstream calls or extract results. Parameter descriptions exist but are minimal (10-30 chars). The save_alrc tool includes input validation (ALRC format guard) but lacks error recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear semantic differences (two read-only, one write). Missing: pagination guidance, rate limits, and chaining IDs in responses.
Analyze an audio file (wav/mp3/flac) and extract musical features (Chord, Timbre, Dynamic). Returns LLM-readable text.
Compare two audio files using Dynamic Time Warping (DTW) to find sequence differences.
Save generated Aesthetic Lyrics (.alrc) content to the local disk, co-located next to the original audio file.
No output schemas documented. LLMs cannot infer what analyze_music, compare_music, or save_alrc return. This blocks downstream tool chaining and forces agents to guess at response structure.
Parameter descriptions are too brief (10-30 chars). 'Absolute path to the audio file' lacks context on format (must be absolute? relative OK?), file size limits, or supported codecs beyond the tool description.
Missing tool annotations. save_alrc is destructive (writes to disk) but has no destructiveHint. analyze_music and compare_music are read-only but lack readOnlyHint. Agents cannot determine retry safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
save_alrc includes input validation (validate_alrc function) but error messages are not returned to the LLM. If validation fails, the agent receives no guidance on what went wrong or how to fix it.
No pagination or result limits documented. If analyze_music returns large feature arrays or compare_music returns long DTW sequences, responses could exhaust context windows without guidance on chunking.