MCP Server for generating sound effects using the elevenlabs-sfx library.
Single tool 'generate_sfx' has a complete input schema with proper JSON Schema structure and all parameters typed. Description is adequate (145 chars, within 10-1024 range). However, output schema is undocumented, the tool returns a TextContent with a file path, but the LLM has no formal specification of what fields to expect. Parameter descriptions are present but lack actionable constraints (e.g., prompt_influence range 0.0-1.0 is mentioned but not enforced; no guidance on valid duration ranges). Error handling exists but is generic (McpError with code/message) and does not guide recovery. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The tool modifies state (writes files) but the description does not explicitly warn of side effects.
Generates a sound effect based on a text prompt using the ElevenLabs API and returns the path to the audio file.
Output schema not documented. Tool returns TextContent with file path, but LLM has no formal specification of response structure, field names, or types. This forces LLMs to guess what data is available for downstream operations.
Parameter constraints lack actionable detail. 'prompt_influence' description states range 0.0-1.0 but does not enforce it; 'duration_seconds' has no min/max guidance. LLMs may pass invalid values (negative duration, influence > 1.0) without validation feedback.
Tool modifies state (writes files to disk) but description does not declare this. Per pattern:command-tool, state-modifying tools must explicitly warn agents of side effects and irreversibility.
Error handling is generic. McpError responses do not guide recovery. E.g., if API key is missing, the error should suggest 'Set ELEVENLABS_API_KEY environment variable' rather than a bare error code.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No tool annotations. Tool lacks readOnlyHint, destructiveHint, or idempotentHint. The destructiveHint should be true (writes files); idempotentHint should be false (repeated calls with same input produce versioned files, not identical results).