Skip to main content
Glama

audio-mcp

Audio perception for AI agents. Language models can't hear. This MCP server turns sound into things they can reason about: measurements, plain-language problem reports, spectrogram images, note lists, event timelines, transcripts and before/after diffs. It can also edit and synthesize audio, so an agent can work in a loop: make or fix a sound → measure it → look at it → verify the change.

Everything runs locally. No GPU, no API keys. Core dependencies: numpy, scipy, soundfile, matplotlib.

Real output (JSON abbreviated) from the bundled demo, scripts/demo.py:

> audio_analyze voice_raw.wav          # speech recorded with mains hum and hiss
  levels: lufs_integrated -32.16, true_peak_dbtp -11.76, clipped_samples 0
  issues: [warning] Mains hum at 60 Hz (peaks at 60, 180 Hz). Fix: notch each with
                    {"op":"eq","hz":60,"db":-30,"q":30}, {"op":"eq","hz":180,"db":-30,"q":30};
                    for voice, highpass at ~80-100 Hz also removes the fundamental.
          [info]    Noise floor around -33.4 dBFS in the quietest parts; hiss or background noise may be audible.

> audio_events sfx.wav                 # a zap, a noise hit, another hit, a rising chirp
  0.09-0.36s | -4dB  | tonal | balanced          | glide G#6->B3 (-33st) | sharp attack
  0.59-0.69s | -16dB | noisy | very bright/harsh | sharp attack
  ...

> audio_melody melody.wav              # "Mary Had a Little Lamb", transcribed blind
  E4(0.23) D4(0.24) C4(0.23) D4(0.24) E4(0.25) E4(0.25) E4(0.5) D4(0.24) D4(0.26) D4(0.49) E4(0.25) G4(0.26) G4(0.47)

Tools

Tool

What it gives the agent

audio_analyze

Peak, true peak, RMS, LUFS loudness, clipping, DC offset, a loudness sparkline, silence and noise floor, stereo correlation/width/balance, band energy, brightness, tonal vs. noisy, strongest frequencies as note names, pitch, onsets, tempo, edge clicks, loop-seam quality, and an issues list in plain language with suggested fixes

audio_events

Splits audio into distinct sounds and describes each one: timing, level, attack, tonal/noisy, brightness, pitch or glide

audio_view

PNG waveform and/or spectrogram, with an optional pitch overlay. Every column covers its full time span, so short clicks aren't skipped on long files

audio_timeline

Level and brightness over time. Streams the file, so it works on recordings of any length

audio_melody

Single-line transcription: notes, timings, cents, compact text

audio_transcribe

Speech to text with local Whisper: timed words, language, speaking rate, long pauses and uncertain words (optional extra)

audio_compare

A/B summary, metric deltas, per-band dB changes, issues fixed or introduced, and a null test (identical? only a gain change? lightly changed?)

audio_process

An ordered chain of edits written to a new file: gain, peak/LUFS normalize, true-peak limiter, compressor, noise reduction, RMS normalize, trim, fades, crop, pad, high/low-pass, peaking EQ, shelves, DC removal, polarity, mono/stereo, resample, reverse, seamless-loop crossfade, mix, append

audio_batch_survey

Audits a folder for consistency (loudness outliers, mixed sample rates/channels/formats, uneven leading silence) and returns ready-to-run fixes

audio_batch_process

Applies one edit chain to many files and writes them to an output folder

audio_synthesize

Declarative synth: band-limited oscillators with phase control, noise colours (pink/brown loop seamlessly), sweeps, ADSR, vibrato, tremolo, filters, pan, note sequences, plus exact test signals (impulse, DC, silence)

audio_info

Metadata for a file, or a listing of the audio files in a folder

audio_check_delivery

Pass/fail against a delivery spec (Apple Podcasts, Spotify, YouTube, EBU R 128, ATSC A/85, ACX audiobooks, game SFX) with cited sources and a fix that has already been tried on your file

audio_check_game_project

Audits a Godot 4 project's audio: loudness consistency per category, loop settings and clicky seams, defects, and broken or unused res:// references

Reads WAV, FLAC, OGG/Vorbis, Opus, MP3, AIFF and CAF natively (via libsndfile). With FFmpeg installed it also reads M4A/AAC (phones, Zoom, voice memos), WMA and the audio of video files (MP4, MOV, WebM, MKV): winget install Gyan.FFmpeg on Windows, brew install ffmpeg on macOS, sudo apt install ffmpeg on Debian/Ubuntu, or set AUDIO_MCP_FFMPEG to the binary. Each file is decoded once per session. Edited files are written as WAV/FLAC/OGG/AIFF/MP3.

Delivery checks

audio_check_delivery tells you whether a file meets a platform's spec and how to fix it if it doesn't. Every criterion shows what's required, what was measured and whether it passes. The suggested fix is an ordered audio_process chain (noise handling before gain, true-peak limiting last) that has already been simulated on your file, and the tool says plainly when something can't be fixed automatically, or when heavy background noise needs a person's judgment. Spec numbers cite their official sources and the date they were checked.

Game projects (Godot 4)

audio_check_game_project(project_dir) audits every .wav/.ogg/.mp3 in a Godot 4 project. It infers categories (UI, SFX, voice, music, ambience) from folder and file names, or takes your own mapping. It reads the .import settings to find music that won't loop, sound effects that loop forever, and loop seams that click. It compares loudness within each category (short sounds by their loudest moment, music by integrated LUFS) and reports outliers with fixes you can run directly. It also scans scenes and scripts for broken, wrongly cased or unused res:// audio references. It never modifies the project.

Related MCP server: chat-with-audio

Install

pip install audio-mcp              # or: uv tool install audio-mcp
pip install "audio-mcp[speech]"    # adds audio_transcribe (faster-whisper; downloads a ~145 MB model on first use)

Connect it to your MCP client

Claude Code

claude mcp add audio -- uvx audio-mcp
# or, if installed with pip:
claude mcp add audio -- audio-mcp

Claude Desktop, Cursor, and other clients (JSON config):

{
  "mcpServers": {
    "audio": { "command": "uvx", "args": ["audio-mcp"] }
  }
}

Then ask things like "check the sound effects in ./sfx for problems", "clean up interview.wav for a podcast" or "design a short UI confirm sound and check it isn't harsh".

Restricting file access

By default the server can read and write any file your user account can. To confine it, set AUDIO_MCP_ALLOWED_DIRS to a list of directories (separated by ; on Windows, : elsewhere):

{ "command": "uvx", "args": ["audio-mcp"], "env": { "AUDIO_MCP_ALLOWED_DIRS": "/home/me/audio" } }

Paths are checked after resolving .. and symlinks. Other settings: AUDIO_MCP_MAX_SECONDS (largest section loaded into memory per call, default 1800), AUDIO_MCP_WHISPER_MODEL (default base), AUDIO_MCP_ROOT (base for relative paths).

How accuracy is checked

The tests mostly use synthetic signals whose correct answer is known by construction, so they check correctness rather than just "no crash":

  • Loudness: our streaming BS.1770 meter matches pyloudnorm's exact-filter mode within 0.01 LU from 8 to 96 kHz, and reads the EBU reference tone (997 Hz, 0 dBFS) at −3.01 LUFS.

  • Limiter: a +15 dBTP input comes out at exactly −1.0 dBTP with no samples touched by the safety clip.

  • Pitch and melody: sines, chirps and synthesized melodies are recovered note for note, including repeated notes; pitch is within 1 cent from 82 Hz to 1760 Hz.

  • Tempo, onsets, events, silence, stereo phase, hum, clipping, alignment offsets: each is checked against a constructed signal.

  • A contract test runs every tool on every content type (silence, DC, noise, full-scale square), length (1 sample to 3 s), format (16/24/float WAV, FLAC, Vorbis), channel count (1, 2, 6) and sample rate (8–96 kHz). Each call must either succeed or fail with an AudioError that explains itself.

  • Memory: analysis is chunked. A 20-minute stereo 48 kHz file analyzes in about 19 s with about 1.2 GB peak memory, 0.7 GB of which is the audio itself.

Design principles

  • Never destructive by default. Edits write <name>_processed.wav; overwriting needs overwrite=true, and batch output can't target the input folder.

  • Errors say what to do next. An unknown op lists every op with its parameters; an undecodable file names the supported formats and how to install FFmpeg for the others. Unexpected errors are reported as bugs instead of being hidden.

  • Honest about uncertainty. Chords set polyphony_likely instead of reporting a confident wrong pitch, weak tempos carry a low-confidence note, Whisper's uncertain words are listed, and LUFS is null for clips under 0.4 s.

  • Compact output. Rounded numbers, sparklines and one-line event summaries keep responses small enough for an agent's context.

Limitations

  • Pitch, melody and per-event pitch assume one note at a time. Chords and full mixes are flagged, not transcribed.

  • Denoise is a spectral gate for steady noise (hiss, hum, fans, room tone). It doesn't remove clicks, music or other voices. Too much sensitivity dulls quiet consonants, so verify speech edits with audio_transcribe.

  • Tempo is a classic autocorrelation estimate; half- and double-tempo errors happen on complex music.

  • The tools describe sound, but they don't judge taste ("is this satisfying?").

Reference signals

audio-mcp-assets is a public-domain pack of test and calibration audio (tones, sweeps, calibrated noise, loudness, stereo and phase tests, impulses, problem files) that an AI agent built using only these tools. Every file is verified against known ground truth, twice, including independently of this project.

Contributing

Improvements from people and AI agents are welcome. See CONTRIBUTING.md; AI coding agents should also read AGENTS.md. The bar for a feature is that it does one thing well, with a test against known ground truth.

License

MIT

Available Tools

14 tools
audio_analyzeA
Read-only

Measure an audio file (or the start..end section): peak/true-peak/RMS/LUFS loudness, clipping, DC offset, a loudness sparkline over time, silence and noise floor, stereo correlation/width/balance, spectral balance (band energy, brightness, tonal vs noisy, strongest frequencies as notes), pitch, onsets/tempo, start/end clicks and loop-seam quality. Ends with issues: plain-language problems ranked by severity. Set pitch/rhythm to false to run faster.

NameRequiredDescriptionDefault
endNo
pathYes
pitchNo
startNo
rhythmNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered; the description adds real behavioral context beyond that by disclosing the shape of the result ('Ends with `issues`: plain-language problems ranked by severity') and a runtime cost knob. It stops short of noting limits such as supported formats, file-size constraints, or expected runtime.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The long capability list is dense rather than padded, every clause names a distinct measurement, and the core purpose leads the sentence. It is on the verbose side but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so partially, naming the `issues` summary and the category of measurements returned. For a 5-parameter analysis tool it is close to complete, lacking only parameter units and format/limit caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It does explain two parameters meaningfully – `start`/`end` as the analyzed section and `pitch`/`rhythm` as speed-vs-depth toggles – but it never states the units for start/end (seconds?) and says nothing about `path` beyond the obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (measure) and resource (an audio file or its start..end section), then enumerates the exact measurement families produced: loudness, clipping, DC offset, silence/noise floor, stereo field, spectral balance, pitch, onsets/tempo, loop-seam quality. That enumeration makes it easy to separate from siblings like audio_info (metadata) or audio_compare.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only actionable guidance is the performance tradeoff 'Set pitch/rhythm to false to run faster,' plus the implicit scoping note about analyzing a start..end section. There is no explicit when-to-use versus audio_info, audio_check_delivery, or audio_compare, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_batch_processA

Apply one operations chain (same format as audio_process) to every file in a folder or list, writing results with the same relative names into output_dir. Refuses to write into the input folder unless overwrite=true. Example: normalize a set of sound effects to the same loudness: [{"op":"trim_silence"}, {"op":"normalize_lufs","lufs":-18,"limit":true}]. subtype: sample format for every output, e.g. PCM_16, PCM_24, FLOAT, or PCM_U8 for 8-bit WAV (retro or low-memory targets: combine with to_mono and resample). Checked before any file is written.

NameRequiredDescriptionDefault
targetYes
patternNo*
subtypeNo
overwriteNo
operationsYes
output_dirYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a non-read-only, non-destructive, closed-world write. The description adds real behavioral detail beyond them: same relative output names, refusal to write into the input folder without overwrite=true, and subtype validation happening before any file is written. It stops short of describing partial-failure behavior when one file in a batch fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core contract (one chain, every file, output naming), then safety, then a compact example, then subtype notes. Dense but every paragraph carries information; the subtype sentence is slightly run-on but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param mutating tool with no output schema and no schema descriptions, the description covers the essentials: what is processed, where output lands, the overwrite safeguard, and operations format. Gaps remain around pattern/target semantics and per-file error handling, but an agent can invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description has to carry the load. It explains subtype (with concrete values), the overwrite safety gate, the operations chain format via example, and output_dir semantics, but leaves target (folder vs list) and pattern interpretation largely implicit, so half the params remain under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and scope: apply one operations chain to every file in a folder or list, writing results into output_dir. The batch framing clearly distinguishes it from the sibling audio_process (single-file) and audio_batch_survey (inspection rather than processing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes the when-to-use condition clear through the batch framing and a concrete example (normalize a set of sound effects), and adds a critical usage constraint: it refuses to write into the input folder unless overwrite=true. It does not explicitly name audio_process as the alternative for single files, but the batch/single split is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_batch_surveyA
Read-only

Analyze a folder (recursive; filter with a glob pattern like ".wav" or "footstep") or a list of files, and report how consistent they are: loudness outliers, mixed sample rates/channels/formats, inconsistent leading silence, files with problems. Includes suggested_fixes with ready-to-use operations for audio_batch_process, and a per-file table.

NameRequiredDescriptionDefault
targetYes
patternNo*

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it discloses the return contents (issues list, per-file table, suggested_fixes with ready-to-use operations) and that recursion is applied, though it says nothing about cost or large-folder behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the primary verb and resource front-loaded, followed by the report contents and the audio_batch_process handoff. Every clause carries information; only the parenthetical examples make it slightly heavier than needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so adequately (consistency findings, per-file table, suggested_fixes). For a 2-parameter read-only tool this is essentially complete, missing only corpus-size or performance caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it explains target accepts a folder OR a list of files, and that pattern is a glob (e.g. "*.wav", "footstep*") used to filter. It omits the explicit default "*", which the schema still supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (analyze/report) and resource (a folder of audio files or a list of files) with the exact scope of analysis: loudness, sample rates/channels/formats, and leading silence. It also implicitly distinguishes itself from the sibling audio_batch_process by being the read-only consistency survey whose suggested_fixes feed that tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear (checking batch consistency before processing) and explicitly names the downstream tool audio_batch_process, which routes the agent within the sibling set. It stops short of stating when NOT to use it, so no exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_check_deliveryA
Read-only

Check a file against a delivery spec and get a verdict (pass / pass with warnings / fail), one entry per criterion (required, measured, status, note), and fix: an ordered audio_process operations list that was simulated on this file (fix.verified), plus cannot_fix for problems no processing can solve (clipping, a noise floor too high to remove without damaging speech, wrong length). Specs: apple_podcasts, spotify, youtube, ebu_r128, atsc_a85, acx_audiobook, game_sfx (spec="list" describes them). Each result cites its sources and the date they were checked. After a fix that includes denoise, verify the words with audio_transcribe.

NameRequiredDescriptionDefault
endNo
pathYes
specYes
startNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, so the description usefully adds that the fix is an ordered operation list 'simulated on this file' (fix.verified) and enumerates what cannot be fixed (clipping, unfixable noise floor, wrong length). It also notes each result cites sources and check dates. It does not clarify write behavior beyond the simulation hint or any cost/latency characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and return shape, then spec list, then the cross-tool follow-up. Dense but nearly every clause carries information; only the parenthetical source/date note is marginal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of describing returns, and it does so well (verdict levels, per-criterion fields, fix/fix.verified, cannot_fix). For a read-only check tool this is close to complete, though the unexplained start/end parameters leave a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema gives no parameter meaning, but the description compensates for `spec` by enumerating the valid spec values (apple_podcasts, spotify, youtube, ebu_r128, atsc_a85, acx_audiobook, game_sfx). However path, start, and end — the latter two presumably a time window — are never explained, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (a file against a delivery spec) and immediately characterizes the output shape (verdict, per-criterion entries, fix list). It is clearly distinguishable from siblings like audio_analyze or audio_info, which don't target named delivery specs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: check a file against one of the named specs, use spec="list" to enumerate them, and after a denoise fix verify words with audio_transcribe. It never explicitly says when to prefer a sibling (e.g. audio_analyze) instead, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_check_game_projectA
Read-only

Audit the audio of a Godot 4 project (the folder with project.godot): inventory of every .wav/.ogg/.mp3 with a category (ui, sfx, voice, music, ambience, inferred from folder/file names; override with categories, e.g. {"audio/stingers": "music", "/click_": "ui"}), import settings from the .import files (music/ambience that doesn't loop, SFX/UI that do, clicky loop seams, never-imported files), loudness consistency per category (one-shots by LUFS momentary max, music/ambience by integrated LUFS; outliers, median, spread), per-file problems (clipping, leading silence, clicky ends, DC offset, mixed sample rates, stereo SFX) and res:// references in .tscn/.tres/.gd/.cs files (broken paths, wrong letter case, unreferenced files). Returns summary, per-category categories stats with suggested_batch for audio_batch_process, and issues sorted problem > warning > info, each with a res:// file and a fix (audio_process operations or an editor step). res://x means <project_dir>/x. Read-only: never modifies the project. Analyzes at most max_files files, each over its first max_seconds (loop seams use the real loop points).

NameRequiredDescriptionDefault
max_filesNo
categoriesNo
max_secondsNo
project_dirYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=false, and the description reinforces this ('Read-only: never modifies the project'). It adds real behavioral context beyond annotations: truncation limits (at most max_files files, first max_seconds each), the loop-seam exception using real loop points, and the res:// path semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then progressively adds detail, return shape, then behavioral constraints. It is dense with parenthetical clauses and reads as a long run-on, but nearly every clause carries distinct information needed to call the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, non-destructive audit tool with four parameters and no output schema, the description covers the return structure (summary, per-category categories stats, issues sorted problem > warning > info, each with res:// file and fix), the parameter semantics, and the runtime limits. An agent has everything needed to invoke and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it explains the 'categories' override with glob examples ({"audio/stingers": "music", "*/click_*": "ui"}), and defines max_files/max_seconds as sampling limits, plus identifies project_dir via 'the folder with project.godot'. It stops short of a formal per-parameter enumeration, so 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: 'Audit the audio of a Godot 4 project (the folder with project.godot)'. The scope is enumerated precisely (inventory, import settings, loudness consistency, per-file problems, res:// references), so an agent can distinguish it from generic analyzers like audio_analyze or audio_info without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use it (auditing a whole Godot 4 project's audio) and routes the agent downstream by emitting 'suggested_batch' for audio_batch_process and 'fix' entries as audio_process operations. It does not compare itself to audio_check_delivery or state exclusions, so no full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_compareA
Read-only

A/B two files: plain-language summary, metric deltas (loudness, peak, brightness, tempo, pitch), per-band level changes, spectral-shape similarity, issues fixed or introduced, and a null test (aligns and subtracts) that tells whether B is identical, gain-changed, lightly or heavily changed. Use after audio_process to verify an edit did what you intended and nothing else.

NameRequiredDescriptionDefault
path_aYes
path_bYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral detail beyond that: the null test aligns and subtracts, and its verdict categories (identical, gain-changed, lightly or heavily changed) tell the agent what conclusions the tool can reach. It does not disclose format support or behavior on mismatched lengths/rate, which keeps it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with 'A/B two files' before the output enumeration, and the usage directive lands at the end. The long parenthetical output list is dense but each item is substantive rather than filler, so it earns its space without being wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it does so thoroughly by enumerating the report components. Combined with read-only annotations, safety is covered. The remaining gap is the totally undocumented pair of path parameters and unsupported edge cases (mismatched durations/sample rates), which leaves it just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the two properties carry only boilerplate titles ('Path A'/'Path B'). The description's 'A/B two files' wording implies path_a is the reference and path_b the candidate, which is mild added meaning, but it never specifies path format, required presence, or supported file types, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('A/B two files') and then enumerates concretely what the comparison surfaces (metric deltas, per-band levels, spectral similarity, null test). An agent can distinguish this from siblings like audio_analyze or audio_info because the paired-file comparison and null-test framing are unique to this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives context: 'Use after audio_process to verify an edit did what you intended and nothing else.' That is a clear when-to-use signal tied to a workflow. It stops short of naming alternatives (e.g., when to reach for audio_analyze instead) or stating exclusions, so it is a strong 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_eventsA
Read-only

Split the audio into distinct sound events (hits, notes, words/syllables, SFX layers) and describe each: start/end, level, attack, tonal vs noisy, brightness, pitch and pitch glide. as_text gives one line per event, e.g. "0.52-0.81s | -14dB | tonal | bright | A5 glide -12st | sharp attack". Also reports spacing regularity and the sequence of pitches. The threshold adapts to the background level; set threshold_db (dBFS) to override. split_on_onsets=false keeps continuous sounds (e.g. a sentence) as one event.

NameRequiredDescriptionDefault
endNo
pathYes
startNo
threshold_dbNo
split_on_onsetsNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: an adaptive threshold that adjusts to background level, an example output line format, and mention of spacing regularity and pitch sequences. Not exhaustive (no cost/limit notes) but well above the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the returned attributes, then folds parameter behavior into the same tight paragraph with a concrete example line. Dense but every sentence carries information; only the stray 'as_text' reference adds mild confusion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so convincingly via the attribute list, example line, and regularity/pitch reporting. The remaining gap is undocumented start/end semantics on a 5-parameter tool, a minor omission given the otherwise rich output description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate and it partially does: threshold_db (dBFS override) and split_on_onsets are explained with their effect. But path, start, and end are never described, and 'as_text' is referenced as if it were a parameter though it does not appear in the schema, so half the parameters remain semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('split the audio into distinct sound events') and enumerates the per-event attributes produced, so the agent knows exactly what it yields. It does not explicitly differentiate itself from near siblings like audio_melody or audio_analyze, which limits it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers conditional guidance for two parameters (override threshold_db; set split_on_onsets=false to keep continuous sounds as one event), which implies usage contexts. However, it never states when to pick this tool over alternatives such as audio_melody or audio_analyze, so routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_infoA
Read-only

Fast metadata without decoding: format, sample rate, channels, duration. Files read through FFmpeg (M4A/AAC, WMA, MP4/MOV/WebM/MKV video) report decoded_via="ffmpeg", the container as format and the codec as subtype; without FFmpeg they fail with install instructions. If path is a directory, lists the audio files inside it (recursively).

NameRequiredDescriptionDefault
pathYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint/openWorldHint), which only cover the safety profile. It discloses the FFmpeg dependency, the concrete failure mode and message when FFmpeg is absent, how formats map to format/subtype/decoded_via, and that a directory path triggers recursive listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core value ('Fast metadata without decoding'), followed by concrete detail. Slightly dense in the FFmpeg/container/codec sentence, but every clause carries information an agent needs; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does a fair job by naming the reported fields and the decoded_via/format/subtype semantics, plus the directory-listing variant. It stops short of specifying ordering or how many files a directory listing returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single `path` parameter, so the description must compensate. It does: `path` is documented as accepting either a file or a directory, with recursive enumeration behavior on directories, which is meaningfully more than the bare string schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read/report metadata) and an explicit scope: 'Fast metadata without decoding: format, sample rate, channels, duration.' The 'without decoding' qualifier and the enumerated fields clearly distinguish it from heavier siblings like audio_analyze or audio_transcribe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the 'without decoding' framing and the directory behavior hint at when this cheap metadata call is the right choice, but no sibling is named and there is no explicit when-not guidance (e.g. 'use audio_analyze if you need spectral content').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_melodyA
Read-only

Transcribe a monophonic line (voice, whistle, solo instrument, synth lead, SFX pitch) into notes with start times, durations, note names and cents deviation, plus a compact text form. Narrow fmin/fmax to the expected range for better accuracy (e.g. bass 40-400, voice 80-1000).

NameRequiredDescriptionDefault
endNo
fmaxNo
fminNo
pathYes
startNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the result contents: notes with start times, durations, note names, cents deviation, and a compact text form, which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and output format, followed by actionable tuning advice. No filler, though the parenthetical source list is slightly long for its information content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only analysis tool with no output schema, the description adequately conveys what is produced and how to tune the frequency bounds. The main gap is the unexplained start/end time-window parameters, but overall an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, so the description must carry the load. It partially compensates by explaining fmin/fmax and giving concrete ranges (bass 40-400, voice 80-1000), but path, start, and end are left entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Transcribe) and a narrowly-scoped resource (monophonic line) and enumerates the applicable sources (voice, whistle, solo instrument, synth lead, SFX pitch). The 'monophonic' constraint implicitly separates it from the broader audio_transcribe sibling, but no sibling is named or contrasted explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives tuning guidance for fmin/fmax with concrete ranges, which is useful operating advice, but never states when to choose this tool over audio_transcribe or audio_analyze. Usage context is only implied by the monophonic-signal constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_processA

Apply operations in order and write a NEW file (default: _processed. next to the input; the input is never modified unless output==path and overwrite=true; M4A/video inputs default to WAV output). Each operation is an object, e.g. [{"op":"highpass","hz":80}, {"op":"normalize_lufs","lufs":-16}, {"op":"fade_out","seconds":0.5}]. Ops: gain(db) normalize_peak(db=-1, true_peak=false) normalize_rms(db=-20) normalize_lufs(lufs=-16, ceiling_db=-1, limit=false, measure=integrated|momentary_max) trim_silence(threshold_db=-60, pad_ms=10) denoise(reduction_db=12, sensitivity=1, noise_start, noise_end) [verify speech afterwards with audio_transcribe] limit(ceiling_db=-1, release_ms=60, lookahead_ms=5) compress(threshold_db=-18, ratio=3, attack_ms=10, release_ms=120, knee_db=6, makeup_db=0) fade_in/fade_out(seconds, curve=cosine|linear|equal_power) crop(start, end) pad(start, end) highpass/lowpass(hz, order=4) eq(hz, db, q=1) low_shelf/high_shelf(hz, db) remove_dc to_mono to_stereo resample(rate) reverse polarity(channel=None) loop_crossfade(seconds=0.05) mix(path, at=0, gain_db=0) append(path, gap=0). subtype: e.g. PCM_16, PCM_24, FLOAT, PCM_U8 (8-bit) for WAV. Returns before/after levels and any warnings.

NameRequiredDescriptionDefault
pathYes
outputNo
subtypeNo
overwriteNo
operationsYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state non-readonly, non-destructive, closed-world. The description adds substantial context on top: input is never modified by default, the one override path (output==path with overwrite=true), default output path naming, and M4A/video inputs defaulting to WAV. It also discloses the return payload (before/after levels and warnings).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most safety-critical fact (a new file is written; input untouched) is front-loaded before the op catalog. The op listing is long but dense and non-redundant, since there is no structured documentation of the operations array elsewhere; minor tightening is possible but every line informs a caller.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema and 0% schema coverage, the description covers defaults, format conversion, overwrite semantics, the full operation catalog, output subtype values, and the shape of the return value. An agent has everything needed to invoke this five-parameter tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and does so well: it enumerates every operation name with its parameters and defaults (gain, normalize_*, denoise, fade, crop, resample, etc.), documents the operations object format with an example, explains output defaults, and lists valid subtype values like PCM_16/FLOAT/PCM_U8 for WAV.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Apply operations in order and write a NEW file', with concrete default naming and format-conversion behavior. It clearly conveys what the tool does, but it never names an alternative sibling (e.g. audio_batch_process for multi-file work), so an agent must infer the single-file vs batch split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: process one file with an ordered op list, and 'verify speech afterwards with audio_transcribe' hints at a follow-up step. There is no explicit when-to-use/when-not guidance or comparison to sibling tools like audio_batch_process or audio_analyze, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_synthesizeA

Generate audio from a declarative spec: tones, sweeps, chords, noise bursts, simple melodies and layered sound effects (band-limited oscillators, ADSR envelopes, vibrato, tremolo, filters, panning). Example laser zap: {"layers":[{"wave":"square","freq":1800,"freq_end":200,"duration":0.25, "envelope":{"attack":0.002,"release":0.1},"lowpass":6000}]}. Example melody: {"layers":[{"wave":"triangle","sequence":[["C4",0.25],["E4",0.25],["G4",0.5]]}]}. Full schema: spec = { "sample_rate": 44100, "duration": <seconds, default: end of last layer>, "normalize_peak_db": -1 (null to skip), "layers": [{ "wave": "sine|square|saw|triangle|noise|pink|brown|impulse|dc|silence", # pink/brown are generated circularly, so they loop seamlessly as-is. # impulse: one full-scale sample at the layer start, or a train with "freq" impulses per second. # dc: a constant offset (level set by gain_db; 0 dB = +1.0). silence: exact zeros. "freq": 440 or "A4", "freq_end": , "sweep": "exp|linear", "phase": <start phase, degrees>, "start": 0, "duration": , "gain_db": 0, "pan": -1..1, "envelope": {"attack": 0.005, "decay": 0, "sustain": 1, "release": 0.01}, "vibrato": {"rate_hz": 5, "depth_cents": 20}, "tremolo": {"rate_hz": 6, "depth": 0.5}, "lowpass": , "highpass": , "sequence": [["C4", 0.25], ["rest", 0.25], ["E4", 0.5]] # optional: one note per item, played back to back }] }

NameRequiredDescriptionDefault
specYes
outputYes
overwriteNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, openWorld=false, so the safety profile is covered. The description adds useful spec-level behavior (pink/brown loop seamlessly, dc is a constant offset), but says nothing about the file-write behavior, overwrite handling, or error cases that the output/overwrite params imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded before the examples and the schema reference. The inline schema is long but largely earns its place given 0% schema coverage; it is dense rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-spec synthesis tool with no output schema, the spec itself is thoroughly covered, but the definition omits what 'output' should contain (path/format), how 'overwrite' behaves, and what the tool returns, leaving real gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the burden, and it documents the complex nested spec object exhaustively (wave enums, freq/freq_end, envelope, vibrato, tremolo, filters, sequence) with worked examples. It leaves the 'output' and 'overwrite' parameters entirely unexplained, which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (Generate) and resource (audio) and enumerates the synthesis primitives (tones, sweeps, chords, noise, melodies, layered effects). It is highly specific, but it never differentiates from siblings like audio_melody or audio_process, which plausibly overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use, when-not, or named alternatives are given. The laser-zap and melody examples implicitly convey intended use cases, which is why this is not a 2, but the agent gets no routing guidance against the many audio_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_timelineA
Read-only

How the sound changes over time: per-segment RMS, peak and brightness, plus a loudness sparkline. Streams the file, so it works on recordings of any length; use it to find where to zoom in.

NameRequiredDescriptionDefault
endNo
pathYes
startNo
segmentsNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it streams the file, so it works on recordings of any length without loading everything into memory. It stops short of describing pagination or sparkline resolution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loaded with what the tool returns and followed by the operational constraint. Nothing is redundant and every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 0% parameter coverage across four parameters, the description should do more work. It usefully sketches the return shape (per-segment RMS, peak, brightness, sparkline), but leaves the start/end windowing semantics undocumented, which matters for a tool that claims to handle files of any length.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden for path, start, end, and segments. 'Per-segment' loosely hints at the segments parameter, but start/end ranges (units, whether seconds or samples) and the default of 24 segments are never explained, leaving half the parameters ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (audio timeline) and enumerates the specific outputs (per-segment RMS, peak, brightness, loudness sparkline), which is far more informative than the bare name. It does not, however, contrast itself with the many audio siblings like audio_analyze, audio_info, or audio_events, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one concrete use case, 'use it to find where to zoom in', which implies the tool is for coarse temporal scanning rather than detailed analysis. There is no guidance on when to prefer audio_analyze or audio_events instead, and no exclusions, so usage remains largely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_transcribeA
Read-only

Speech to text (Whisper, runs locally). Returns the text, timed segments, per-word timings with confidence, detected language, speaking rate, long pauses and uncertain_words (likely mis-hearings). model: tiny/base/small/medium/large-v3/turbo (bigger = more accurate, slower; first use downloads it). language: ISO code like "en" to skip detection. initial_prompt: names or jargon to help spelling. Use start/end to transcribe part of a long recording.

NameRequiredDescriptionDefault
endNo
pathYes
modelNobase
startNo
languageNo
initial_promptNo
word_timestampsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and openWorldHint, but the description adds traits they don't cover: local execution (no cloud API call) and the first-use model download, which is a real latency/network side effect an agent should anticipate. It also discloses the return envelope in detail (segments, per-word confidence, detected language, pauses, uncertain_words).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in a five-word lead, then parameter hints are packed into dense, colon-delimited clauses with no filler. It is slightly compressed, but every clause carries information an agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, the description covers the important behavioral facts and most parameters, and its return-value enumeration substitutes for the missing output schema. Remaining gaps are minor: what `path` accepts (local file vs URL) and whether timings are seconds or offsets.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the model parameter has no enum, so the description carries the load: it enumerates valid model values (tiny/base/small/medium/large-v3/turbo) with a size-versus-speed tradeoff, and explains model, language, initial_prompt, start and end. Only path is left undefined, and word_timestamps is only implied via the mention of per-word timings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Speech to text") plus the engine (Whisper) and an execution constraint (runs locally), so an agent immediately knows what this does and how it differs from audio_synthesize or audio_analyze. It also enumerates the outputs it produces, removing any ambiguity about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives per-parameter usage hints ("Use start/end to transcribe part of a long recording", "language: ISO code like \"en\" to skip detection") which is genuine decision guidance at the argument level. However, it never says when to pick this tool over siblings such as audio_batch_process for multi-file work or audio_analyze, so tool-level selection is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audio_viewA
Read-only

Render a picture of the sound. kind: 'both' (waveform above spectrogram), 'waveform' or 'spectrogram'. Spectrogram: time left to right, frequency bottom to top, brighter = louder. Horizontal lines are pitched tones/harmonics, vertical stripes are clicks/transients, diffuse haze is noise. Red dashed lines on the waveform mark 0 dBFS (clipping). Zoom with start/end; pitch_overlay draws the detected f0 in cyan. save_to optionally also writes the PNG to disk.

NameRequiredDescriptionDefault
endNo
kindNoboth
pathYes
startNo
save_toNo
max_freqNo
freq_scaleNolog
pitch_overlayNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real behavioral value beyond that: the on-canvas semantics (horizontal lines = harmonics, vertical stripes = transients, haze = noise), the red 0 dBFS clipping markers, and the fact that save_to writes a PNG to disk. The disk write is the one detail an agent should reconcile with readOnlyHint, but it is a requested new artifact rather than a mutation of source data, so no contradiction is claimed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then kind options, then an interpretation legend. Nearly every sentence carries information an agent needs to read the rendered image or set parameters, though the spectrogram-reading tutorial is on the verbose side for a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Against 8 parameters with zero schema descriptions and no output schema, the description supplies the render semantics, the interpretation legend, and most parameter behavior, so an agent can invoke it correctly and understand the returned image. The unexplained max_freq/freq_scale/path params are the only meaningful omission, and they have usable defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the whole burden and does substantial work: it enumerates the kind values, explains start/end as zoom bounds, defines pitch_overlay, and notes save_to's side effect. Gaps remain for max_freq, freq_scale (default 'log') and path, which are completely undocumented in both the schema and the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause states a specific verb and resource: render a picture of the sound, then enumerates the three render kinds ('both', 'waveform', 'spectrogram'). This clearly separates it in spirit from data-oriented siblings like audio_analyze, audio_melody or audio_transcribe, but no sibling is named, so routing is inferred rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage mechanics are covered well ('Zoom with start/end', 'pitch_overlay draws the detected f0 in cyan', 'save_to optionally also writes the PNG to disk'), which tells the agent how to shape the output. However there is no guidance on when to choose audio_view over audio_analyze, audio_info or audio_events, and no stated prerequisites (file must exist locally, supported formats).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.4.0
    • First observedaudio_analyze
    • First observedaudio_batch_process
    • First observedaudio_batch_survey
    • First observedaudio_check_delivery
    • First observedaudio_check_game_project
    • First observedaudio_compare
    • First observedaudio_events
    • First observedaudio_info
    • First observedaudio_melody
    • First observedaudio_process
    • First observedaudio_synthesize
    • First observedaudio_timeline
    • First observedaudio_transcribe
    • First observedaudio_view

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes: metadata, visualization, speech transcription, processing, batch processing, synthesis, comparison, and QA. However, audio_timeline, audio_analyze, and audio_events overlap in time-varying analysis, and audio_batch_survey vs audio_check_game_project both audit folders. Descriptions clarify boundaries well, so only minor ambiguity remains.

Naming Consistency5/5

All 14 tools follow a consistent snake_case convention with an audio_ prefix and clear noun/verb descriptors. There is no mixing of camelCase, casing, or prefix styles. The pattern is predictable throughout.

Tool Count5/5

14 tools are well-scoped for a broad audio analysis, processing, synthesis, and QA server. The set covers distinct workflows without excessive redundancy. Each tool appears to earn its place.

Completeness4/5

The surface covers inspection, analysis, processing, batch operations, synthesis, transcription, comparison, and delivery/game-project QA, forming a strong lifecycle. Minor gaps remain, such as exporting to compressed formats (MP3/OGG/FLAC) and editing metadata tags. Core workflows are still well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables chat-driven audio analysis and enhancement using local Claude, including denoising, EQ, compression, and loudness normalization, with an A/B viewer for synchronized comparison.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform comprehensive audio processing—stem separation, analysis, transcription, restoration, speech processing, and generation—through a unified self-hosted API with asynchronous jobs and webhooks.
    5
    Do What The F*ck You Want To Public