Exposes Anvil's generation, editing, and registry capabilities to MCP clients (Claude Desktop, Claude Code, custom agents) over stdio transport. Provides AI audio generation and post-processing with pluggable model support.
Anvil Audio has well-structured tool definitions with complete input schemas and descriptions for all 5 tools. Naming follows verb_noun convention (generate_audio, edit_audio, list_models, set_active_project, batch_generate). Descriptions are detailed (100-300 chars) and explain WHEN to use each tool. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Parameters lack enums where appropriate (fmt, pipeline_type). Error handling guidance is minimal. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (WRITE vs READ_ONLY). Batch tool is well-designed but lacks per-item error reporting.
Generate multiple audio samples in a single batch call. Accepts a list of prompts with optional per-item overrides (model, duration, steps, cfg_scale, seed, lyrics). Useful for bulk generation workflows. All items are generated sequentially and saved to the same project folder. A batch manifest JSON is created listing all outputs.
Post-process an audio file using a registered compressor/editor model. Supported operations depend on the model's capabilities. Typical uses: - Noise reduction - Compression / limiting - EQ / filtering - Upsampling / downsampling - Format conversion If model is not specified, Anvil picks the first available compressor.
Generate audio from a text prompt using a registered model. For sound effects and ambient audio, describe what you want directly (e.g. "wooden door creak", "rain on a tin roof", "footsteps on gravel"). For music, use style tags and optional lyrics with an ACE-Step model (e.g. "indie pop, acoustic guitar, warm vocals, upbeat"). If model is not specified, Anvil picks one automatically: ACE-Step for music-style prompts (if installed), Stable Audio for everything else.
List all registered audio generation and editing models. Returns model name, type (diffusion, acestep, compressor), source (pretrained name or local config path), and parameter defaults.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining or data extraction.
Missing enum constraints on string parameters. 'fmt' accepts 'wav'|'flac'|'mp3'|'ogg' but is defined as free-form string; 'model' is free-form despite registry-backed values. LLMs will hallucinate invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools marked WRITE risk (generate_audio, edit_audio, batch_generate, set_active_project) should declare destructiveHint=true to guide agent retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Set the default output project folder for subsequent generation and editing calls. When project="" is passed to generate_audio or edit_audio, the active project is used. Whitespace-only values are treated as "default".
Error handling lacks recovery guidance. Code shows _log() for status but no structured error responses with actionable next steps (e.g., 'Model not found. Call list_models() to see available options.').
batch_generate lacks per-item error reporting. If 1 of 50 items fails, the response should indicate which items succeeded/failed, not a blanket error.