waveform-MCP
Waveform MCP
Un servidor MCP que otorga a un agente LLM control sobre Tracktion Waveform. Pídele a Claude que escriba una canción, equilibre una mezcla o renderice a MP3, y observa cómo Waveform lo hace.
Un instrumental synthwave de 64 compases compuesto mediante llamadas a herramientas MCP: batería, bajo, dos pads, contracanto, arpegio, melodía principal. Marcadores de sección, automatización de tempo, sidechain pump, reverb de placa, fundidos a nivel de clip, cadena maestra completa.
Qué te ofrece esto
107 herramientas MCP que abarcan el ciclo de vida de la edición, pistas, MIDI, clips de audio, plugins, automatización, teoría musical, equilibrio de mezcla, renderizado, biblioteca de bucles, descubrimiento de VST, captura de esquemas y control de la interfaz de usuario de Waveform
Dos compositores integrales —
compose_lofi_trackycompose_synthwave_track— que escriben canciones completamente arregladas, mezcladas y renderizadasUn compositor ambiental —
compose_rainstorm— para paisajes sonoros de lluvia + viento + truenosUna capa de conocimiento de teoría musical — escalas, progresiones de acordes, cadencias, formas de canción, reglas de conducción de voces, niveles de referencia de equilibrio de mezcla por género
Verificación de ida y vuelta entre el modelo en memoria y el XML
.tracktioneditde WaveformFundidos a nivel de clip, ganancia, desplazamiento, curvas de automatización — primitivas probadas que el LLM puede usar para iterar musicalmente
Bucle de flujo de trabajo fiable —
compose → write → reload via File → Revert to saved → listen → tweak
Related MCP server: ableton-mind
Estado
Funciona de principio a fin en Windows + Waveform 13. Existen rutas para macOS / Linux para el descubrimiento de contenido (presets, biblioteca de bucles, lista de VST), pero el control de la interfaz de usuario es solo para Windows mediante UIA / pywinauto por ahora.
Construido y probado a través de unas 30 horas de iteración humano-en-el-bucle con Claude. Ambos compositores han sido renderizados a MP3 varias veces y el usuario ha dado el visto bueno a las pistas resultantes.
Inicio rápido
Instalación
cd "C:\path\to\waveform MCP"
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e .Conectar a Claude (Code, Desktop o cualquier cliente MCP)
~/.claude.json o la configuración MCP de tu cliente:
{
"mcpServers": {
"waveform": {
"command": "waveform-mcp"
}
}
}Pruébalo
Open Waveform, then ask Claude:
"Use compose_synthwave_track to make a synthwave song,
save it to my Documents/Waveform folder, and reload it
in Waveform so I can hear it."El LLM llama a compose_synthwave_track → waveform_revert_to_saved y tú presionas play. Luego itera: "baja el volumen del bajo" → el LLM actualiza MIX_BALANCE["synthwave"]["bass"] y recarga.
Arquitectura
Cuatro capas, cada una con un contrato claro:
┌──────────────────────────────────────────────────────────────┐
│ LLM (Claude / any MCP client) │
└────────────────────────────┬─────────────────────────────────┘
│ MCP stdio
┌────────────────────────────▼─────────────────────────────────┐
│ MCP server (server.py) — 107 tools │
└────────────────────────────┬─────────────────────────────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────┐ ┌──────────────┐
│ Edit model │ │ Knowledge│ │ Waveform │
│ (in-memory) │ │ (data) │ │ UI control │
├──────────────┤ ├──────────┤ ├──────────────┤
│ Tracks │ │ Scales │ │ pywinauto + │
│ Clips │ │ Chords │ │ UIA + ffmpeg │
│ Notes │ │ Forms │ │ │
│ Plugins │ │ Mix │ │ Menu invoke │
│ Automation │ │ Velocity │ │ Revert │
│ Markers │ │ Rhythm │ │ Render→MP3 │
└──────┬───────┘ └──────────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────────┐ ┌────────────────────┐
│ xml_writer.py │ │ Waveform 13 │
│ xml_reader.py │ ◀──────▶ │ (the running app) │
│ ↓ .tracktionedit │ └────────────────────┘
└──────────────────┘Decisión de diseño clave: El modelo no es un 1:1 del ValueTree de Tracktion; es la forma con la que el LLM quiere trabajar, proyectada sobre el XML al guardar y proyectada de vuelta al cargar. Esto hace que las herramientas sean simples (audio_clip_import(track_id, file_path, start_beats, length_beats, fade_in_beats, ...)) en lugar de obligar al LLM a pensar en los internos de JUCE.
Catálogo de herramientas
Ciclo de vida de la edición (edit.py)
edit_create · edit_open · edit_save · flush · edit_summary · edit_inspect · undo · narrate
Pistas + mezcla (tracks.py)
track_add · track_remove · mix_set · mix_apply_reference · send_add · marker_add · tempo_set · key_set
mix_apply_reference(track_id, genre, role) busca el objetivo en dB de una tabla de equilibrio de mezcla curada (MIX_BALANCE[genre][role]) — la referencia de "el bombo es el ancla, el bajo 5-6 dB por debajo" destilada en una función invocable.
MIDI (midi.py)
midi_clip_add · midi_notes_add · midi_notes_clear · midi_clip_quantize
Clips de audio (audio.py, clips.py)
audio_clip_import (con gain_db, fade_in_beats, fade_out_beats, offset_in_source_beats)
clip_list · clip_set · clip_move · clip_resize · clip_duplicate · clip_remove
Plugins (plugins.py, preset_library.py)
plugin_list · plugin_add · plugin_set_param · plugin_remove
plugin_add_reverb (placa / natural / no lineal con valores predeterminados sensatos)
plugin_add_drum_kit (respaldado por Sampler, un SONIDO por pad)
plugin_add_modifier (LFO / envolvente / sidechain — esquema por definir en soporte completo de Waveform)
plugin_discover (analiza knownPluginList64.settings para listar los VST instalados)
waveform_preset_list · waveform_preset_read · waveform_plugin_types
Automatización (automation.py)
automation_add · automation_envelope · automation_clear · automation_list
Objetivos: pan y plugin/<plugin_id>/<param>. El objetivo de volumen está deshabilitado a nivel de API — el plugin de volumen de Waveform no respeta nuestro esquema <AUTOMATIONCURVE> y silencia la pista. Usa mix_set/mix_apply_reference para niveles estáticos y clip_set(fade_in_beats|fade_out_beats) para fundidos. (El MCP rechaza target="volume" con un error claro que apunta a alternativas.)
Conocimiento de teoría musical (music_theory.py, music_theory_data.py)
17 herramientas de consulta: theory_scale · theory_modes · theory_diatonic_chords · theory_chord_progression · theory_cadences · theory_song_form · theory_section · theory_genre · theory_arrangement_layers · theory_velocity · theory_rhythm · theory_voice_leading_rules · theory_heuristics · theory_surprise_devices · theory_borrowed_chords · theory_mix_balance · theory_search
Los datos detrás de esto:
13 escalas (modos mayores, menor armónica, pentatónica, blues, etc.)
Más de 25 progresiones de acordes (axis_pop, ii_V_I, andaluza, lament_bass, …)
Cadencias, formas de canción, secciones con perfiles de rol/densidad/dinámica
14 géneros con BPM típico, tendencias de tonalidad, instrumentos, progresiones distintivas
Mapas de velocidad / ritmo (ratios de swing, golpes de acento, rangos de notas fantasma)
13 heurísticas de composición (regla de 3, contraste requerido, cuota de sorpresa, …)
7 dispositivos de sorpresa (modulación truck-driver, cadencia engañosa, …)
Tabla de referencia de equilibrio de mezcla — 7 géneros × 14 roles, totalmente anotada
Compositores (composer.py)
compose_lofi_track— lofi de 32 compases con batería, bajo, teclas, pad, melodía, contracanto; envolventes de velocidad conscientes de la sección; automatización de tempo; cadena maestra loficompose_synthwave_track— synthwave de 64 compases con 7 pistas; forma de 9 secciones (intro/verso/estribillo/verso/estribillo/puente/buildup/estribilloFinal/outro); sensaciones de bajo por sección (medio tiempo / 8th-pump / walking); temas de arpegio por sección; filtro tipo sidechain; marcadores de sección; fundidos de clipcompose_rainstorm— paisaje sonoro ambiental con lluvia + viento + truenos distantes pasados por filtro paso bajo; aleatorización de ganancia por clip; ajuste de desplazamiento; FX de pista
Renderizado (render.py, waveform_workflows.py)
waveform_render_export · waveform_render_to_mp3 (usa ffmpeg + libmp3lame incluidos)
Control de la interfaz de usuario de Waveform (waveform_workflows.py)
waveform_new_project · waveform_save · waveform_revert_to_saved (el desbloqueador del bucle de iteración) · waveform_close_active_tab · waveform_active_tab · waveform_project_loaded · waveform_menu_invoke · waveform_add_track · waveform_select_track · waveform_insert_clip_on_track · waveform_build_skeleton
Ciclo de vida de la aplicación (waveform_app.py)
waveform_locate · waveform_status · waveform_launch · waveform_focus · waveform_quit · waveform_settings_dir
Biblioteca de bucles (loops.py)
loop_search (por tempo / compases / nombre) · loop_drop (longitud automática, ajuste al tempo)
Captura de esquemas (schema_capture.py)
schema_snapshot_current_edit · schema_diff_snapshots · schema_list_snapshots
Interfaz de usuario / escritorio de bajo nivel (win_input.py, desktop.py)
18 primitivas para gestión de ventanas, inspección UIA, envío de teclas/clics, capturas de pantalla.
Diseño
waveform-mcp/
├── src/waveform_mcp/
│ ├── server.py MCP server entry (stdio)
│ ├── model.py Edit / Track / Clip / Note / AutomationLane dataclasses
│ ├── xml_writer.py Edit → .tracktionedit
│ ├── xml_reader.py .tracktionedit → Edit
│ ├── audio_convert.py ffmpeg-backed MP3→WAV cache for Sampler sources
│ ├── music_theory_data.py SCALES, PROGRESSIONS, GENRES, MIX_BALANCE, ...
│ ├── events.py event bus + JSONL log
│ ├── diff.py Edit-diff for change events
│ ├── tools/
│ │ ├── edit.py Edit lifecycle
│ │ ├── tracks.py Tracks + mix balance
│ │ ├── midi.py MIDI clips/notes
│ │ ├── audio.py Audio clip import
│ │ ├── clips.py Clip mutators (move, resize, duplicate, set)
│ │ ├── plugins.py Plugin add + reverb / drum kit / modifier helpers
│ │ ├── automation.py Automation lanes (pan + plugin params)
│ │ ├── preset_library.py Factory preset browser
│ │ ├── loops.py Loop library search + drop
│ │ ├── render.py Render stubs
│ │ ├── waveform_app.py App lifecycle
│ │ ├── waveform_workflows.py UI workflows (revert, render-to-mp3, etc.)
│ │ ├── desktop.py Generic desktop primitives
│ │ ├── win_input.py Windows UIA + keystroke primitives
│ │ ├── schema_capture.py Hand-fixture capture for schema reverse-engineering
│ │ ├── music_theory.py Theory query tools
│ │ ├── composer.py compose_lofi_track, compose_synthwave_track, compose_rainstorm
│ │ └── common.py @op decorator (apply + diff + event)
│ └── preview/
│ ├── app.py FastAPI + websocket
│ └── static/ HTML / JS piano-roll
├── tests/
├── docs/
│ ├── img/synthwave_arrangement.png
│ ├── ARCHITECTURE.md
│ ├── EVENT_SCHEMA.md
│ └── EDIT_MODEL.md
├── pyproject.toml
└── README.mdEl bucle de iteración que realmente funciona
Después de muchos comienzos en falso, aquí está el bucle que permite al LLM y al usuario colaborar en una pista sin reiniciar Waveform en cada ciclo:
1. Compose / mutate → composer.compose_* or clip_set / mix_apply_reference
2. Save to disk → edit_save / flush (writes .tracktionedit)
3. Reload in Waveform → waveform_revert_to_saved
(File → Revert to saved state, auto-confirms popup)
4. User listens → "turn the arp up"
5. Update MIX_BALANCE or run a clip mutator
6. → goto 2El movimiento clave fue descubrir el elemento de menú File → Revert to saved state de Waveform: obliga a la edición abierta a recargarse desde el disco, lo cual es lo que hace visible la mutación externa sin cerrar/reabrir el proyecto. waveform_revert_to_saved automatiza esa ruta con reintento.
Referencia de equilibrio de mezcla
mix_apply_reference lee de una tabla curada de "el bombo es el ancla; el bajo 5-6 dB por debajo; la melodía similar al bajo; pad/arp 6-9 dB por debajo de la melodía; ambiente lo más profundo" — destilada a través de tutoriales de género, blogs de masterización e iteraciones ajustadas de oído:
MIX_BALANCE["synthwave"] = {
"drums": -7, "kick": -6, "snare": -10, "hat": -16,
"bass": -25, "sub_bass": -28, # background-level texture
"lead": -15, "pad": -19, "arp": -8, # arp-driven mix
"counter": -14, ...
}Los compositores llaman a tracks.mix_apply_reference({track_id, genre, role}) una vez por pista. Ajusta la tabla una vez, y cada compositor se reequilibra.
Fuentes que informan la tabla:
Limitaciones conocidas
AUTOMATIONCURVEde volumen de pista está deshabilitado. El plugin devolumede Waveform no respeta nuestro esquema de curva y silencia la pista afectada. El MCP rechaza el objetivo con un error claro y apunta a alternativas funcionales (fundidos de clip, múltiples clips con ganancia por clip,mix_setestático).La matriz de modificadores de plugin es exploratoria.
plugin_add_modifierescribe una forma de matriz de modulación genérica; necesita un fixture editado a mano para confirmar el esquema por plugin antes de que la modulación LFO funcione de manera fiable para 4OSC y similares.Renderizado sin interfaz (headless) aún no construido.
waveform_render_to_mp3controla la exportación de la interfaz de usuario de Waveform — funciona, pero requiere que Waveform esté ejecutándose. Un ayudante en C++ que enlacetracktion_enginees la solución definitiva.Control de interfaz de usuario en Linux/macOS ausente. El descubrimiento de contenido (presets, biblioteca de bucles, lista de VST) es consciente del SO; la automatización de la interfaz de usuario es solo para Windows.
Bloques de construcción para próximas iteraciones
Capturar un fixture real de Waveform para
<AUTOMATIONCURVE paramID="volume">para que la automatización de volumen pueda ser reactivadaAyudante de renderizado sin interfaz en C++ sobre
tracktion_engineFixture real para Drum Sampler / Micro Drum Sampler (actualmente vuelve al Sampler simple)
Captura de modificador de sidechain
Soporte para Clip Launcher (v13)
Control de interfaz de usuario en Linux mediante
xdotool/wmctrluna vez que UIA ya no sea la única ruta
Licencia
GPL-3.0-or-later (coincide con tracktion_engine si/cuando el ayudante de renderizado en C++ enlace con él).
Available Tools
129 toolsarp_patternB
Generate an arpeggio over a chord. Returns notes for the given length. direction ∈ {up, down, up_down, down_up, random, octave_alternate}. rate ∈ {quarter, eighth, sixteenth, triplet}. octaves controls how many octaves the cycle spans.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | sixteenth | |
| octaves | No | ||
| direction | No | up | |
| start_beats | No | ||
| length_beats | Yes | ||
| chord_pitches | Yes | ||
| velocity_base | No | ||
| accent_downbeats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to supplement the description. The description states it 'returns notes' but does not disclose whether the operation is purely computational, whether it writes to the DAW, or whether there is any randomness or determinism. Side effects and state changes are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with no redundant words or unnecessary details. Every sentence contributes either the core purpose or a parameter clarification, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the output format beyond 'returns notes', nor does it cover error handling, parameter interdependencies, or integration with the host project. Given the absence of an output schema and annotations, the description leaves several important gaps for an agent invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains some parameters (direction, rate, octaves) and gives their enum values, but it omits several others from the schema, such as chord_pitches, length_beats, start_beats, velocity_base, and accent_downbeats. The schema itself lacks descriptions, so the tool description is the only source, and it is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Generate an arpeggio over a chord' and specifies what it returns ('notes for the given length'). This is a specific, actionable verb-object pair that distinguishes it from other generation tools like melody_generate or bassline_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention conditions, use cases, or limitations. It only explains what the tool does, not when it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrangement_planA
Produce a section list for a song. genre selects characteristic form; target_length_seconds + tempo set total bars; energy_curve shapes the intensity pattern. Returns sections with bar counts, roles, and an energy 0..1 the composer can use to gate layers / set velocities.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| tempo | Yes | ||
| energy_curve | No | slow_burn | |
| include_bridge | No | ||
| include_buildup | No | ||
| target_length_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool 'returns sections with bar counts, roles, and an energy 0..1', indicating a non-destructive, informational output. There are no annotations to supplement, so this disclosure is helpful, though it does not explicitly say whether the project is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, well-structured with semicolon-separated parameter explanations and a clear output summary. No redundant or ambiguous wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context to know what input is needed and what output is expected. It does not mention output schema or relationship to composition tools, but for a self-contained planning utility it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to four of six parameters (genre, target_length_seconds, tempo, energy_curve) by explaining their roles in the output. The two remaining booleans (include_bridge, include_buildup) are not mentioned, but their names and defaults make their semantics self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and object: 'Produce a section list for a song.' It further explains how three key parameters (genre, target_length_seconds, tempo, energy_curve) influence the output, making the tool's distinct purpose unambiguous among many composition and theory siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear functional usage by explaining how each main parameter affects the result (genre selects form, tempo+length set bars, energy_curve shapes intensity). It does not explicitly name alternative tools or state when not to use it, but the intended scenario of generating an arrangement plan 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_clip_importA
Place an audio file as a clip on a track. warp_mode controls time-stretch behavior. Optional clip-level gain (dB), fade in/out (beats), and offset_in_source (beats — skip the first N beats of the source file, useful for trimming silent intros).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| gain_db | No | ||
| track_id | Yes | ||
| file_path | Yes | ||
| warp_mode | No | none | |
| start_beats | Yes | ||
| length_beats | Yes | ||
| fade_in_beats | No | ||
| fade_out_beats | No | ||
| offset_in_source_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose side effects such as whether an existing clip is replaced, whether file validation occurs, or any other potential mutation beyond adding a clip.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point, using two sentences to convey the core action and optional parameters without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward import operation, the description provides sufficient context for the main parameters and an example use case. It lacks return type or error behavior, but these are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Explains warp_mode, gain_db, fades, and offset, but leaves start_beats, length_beats, and name unexplained. With 10 parameters and no schema descriptions, partial coverage limits an agent's ability to use all parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the primary function with a specific verb ('Place') and object ('an audio file as a clip on a track'), distinguishing it from other clip-related tools like midi_clip_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case for the offset_in_source_beats parameter (trimming silent intros), but does not explicitly state when to prefer this tool over alternatives or mention prerequisites like track existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_compareA
Compare two audio files: returns LUFS / peak / DR diffs and a per-band spectrum diff in dB. Positive numbers mean file_a is louder/brighter than file_b in that dimension.
| Name | Required | Description | Default |
|---|---|---|---|
| bands | No | ||
| file_a | Yes | ||
| file_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently explains the output semantics (diffs and sign meaning), and the compare operation is inherently non-destructive. It does not explicitly state side-effect-free behavior, but the nature of the operation makes that clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using a single sentence to convey purpose, metrics, and sign convention without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, output metrics, sign convention, and the core operation. It omits parameter-level detail (especially bands) and does not specify output format, but for a simple comparison tool, it is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
file_a and file_b are inferable as the two audio files, but the 'bands' parameter is not explained (only defaulted to 10). The schema provides types and required status but no descriptive detail, so parameter meanings are incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: compare two audio files, and it specifies the exact metrics returned (LUFS, peak, DR, per-band spectrum diff) and the sign convention (positive means file_a louder/brighter). This distinguishes it from single-file analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when comparing two audio files, but it does not explicitly name alternative tools or state when to choose this over single-file analyzers like audio_loudness_lufs or audio_spectrum. Guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_detect_keyA
Detect the musical key of an audio file. Returns root note + mode (major/minor) with confidence 0..1. Uses chromagram + Krumhansl-Schmuckler key profiles. Reliable on tonal pop/jazz; less reliable on percussion-heavy or atonal material.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not mention any side effects, read-only nature, or potential modifications to the audio file. Since there are no annotations to supplement this, the description carries the burden and is somewhat lacking in explicit behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences to convey purpose, output, method, and reliability. There is no unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple analysis tool, the description covers the key aspects: what it detects, what it returns, the underlying method, and limitations. It does not mention edge cases or error handling, but for this scope it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines file_path as a string. The description adds that it is an audio file, which is useful but minimal. It does not elaborate on format, accessibility, or other constraints, so it adds limited meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the function (detect musical key) and the specific output (root note + mode with confidence). The verb 'detect' is specific and the resource is an audio file, distinguishing it from tempo detection or other analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit usage guidance by noting reliability on tonal pop/jazz and limitations on percussion-heavy or atonal material. This helps the agent decide when this tool is appropriate, though it does not explicitly name alternative tools for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_detect_tempoA
Detect the BPM of an audio file via onset autocorrelation. bpm_range bounds the search (default 60..180). Returns a single BPM with confidence 0..1. Works well on EDM/pop loops with a kick on every beat; less reliable on free-tempo or sparse music.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm_max | No | ||
| bpm_min | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It discloses the output format (single BPM with confidence 0..1) and the reliability across music styles, which is valuable. It doesn't state side effects or permission needs, but for a read-only detection operation this is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The purpose, algorithm, parameters, output, and limitations are all covered efficiently, with the most critical information (what it does) front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple detection tool, the description covers the essential aspects: what it returns, how parameters behave, and when it works well. It lacks explicit error-handling or file-format details, but these are not critical for a straightforward BPM detection task. The output schema is absent, so the return description is essential and provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It clarifies bpm_min and bpm_max as a search range with defaults, and identifies file_path as the audio file. While it doesn't specify path formatting or error cases, it adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (detect BPM) on a resource (audio file) and the method (onset autocorrelation). This clearly distinguishes it from siblings like audio_detect_key (key detection) and audio_compare (audio comparison), leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit conditions for good performance (EDM/pop with steady kicks) and limitations (free-tempo or sparse music), helping the agent decide when this tool is appropriate. It doesn't explicitly name alternative tools for other scenarios, but the context is sufficient for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_loudness_lufsA
Measure integrated LUFS, true peak (dBTP), and dynamic range (LRA) for an audio file using ffmpeg's loudnorm filter. Reference targets: Spotify -14 LUFS, Apple -16, broadcast -23. True peak should stay under -1.0 dBTP.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of behavioral disclosure. It reasonably indicates the operation is analytical via 'Measure' and reveals the ffmpeg/loudnorm implementation and a true-peak ceiling. It does not, however, state whether the file is modified, describe return shape, or mention any failure modes or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and output metrics, followed by useful reference targets. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only measurement tool with no output schema, the description covers the essential metrics and practical targets. It is still somewhat thin on return format, path expectations, and how this compares to related analysis tools, so an agent may need to guess at invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter, file_path, is described only by name and type. The description loosely ties it to 'an audio file' but does not specify path semantics, supported formats, or whether URLs/local paths are accepted, forcing the agent to infer these details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Measure'), a clear resource ('an audio file'), and the exact metrics returned (integrated LUFS, true peak/dBTP, dynamic range/LRA). It also names the underlying method (ffmpeg loudnorm filter), making it easy to distinguish from siblings like audio_detect_tempo or audio_spectrum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The reference targets (Spotify -14, Apple -16, broadcast -23) clearly imply usage in loudness assessment and streaming/broadcast preparation. However, it does not explicitly state when not to use it or mention any alternative tools for loudness or listening-station tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_spectrumA
Return RMS energy per frequency band. bands defaults to a 10-band log-spaced layout (sub, low, low-mid, mid, hi-mid, presence, brilliance, air). Useful for 'compared to my reference, this song is 4 dB heavier in the low-mid region.'
| Name | Required | Description | Default |
|---|---|---|---|
| bands | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the default band count and log-spaced layout, but doesn't specify output format, units, or whether the entire file is analyzed. The example mentions dB, which could create ambiguity against 'RMS energy' without clarification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core function, followed by a concrete use-case example. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers the main purpose and band defaults. However, with no output schema, the lack of explicit return-format or units is a gap, and the dB example introduces some ambiguity. It's mostly adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It explains the bands parameter's default value and layout, and file_path is self-explanatory. For a two-parameter tool, this is reasonable compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('RMS energy per frequency band'), clearly distinguishing it from sibling analysis tools like audio_detect_tempo or audio_compare. The example use case reinforces its spectral-analysis purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Useful for...' sentence gives a concrete scenario (comparing frequency balance to a reference), which clearly implies when to use this tool. It doesn't explicitly name alternatives or exclusions, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automation_addA
Add an automation lane to a track. target ∈ {'volume', 'pan', 'plugin//'}. points = [{beat, value, curve?}]. Replaces any existing lane on the same target.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| target | Yes | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses that adding a lane replaces any existing lane on the same target, which is a key side effect. With no annotations to carry this burden, this disclosure is valuable, though it does not mention failure modes or undo behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and free of extraneous content. Important constraints are packed into short, clear statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and the replace side effect but omits details such as return behavior, error conditions, and more precise parameter semantics. Given the lack of an output schema and annotations, this leaves some gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description defines the allowed target values and the points array structure, which partially compensates for zero schema coverage. However, track_id is not explained, and the semantics of beat, value, and curve are left implicit despite the schema also providing no descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add an automation lane to a track') and the exact scope of the target parameter, including the supported format for plugin parameters. It also notes the replace behavior, which distinguishes it from related automation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives such as automation_envelope or automation_clear. The description states what it does but not the conditions under which it is the preferred choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automation_clearA
Remove all automation lanes from a track, or just the lane on a given target.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Optional — if omitted, clears all lanes | |
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It states the removal action but does not disclose that this is destructive, whether it is undoable, or whether it affects anything beyond automation lanes. This is a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence conveys the full action and the optional scoping with no wasted words. The key behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive tool, the description covers the core behavior but omits details such as what values target accepts, return behavior, and safety notes. Since no annotations or output schema exist, some additional context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes target as optional and track_id as a bare string. The description adds meaning by explaining that target selects a single lane and omission clears all lanes, and that track_id refers to the containing track. This goes beyond the schema's minimal coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and resource ('automation lanes') and clearly distinguishes the scoped vs. full-clearing behavior. This differentiates it from siblings like automation_list or automation_add, which do different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever automation lanes need to be removed. However, it does not explicitly compare against alternatives or state when not to use it, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automation_envelopeA
Convenience: ramp a target from start_value to end_value between start_beat and end_beat. shape ∈ {'linear', 'exp_in', 'exp_out', 'sine'}. exp_in starts slow then speeds up; exp_out is the inverse; sine is a smooth S-curve. Appends to an existing lane on the same target if one exists, otherwise creates a new lane.
| Name | Required | Description | Default |
|---|---|---|---|
| shape | No | linear | |
| steps | No | Number of intermediate points to render the curve | |
| target | Yes | ||
| end_beat | Yes | ||
| track_id | Yes | ||
| end_value | Yes | ||
| start_beat | Yes | ||
| start_value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explains shape semantics (exp_in, exp_out, sine) and discloses the append-or-create lane behavior. It stops short of describing return values or effects on existing lane points, but the core mutation behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose first, shape definitions second, lane behavior third. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the core operation well but leaves gaps: it does not mention what the tool returns, when to prefer it over automation_add, or whether existing lane points are modified. This is adequate but not fully complete for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13%, but the description adds meaning to the key parameters: it explains what start_value, end_value, start_beat, end_beat, and target do in context, and details shape behavior beyond the enum. It does not elaborate on track_id, though steps already has a schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: ramping a target value between beats with configurable shapes. It is clear but does not explicitly distinguish itself from sibling tools like automation_add or automation_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case via 'Convenience' and the ramp behavior, and the append-versus-create rule offers context. However, it never names alternatives or states when not to use it, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automation_listA
List automation lanes on a track (or all tracks if track_id omitted).
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the default behavior (all tracks when track_id omitted) and implies read-only via 'List', but does not describe the returned data (e.g., lane names vs. IDs) or behavior for tracks with no automation. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb and resource and packs the key conditional (all tracks if omitted) with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers scope, but without an output schema it does not state what the returned list contains or how lanes are identified. An agent might still be unsure what fields/values to expect before invoking subsequent automation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides type 'string' with 0% description coverage, so the description must compensate. It does, by explaining that track_id targets a specific track and that omission means all tracks, fully covering the parameter's optionality and effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with resource 'automation lanes' and clarifies scope ('on a track or all tracks'). This clearly identifies the read-only listing operation and is readily distinguished from sibling tools like automation_add or automation_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear parameter guidance: track_id is optional and omitting it lists all tracks. However, it never states when to prefer this over related automation tools or mentions any exclusions, so the when-to-use context is only implied by the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aux_return_addA
Add an auxreturn plugin to a track so it receives audio from the given bus number (0..15). Pair with send_add(bus_num=N) on source tracks for parallel routing — e.g. drum tracks all send to bus 0, aux-return track applies a single reverb.
| Name | Required | Description | Default |
|---|---|---|---|
| bus_num | No | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the primary behavior—adding an aux return plugin and receiving audio from the specified bus—but does not mention potential side effects like overwriting existing plugins or error handling when the track doesn't exist. Given no annotations, this is moderately transparent but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, free of fluff, and logically structured: it states the action, explains the purpose, and provides a practical example. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool that adds an aux return, the description gives sufficient context for an agent to understand when and how to use it, including a typical workflow with send_add. No output schema is needed, and the provided information is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The bus_num parameter is explained with a range (0..15) and its role in routing, while track_id is implicitly clear as the target track. The schema defines constraints, and the description adds semantic meaning beyond the raw values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Add an auxreturn plugin to a track' and specifies the purpose 'so it receives audio from the given bus number'. It also differentiates from send_add by pairing, making the tool's intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on pairing with send_add and gives a concrete example for parallel routing (drum tracks send to bus 0, aux-return applies reverb), making it clear when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bassline_generateB
Generate a bassline under a chord progression. feel ∈ {pump, walking, half_time, sub, octave_jumps, dub}. Each chord lasts chord_duration_beats. Roots are the chord-root MIDI pitches (typically octave 2-3).
| Name | Required | Description | Default |
|---|---|---|---|
| feel | No | pump | |
| roots | Yes | Bass roots, one per chord | |
| start_beats | No | ||
| scale_intervals | No | Scale degrees in semitones from root, used by 'walking' feel | |
| chord_duration_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no statement of side effects, output, or whether the generated bassline is added to a track, returned as data, or rendered. An agent cannot tell what will happen after the call beyond the implied generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences; purpose is front-loaded and every sentence adds parametric or scope-relevant meaning. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple enough that the prose may suffice for generation, but missing output/return semantics and workflow context leaves ambiguity about how it integrates with the DAW session. No annotation coverage to fill those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Provides useful extra meaning for roots, feel, scale_intervals, and chord_duration_beats, but start_beats is left undocumented and requiredness of roots/chord_duration is not highlighted. Since schema coverage is only 40%, the description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what the tool does in the first sentence — 'Generate a bassline under a chord progression' — and distinguishes it from melodic/drum/arrangement siblings. The subject and object are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over sibling generation tools (e.g., melody_generate, drum_pattern) or how it fits into a composition workflow. The description explains individual parameters but not use conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bus_createC
Create a submix / aux track other tracks can route to. kind ∈ {submix, folder}.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | submix | |
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and allowed kind values, but does not disclose side effects, requirements (e.g., an open project), differences between submix and folder behavior, or reversibility. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently states the core purpose and is front-loaded with the primary action. It contains no filler or redundancy. However, it may be too brief, but it is well-structured and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description is minimal. It does not explain the semantics of the two kinds, how the bus/folder behaves, or any prerequisites. An agent would need to infer or guess about the behavior of kind=folder, making the description incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must explain both parameters. It mentions the kind enum but does not explain what submix versus folder means. The required name parameter is not described at all. The description adds minimal semantic value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and a resource ('submix / aux track') with a clear purpose ('other tracks can route to'). It also mentions the kind enum, which distinguishes it from generic track creation tools like track_add. This clearly identifies the tool's function and differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as track_add, aux_return_add, or bus_route. The description does not mention when not to use it, prerequisites, or how it differs from similar track-creation tools. This leaves the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bus_routeA
Route a track's output to a bus instead of master. Stack drums onto a 'Drum Bus' for one comp/EQ.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_bus_id | Yes | ||
| src_track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description must carry side-effect information. It states the routing change but doesn't mention whether it overrides existing sends, requires an existing bus, or is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the main action first, followed by a concrete example. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough for a basic understanding but omits important context such as whether the bus must already exist, side effects on existing routing, and error behavior. Sibling tools like bus_create are not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter names are somewhat intuitive but neither schema nor description explains expected ID formats, existence requirements, or relationships. Since schema coverage is 0%, description should compensate but doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: route a track's output to a bus instead of master. The example with Drum Bus reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an example use case (stacking drums) but does not explicitly state when to use versus alternatives like bus_create or send_add, nor mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_duplicateA
Clone a clip onto the same track at start_beats + offset_beats. Returns the new clip_id. Notes are deep-copied for MIDI clips.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes | ||
| offset_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden and does well by noting it returns the new clip_id and deeply copies MIDI notes. It does not disclose potential side effects like overwriting or validation errors, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences cover the operation, result, and a key detail (deep-copy) without any fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough information for an agent to call the tool correctly: what it does, what it takes, and what it returns. No missing essential details are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions, but the text explains clip_id as the clip to clone and offset_beats as the delta from the original start. Both parameters are given meaningful context beyond their raw types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Clone' and the resource 'clip', specifies it operates on the same track, and gives positional detail (start_beats + offset_beats). It is distinct from sibling tools like clip_move or clip_remove by implying a copy is created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention alternatives or when to prefer this over other clip operations. It is self-explanatory for its own action, but lacks explicit comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_listA
List clips on a track (or all tracks). Returns id, kind, name, start, length, plus per-clip gain/fade/offset for audio clips.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | No | Optional — if omitted, lists clips across all tracks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return structure (id, kind, name, start, length, plus per-clip details) and implies non-mutating behavior by saying 'List'. It doesn't explicitly state side effects, but for a list operation, that's sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action, then provides essential return details. No unnecessary words or repetition; it's efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description fully covers what the tool does and what it returns. An agent can call it correctly without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a full description for track_id, including optional behavior and default action. The tool description adds no new information beyond what the schema states, so it meets the baseline for high schema coverage without enhancing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'clips' with clear scope ('on a track (or all tracks)') and enumerates return fields. It distinguishes itself from sibling mutation tools like clip_set, clip_remove, and clip_duplicate, which perform different actions on clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear as a read-only enumeration, and no explicit alternative is needed since it's the only clip-listing tool among siblings. However, it doesn't explicitly state when to use it vs. other clip tools or mention exclusions, so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_moveA
Shorthand: change a clip's start_beats. Length unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes | ||
| new_start_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose one important behavioral invariant: the clip's length is preserved. It does not state whether the move is reversible, how it affects snap/arrangement context, or what happens if new_start_beats is out of range, but the provided invariant is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the invariant. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is thin: it omits return/error behavior and does not clarify when to choose clip_move over clip_set or clip_resize. The core operation is clear, but the surrounding context an agent needs for reliable selection and invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description needed to compensate, but it only reuses the schema's own term 'start_beats'. It does not define what unit beats are in, whether fractional or negative values are allowed, or how clip_id is resolved. 'Length unchanged' is a behavioral hint rather than parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair: 'change a clip's start_beats', and adds a key distinction with 'Length unchanged', which separates it from clip_resize and clip_set. Even the 'Shorthand' prefix signals it is a focused convenience operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Shorthand' implies this is a shortcut for a common operation, and 'Length unchanged' suggests when the user wants to reposition without altering duration. However, it never names alternatives such as clip_set or clip_resize, nor gives explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_removeB
Delete a clip by id.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. 'Delete' makes the destructive nature clear, but it does not state whether deletion is permanent, whether it is undoable, or whether related automation/routing is affected. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. The core action and target are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool, the description is mostly adequate: it names the action and the required identifier. However, with no annotations and no output schema, it leaves out details about reversibility, side effects, and expected response, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It only restates that the operation is 'by id', adding little beyond the parameter name clip_id. It does not explain the expected format of the id or how to obtain it (e.g., via clip_list).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a clip by id' uses a specific verb (Delete), a clear resource (clip), and the identifying mechanism (by id). This distinguishes it from sibling tools like clip_duplicate, clip_move, and clip_resize without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use clip_remove versus alternatives such as track_remove, clip_duplicate, or clip_list. It does not mention prerequisites like obtaining a clip_id, nor does it explain what happens if the clip does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_resizeA
Change a clip's length. anchor='start' (default) keeps start_beats fixed and moves the right edge. anchor='end' keeps the right edge fixed and moves start_beats so total duration changes from the left.
| Name | Required | Description | Default |
|---|---|---|---|
| anchor | No | start | |
| clip_id | Yes | ||
| new_length_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does explain the non-obvious anchor semantics precisely: which edge stays fixed and which edge moves. However, it does not disclose whether resizing trims or stretches clip content, whether the operation is destructive or undoable, or any side effects on the clip's audio/MIDI data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core operation front-loaded and the anchor behavior explained densely. Every sentence earns its place; there is no fluff or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations and no output schema, it covers the required inputs and the key behavioral choice (anchor). But it omits important outcome details: what happens to the clip's content when resized, any constraints on new_length_beats, and whether the operation is reversible or returns confirmation. An agent can invoke it, but not fully predict the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It adds real semantic value for anchor, explaining what 'start' and 'end' actually do, and confirms length is in beats. But clip_id is only named, and new_length_beats has no stated constraints or detail about how the length change affects the clip's content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Change a clip's length.' It goes beyond the name by explaining the two anchor modes, which clearly distinguishes it from sibling clip operations like clip_set, clip_move, clip_duplicate, and clip_remove. Not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as clip_set, clip_move, or clip_remove. The intended use is implied by 'change a clip's length,' but there are no explicit conditions, exclusions, or alternative routing. The anchor explanation is parameter behavior, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_setB
Modify any field on an existing clip. Pass only fields you want changed. For AudioClip: name, start_beats, length_beats, gain_db, fade_in_beats, fade_out_beats, offset_in_source_beats, warp_mode. For MidiClip: name, start_beats, length_beats, gain_db.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| clip_id | Yes | ||
| gain_db | No | ||
| warp_mode | No | ||
| start_beats | No | ||
| length_beats | No | ||
| fade_in_beats | No | ||
| fade_out_beats | No | ||
| offset_in_source_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it only says 'Modify', which is minimal. It doesn't mention return values, side effects, whether it overwrites existing values, or any prerequisites like the clip existing. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the purpose and instruction come first, followed by per-type field lists. No filler or redundancy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description is incomplete. It clarifies per-type applicability but omits parameter meanings, return behavior, error conditions, and side effects. The agent would need to infer too much about how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds value by listing which fields apply to AudioClip vs MidiClip, which is essential. However, it doesn't explain the meaning of each parameter (e.g., what start_beats represents, units, ranges). The field names are self-explanatory to some degree, but detailed semantics are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Modify any field on an existing clip', a specific verb and resource. It lists the editable fields per clip type, distinguishing it from sibling tools like clip_move or clip_resize, though it doesn't explicitly name them. It's unambiguous about its core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Pass only fields you want changed' gives clear usage guidance, implying partial updates. It also separates AudioClip and MidiClip fields, helping the agent know which parameters are valid for each type. However, it doesn't explicitly say when NOT to use it or name alternatives like clip_move for repositioning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_and_reloadB
Dispatch one of jazz/synthwave/lofi generative composers AND revert in Waveform with one call. Avoids the compose-then-manually-revert dance during iteration.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| tempo | No | ||
| composer | Yes | ||
| key_mode | No | ||
| key_root | No | ||
| out_path | Yes | ||
| target_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It mentions 'revert in Waveform' but does not explain what exactly is reverted, the side effects on the project or files, whether it is destructive, any prerequisites (like Waveform being open), or the return value. 'Dispatch' is vague about the underlying action. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, with no wasted words. It front-loads the core action and then provides a practical benefit. It could be slightly more structured (e.g., listing parameters) but it is appropriately sized for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no annotations, and no output schema, the description is far from complete. It omits parameter semantics, behavioral details, return values, and error conditions. An agent would not know how to properly invoke this tool beyond the basic intent. The description only covers the 'why' but not the 'how'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate for all seven parameters. It does not mention any parameter except implicitly the composer (via the list), but provides no meaning for seed, tempo, key_mode, key_root, out_path, or target_seconds. The description adds no value to parameter understanding beyond the bare schema fields, which themselves have no descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: dispatch one of three named generative composers and revert in Waveform in a single call. It explicitly names the composer options (jazz/synthwave/lofi), which matches the schema enum, and contrasts with the separate compose tools among siblings by combining compose with revert. This distinguishes it from siblings like compose_lofi_generative or compose_jazz_generative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context: it is for iteration, specifically to avoid the 'compose-then-manually-revert dance.' This implies when to use it (during iterative workflows where a revert is needed) but does not explicitly state when not to use it or name the alternative tools. It provides a strong reason for selection but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_djent_realA
Djent track using REAL VST3 instruments + amp/cab simulators (sforzando + Karoryfer Emilyguitar SFZ → The Anvil drive → Mercuriall Metal Area amp → TSC cab) instead of synthetic 4OSC. Returns a manual_step_required note explaining you must load the SFZ in sforzando once after opening the project — sforzando state isn't preserved in our .tracktionedit writer yet.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| tempo | No | ||
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses a critical manual requirement (loading the SFZ in sforzando once), explains why (state not preserved in the .tracktionedit writer), and states that the tool returns a manual_step_required note. This is strong transparency for a compose tool, though it does not mention side effects or output file behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: both sentences earn their place, with the real-instrument distinction and signal chain front-loaded and the manual step explained immediately after. Slightly long due to the detailed chain, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and the essential manual caveat, but with no output schema and no annotations, it leaves the required out_path parameter unexplained and does not state what the tool ultimately writes or returns beyond the manual_step_required note. Adequate for a specialized compose tool, but incomplete for fully reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for the undocumented seed, tempo, and out_path parameters. It provides no parameter-level guidance at all, not even clarifying what out_path should point to. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Djent track using REAL VST3 instruments + amp/cab simulators') and explicitly contrasts with 'synthetic 4OSC', distinguishing it from the sibling compose_djent_track. The signal chain is concrete enough that an agent knows exactly what this tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'instead of synthetic 4OSC' phrase gives clear context for when to choose this tool over a synthetic composition path. It does not explicitly name sibling tools or provide when-not-to-use guidance, but the real-versus-synthetic distinction is an effective selection cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_djent_trackB
Generate a progressive metal / djent instrumental in B minor. Form: intro → riffA → riffB → breakdown → riffA2 → buildup → solo (8 bars) → riffFinal → outro. Tracks: drums (polyrhythmic 3-3-2 kicks), bass, dual rhythm guitars panned hard L/R for the wall, lead solo over solo section, atmospheric pad. ~140 seconds at 110 BPM.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| tempo | No | ||
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides some transparency about the musical output (form, tracks, tempo) but does not disclose side effects, such as whether it creates a new track, overwrites existing content, or renders to a file. The behavior beyond generating musical ideas remains implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys genre, key, form, track list, and tempo. It avoids fluff and presents information in a compact, readable manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of schema descriptions and annotations, the description is incomplete. It details the musical content but omits crucial operational context: parameter meanings, output format, destination (out_path), and any session impact. The agent cannot fully understand the tool's behavior from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the three parameters (seed, tempo, out_path). It mentions 110 BPM but does not link it to the tempo parameter. The purposes of seed and out_path are entirely unaddressed, leaving parameter semantics undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a progressive metal/djent instrumental in B minor, with a specific form and track list. It is distinct from sibling composition tools by specifying genre, key, form, and arrangement details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for djent composition but does not explicitly differentiate from alternatives like compose_djent_real or other genre-specific composers. No direct when-to-use vs. when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_from_primitivesB
Build a song bottom-up from composition primitives — the recipe demonstrating arrangement_plan + progression_generate + voice_lead + drum_pattern + bassline_generate + arp_pattern + melody_generate + motif_develop wired together. Genre selects drum patterns, bass feels, and mix-balance reference. energy_curve drives velocity scaling per section.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | natural_minor | |
| root | No | A | |
| seed | No | ||
| genre | No | synthwave | |
| tempo | No | ||
| out_path | Yes | ||
| energy_curve | No | slow_burn | |
| target_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does add useful behavior: genre selects drum patterns, bass feels, and mix-balance reference, and energy_curve drives velocity scaling. But it does not disclose side effects, whether the song is rendered/saved, or what happens in the DAW beyond composition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and no filler. The long primitive list is somewhat heavy but earns its place because it clarifies what the tool wires together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex 8-parameter composition tool with no annotations and no output schema, yet the description omits output/return behavior, out_path semantics, and any comparison to the many sibling compose tools. It provides a partial picture but leaves important operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It explains genre and energy_curve, but says nothing about the required out_path or the meaning of root, mode, seed, tempo, and target_seconds. Most parameters remain dependent on their names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action — building a song bottom-up from composition primitives — and identifies the exact primitives involved. This distinguishes it from both individual primitive generators and the higher-level compose_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a use case: when you want a song assembled from primitives rather than generated as a single higher-level action. However, it never explicitly says when to prefer this tool over compose_synthwave_generative, compose_variations, or the other compose siblings, and it offers no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_jazz_generativeA
Generate a jazz/jaunty track with authentic walking bass (7-pattern Paul Chambers vocabulary), Charleston-rhythm Rhodes comping, and Salamander Grand Piano lead treated like a vocal (call/response motifs, vocal range, dynamic phrasing). Drums comp for the soloist (ghost rim shots on piano off-beats, phrase-end fills, sparse ride on solo phrases). Section-wide ensemble dynamics and per-section bass feels (two-feel for heads, walking for blowing, anticipations into the bridge).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It richly explains what the tool will generate: bass feel changes, drum comping behavior, ensemble dynamics, and phrase-level details. However, it does not disclose project-level effects such as whether a new track is added or an existing composition is replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no filler, and every clause contributes meaningful musical direction. It is slightly run-on and could be broken into structured points for readability, but it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument generative tool, the description gives enough detail about output style, instrumentation, and arrangement for an agent to invoke it correctly. The only notable gap is that it does not state what happens to the current project state or what return/confirmation the agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics for the description to clarify. The detailed musical description effectively serves as the tool's configuration context, which is appropriate for a no-argument generative tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate'), names the resource ('jazz/jaunty track'), and gives concrete distinguishing details such as walking bass, Rhodes comping, and vocal-treated piano lead. This clearly separates it from sibling generative tools like compose_lofi_generative and compose_synthwave_generative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'jazz/jaunty' style label and the detailed musical vocabulary make the intended use case clear, and the description implies this tool is for jazz-style generation rather than other genres. It does not explicitly state when-not-to-use or name alternatives, 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.
compose_lofi_generativeA
Generate a UNIQUE lofi track on every call. Unlike the old compose_lofi_track which hardcoded everything, this one uses progression_generate, arrangement_plan, drum_pattern, melody_generate, and bassline_generate primitives. Each seed produces a meaningfully different song: different chords, section layout, drum density, melody contour, bass feel, and tempo (within lofi range).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that it generates unique tracks using sub-primitives and varying musical attributes. However, it does not state side effects or project-state impact, such as whether it adds tracks or replaces existing material.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the core action front-loaded and every clause adding relevant distinction or detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a good sense of what is generated and how it differs from the old tool. It lacks details about required preconditions, return value, or side effects, which is more impactful given there are no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, so the baseline is high, and the description adds useful meaning about output variability. The reference to 'each seed' is confusing because no seed parameter exists in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Generate') and resource ('lofi track'), and distinguishes itself from compose_lofi_track by emphasizing uniqueness and a generative approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly contrasts with the old hardcoded compose_lofi_track, implying use when a unique generated lofi arrangement is desired. It does not explicitly address genre-specific siblings like compose_synthwave_generative, though the genre distinction is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_lofi_trackB
Generate a complete lofi track .tracktionedit file: 4 tracks (drums, bass, keys, pad), Fmaj7-Am7-Dm7-Cmaj7 progression, real 808 drum samples, master FX bus. Bass / keys / pad presets are configurable so you can A/B sounds without editing the composer. Saves to the given path.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | Total bars (4 phrases × 4 bars) | |
| seed | No | Reproducible randomization seed for variation. | |
| tempo | No | BPM (76 = beach-lazy lofi) | |
| out_path | Yes | Where to write the .tracktionedit | |
| pad_preset | No | 4OSC Vox Pad WMF.trkpreset | |
| bass_preset | No | Filename inside Factory Presets/4OSC/ | 4OSC Smack Bass WMF.trkpreset |
| keys_preset | No | 4OSC E-Piano R WMF.trkpreset | |
| bass_octave_offset | No | Semitone offset for bass roots, in octaves. Most factory bass presets have tune1=-12 (octave-down detune), so playing at +1 octave (= MIDI roots in F3/A3/D3/C3) lands the actual sounding pitch in the proper bass register (F2-A2). Default 1 fixes the common sub-bass-mud issue. Use 0 for a deeper sub-bass. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It does reveal meaningful behavior: it writes a complete multi-track lofi arrangement, supports preset swapping for A/B testing, and saves to the given path. However, it does not disclose whether an existing file is overwritten, whether the current session is modified, or whether factory preset files must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The core artifact and musical details are front-loaded, and the configurable-preset note earns its place by foreshadowing the relevant parameters without repeating schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters), no annotations, and no output schema, the description is not complete enough. It omits overwrite behavior, session side effects, dependency on factory presets, and guidance on how to select this over sibling generators. An agent could invoke it, but blind spots remain around side effects and preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters and the baseline is 3. The description adds useful context that bass/keys/pad presets are configurable, but it does not explain bar count, seed, tempo, or preset filename semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Generate'), a concrete artifact ('.tracktionedit file'), and the musical structure (4 tracks, progression, 808 samples, master FX bus). It is easy to tell what the tool does, though it does not explicitly differentiate itself from sibling compose_lofi_generative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies it is for composing a full lofi track, but it does not help an agent choose between this and the many other compose_* siblings, nor does it state any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_rainstormA
Generate a rainstorm ambient .tracktionedit: continuous rain bed, tiled wind/breeze layer, occasional distant-muffled thunder rumbles (lowpass + EQ + low gain). 60 BPM (1 beat = 1 second). No music.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | RNG seed for thunder placement variation. | |
| out_path | Yes | ||
| length_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the generated audio content (rain bed, wind layer, thunder rumbles) and processing hints (lowpass, EQ, low gain), plus the 60 BPM grid. However, it does not explicitly state whether the tool writes a file, overwrites an existing file, or returns a status/result, and with no annotations the description carries the full transparency burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with a clear colon-separated list of sonic elements. Every phrase adds useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a good high-level sense of the tool and its output type, but it omits important context such as file-writing behavior, parameter semantics, and any return value. Since there is no output schema or annotations, this is not fully complete for an agent to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'seed' has a description), and the description does not compensate by clarifying 'out_path' or 'length_seconds'. The 60 BPM note and rain/wind/thunder details give sonic context but do not explain the meaning or interaction of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Generate'), a concrete output resource ('.tracktionedit'), and a distinct genre/sound ('rainstorm ambient'). It is clearly differentiated from the many sibling composition tools that target lofi, synthwave, jazz, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this is for rainstorm ambient sound generation, including the 'No music' note, which implicitly steers an agent away from the melodic composer siblings. It does not explicitly name alternatives or state when not to use it, so it stops just 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.
compose_synthwave_generativeA
Generate a UNIQUE synthwave track on every call. Drives progression_generate / arrangement_plan / drum_pattern / melody_generate primitives with seed-driven variation across tempo (100-128 BPM), key, form, chord progression, drum density, melody contour, and bass feel. Different seeds = meaningfully different songs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses that output is unique per call, lists the underlying primitives driven, names the varied musical dimensions, gives a tempo range, and explains seed-dependent variation. It does not state whether the call mutates the existing project or creates a new track, but nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-load the core action and uniqueness guarantee, then efficiently enumerate variation dimensions and the meaning of seeds. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless generative tool with no annotations and no output schema, the description provides enough context to understand what will happen: a unique synthwave track is generated with specified musical variability. It could add how the result is delivered or integrated into the project, but the core is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description has no parameter burden. It references seed-driven variation without exposing a seed parameter, which is slightly ambiguous, but there is no schema gap to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb-resource pair ('Generate a unique synthwave track') and identifies the genre and variation dimensions. It does not explicitly differentiate from the closely named sibling compose_synthwave_track, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of compose_synthwave_track, compose_lofi_generative, compose_jazz_generative, or compose_from_primitives. The reader must infer usage from the genre and 'unique' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_synthwave_trackC
Generate a 64-bar synthwave instrumental .tracktionedit at 110 BPM in A minor. Properly developed song form: intro → verseA → chorus → verseB (variation) → chorus2 (with counter) → bridge (new chord set + walking bass + descending arp) → chorusFinal (peak) → outro (progressive instrument drop with pad chord ring-out). Per-section chord progressions, bass feels (verse=half-time, chorus=8th pump, bridge=walking), and arp themes (verse / verseB syncopated / chorus pump / bridge descending). Showcases the full MCP toolset.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | RNG seed for variation reproducibility. | |
| tempo | No | ||
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It says 'Generate' but does not disclose whether the tool creates or overwrites files, modifies DAW state, renders audio, or returns a confirmation. Side effects and output behavior are left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and the musical structure is useful, but the description is somewhat redundant and ends with promotional fluff ('Showcases the full MCP toolset') that does not help an agent call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides rich musical context: key, BPM, bar count, section order, bass feels, and arp themes. However, it omits practical execution details such as out_path semantics, seed behavior, return value, and possible side effects, so it is not fully complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description adds little parameter detail. It mentions 110 BPM and the .tracktionedit output, but does not explain the required out_path parameter or the seed parameter for variation reproducibility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's core purpose: generating a 64-bar synthwave instrumental .tracktionedit at 110 BPM in A minor. It also specifies the full song form, which distinguishes it from other composition tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to choose this tool over alternatives such as compose_synthwave_generative or compose_lofi_track. The closing phrase 'Showcases the full MCP toolset' is not actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_variationsA
Run a composer N times with different seeds, saving each output to a numbered file. Returns the list of paths so you can render all and pick the best.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| extra_args | No | ||
| composer_name | Yes | ||
| out_path_prefix | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without any annotations, the description carries the burden of disclosing side effects. It transparently mentions that it saves outputs to numbered files and returns the list of paths, but it does not disclose whether it modifies the current project state, whether it overwrites existing files, or whether it has any destructive or non-destructive side effects. Partial transparency only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise, and information-dense. It states the core action, the output behavior, and the intended use case without any fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete given the complexity of the tool. It has four parameters including a nested object (extra_args), but no explanation of how extra_args modifies the composition, what format it expects, or how it interacts with count. It also leaves unclear whether the returned paths are absolute or relative, whether the operation is synchronous, and what happens if the composer fails. These gaps prevent an agent from using the tool confidently in nuanced contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero descriptions for the four parameters, so the description must compensate. However, it does not explain any parameter: it never mentions composer_name, out_path_prefix, count, or extra_args, nor how they map to the described behavior. The phrase 'N times' vaguely references count, but no direct parameter explanation is given. Since schema coverage is 0%, a score of 1 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (run a composer) and resource (composer with multiple seeds), and it distinguishes itself from siblings by emphasizing variation generation and selection, which no other sibling tool does. The phrase 'so you can render all and pick the best' further clarifies its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when the user wants multiple compositional variations to compare and choose the best. However, it does not explicitly mention when not to use it or name alternative tools (e.g., compose_lofi_track or compose_and_reload), so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_glueB
Gentle bus 'glue' compressor. amount 0..1 (0=barely-there, 1=noticeable).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it applies compression, which is a type of audio processing, but does not mention any side effects, such as whether it alters the audio destructively, or whether it affects other parameters. It also does not specify the behavior regarding the amount parameter beyond its range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, using a single sentence to convey the purpose and parameter semantics. It is well-structured with the parameter explanation parenthetically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple tool, but it lacks explicit information about the tool's return value or any additional effects on the project. Given the simplicity of the tool and the context from sibling tools, the description is mostly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The amount parameter is explained with its range and meaning, but the track_id parameter is not described. Since track_id is required and its purpose is inferred from the name, the description covers only half of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool is a gentle bus glue compressor, specifying the type and character of the effect. It differentiates from siblings like 'compress_smash' by using terms like 'gentle' and 'glue'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to choose this tool over alternatives, such as 'compress_smash'. However, the name and descriptor 'glue' imply a use case for bus compression to glue mix elements together, but this is not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_smashC
Aggressive parallel-style compressor for drum-bus / NY-style smash. No params — preset values.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the effect ('aggressive parallel-style compressor') but does not explain whether the operation is destructive, how it modifies the track, or what the result will be. Furthermore, the assertion 'No params — preset values' directly contradicts the input schema which includes a required track_id, undermining trust in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, but the misleading statement about parameters wastes the limited space. It front-loads the purpose but then introduces inaccuracy, making the overall structure counterproductive. A well-structured description would clarify the parameter requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and no output schema, the description should at least explain the track_id and the effect of the operation. It does neither, and the misleading 'no params' claim leaves the agent without necessary context to invoke the tool safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 by explaining the track_id parameter. It not only fails to explain it but actively claims there are no parameters, making the parameter completely opaque. This is a serious failure to add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an aggressive parallel-style compressor for drum-bus / NY-style smash, which is a specific use case. However, it does not differentiate from the sibling tool compress_glue, which likely serves a similar purpose, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for drum-bus/NY-style scenarios but provides no explicit guidance on when to choose this over compress_glue or other compressors. The claim 'No params — preset values' is misleading because the schema requires a track_id, leaving the agent uncertain about how to invoke the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_clickA
Click at screen coordinates. Use desktop_screenshot first to know what's where. button ∈ {left, right, middle}.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| button | No | left | |
| clicks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It states the click action and button choices but doesn't disclose side effects, coordinate system origin, or behavior of the clicks parameter. The screenshot-first advice adds useful context, but the tool's potentially destructive nature on a live desktop is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core action is front-loaded, followed by the key usage prerequisite and button options. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema and no annotations, the description is minimally sufficient but leaves gaps: coordinate system details, multi-click semantics, and safety caveats are absent. The screenshot-first instruction helps an agent avoid blind clicking, but the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that x and y are screen coordinates and lists the allowed button values. However, the clicks parameter is never mentioned, and the button enum is already fully defined in the schema. With 0% schema description coverage, this is only partial compensation for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Click') and resource ('screen coordinates'), clearly distinguishing this tool from siblings like desktop_move and desktop_key. The purpose is immediately understandable and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use desktop_screenshot first, providing an actionable precondition and workflow context. It doesn't name alternatives or exclusions, but for a low-level input primitive this is reasonable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_keyA
Press a single key or chord. Examples: 'enter', 'esc', 'ctrl+s', 'ctrl+shift+n', 'f5'. Sent to whatever window currently has focus.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| presses | No | ||
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that input is sent to the currently focused window, which is important for predicting side effects. It does not describe repeat behavior of presses/interval or potential focus sensitivity, but these are not safety-critical and are partially inferred from parameter names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with illustrative examples and no redundant or filler text. The structure is clean and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides essential context: what the tool does, example input, and focus behavior. It lacks explicit contrast with desktop_type/desktop_click and full parameter explanations, but is sufficient for straightforward invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies 'keys' with examples, but 'presses' and 'interval' are not explained at all. Schema provides no descriptions, so the agent must infer their meaning from names and defaults, leaving incomplete parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (press) and resource (single key or chord) with concrete examples. Clearly differentiates from sibling tools like desktop_type and desktop_click by focusing on keyboard shortcuts and key chords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Examples imply common use cases (keyboard shortcuts, navigation), but the description does not explicitly state when to prefer this over desktop_type for text input or desktop_click for mouse actions. Usage guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_moveA
Move the mouse to (x, y) without clicking.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| duration | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses the key non-effect ('without clicking') and the core action, but does not mention coordinate-space semantics, whether movement is absolute screen position, or that the optional duration controls the movement speed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Every word contributes to the core action and the key exclusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no annotations, no output schema, and 0% parameter description coverage, the definition leaves meaningful gaps: coordinate system/units and duration semantics are undocumented. An agent can probably call it, but not with full confidence about coordinate interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It names x and y, but adds no meaning about units, coordinate origin, bounds, or the duration parameter's units/behavior. The optional duration is entirely unexplained beyond the schema default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Move the mouse to (x, y)'. The qualifier 'without clicking' clearly differentiates it from sibling desktop_click and other desktop input tools, so an agent can identify the operation precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use clear by emphasizing no click is performed, which effectively routes the agent away from desktop_click. It does not explicitly name alternatives or give when-to-use conditions, but the context is sufficient for sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_screenshotA
Capture the current screen (or a region) to a PNG file under state/screenshots/. Returns the path. Use this to verify that a UI action had the expected effect before sending the next.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional filename hint | |
| region | No | Optional [x, y, width, height] crop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of transparency. It clearly mentions the side effect of writing a PNG file under state/screenshots/ and that it returns the path, which informs the agent about the persistent output and the return value. It does not describe potential overwriting behavior or naming conventions in detail, but the essential behavioral aspects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise—two sentences that fully communicate the tool's purpose, output, and usage context. Every word contributes meaning, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for an agent to decide when and why to use the tool, including the output location and the return value. It does not mention potential edge cases like screen resolution, multi-monitor setups, or file overwrite behavior, but these are not critical for typical usage in the given ecosystem. Overall, the description is complete for the intended purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for both parameters: 'name' is an optional filename hint, and 'region' is an optional [x, y, width, height] crop. The description does not add any additional semantics beyond what the schema states. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'capture' and the resource 'the current screen (or a region)', and explicitly mentions the output file location and that it returns the path. This unambiguously distinguishes it from other desktop_* tools like desktop_click or desktop_key which perform actions rather than capturing visual state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific and actionable when-to-use: 'to verify that a UI action had the expected effect before sending the next.' This gives clear guidance on when to invoke this tool. It does not explicitly state when not to use it or suggest alternatives, but the sibling list includes other tools like desktop_wait that might be relevant in similar contexts, so a slightly fuller comparison would have been ideal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_screen_sizeA
Return current screen resolution.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it returns screen resolution, without detailing the output format (e.g., pixels, width/height), whether it queries the OS or performs a side effect, or any potential cost. This is minimal disclosure for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no filler. It is appropriately sized for a zero-parameter query tool and is front-loaded with the action and result. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema), the description is largely complete. It tells the agent exactly what the return value is (screen resolution). However, it could be marginally improved by specifying the format or units (e.g., pixels), which would prevent ambiguity, but this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description does not need to explain parameter semantics since none exist. The schema coverage is vacuously 100%, and the description adds no unnecessary param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and a precise resource ('current screen resolution'). It is unambiguous and clearly distinguishes from sibling tools like desktop_screenshot, which capture images. An agent can immediately understand what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. While the purpose is self-evident for a simple query, there is no mention of scenarios or exclusions. For example, it doesn't clarify that this is the correct tool when the agent needs the display dimensions rather than a screenshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_typeC
Type a string of text into the focused window.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the literal action and does not mention how interval affects behavior, whether it simulates keyboard input, focus requirements beyond the obvious, or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient, though the brevity contributes to the lack of behavioral and parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too sparse. It covers the core action but omits interval semantics, input simulation behavior, and any guidance for distinguishing it from related desktop input tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter. 'text' is self-explanatory from its name, but 'interval' is ambiguous: its units, whether it is per keystroke, and its behavior are left entirely to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Type'), a clear resource ('a string of text'), and the target context ('the focused window'). This makes the tool's basic function clear, though it does not explicitly differentiate it from sibling desktop_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus desktop_key, desktop_click, or other desktop input tools. The only contextual hint is 'focused window,' which implies a prerequisite but no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_waitA
Sleep for seconds seconds. Use sparingly; prefer screenshot-then-act.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It states the core behavior (sleep for the given seconds) and implies no other side effects. It does not mention return value or absence of state changes, but for a wait operation this is implicit and sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no filler. It states the action and the key usage caution, making every word valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple wait tool, the description is complete enough: it explains the operation and gives a usage preference. There is no output schema needed for a side-effect-free sleep. It could mention why waiting is sometimes necessary, but the current context is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides the parameter name, type, minimum, and maximum. The description only repeats 'seconds' in the phrase 'Sleep for `seconds` seconds' without adding further semantic detail beyond what the schema supplies, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to sleep for a specified number of seconds. The verb 'Sleep' and the parameter 'seconds' make the action and resource unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use sparingly' and 'prefer screenshot-then-act', which directs the agent toward a preferred alternative. It does not go into detail about exactly when waiting is appropriate, but the guidance is clear enough for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drum_patternA
Generate drum notes for a section. (genre, role) selects from a library of 50+ named patterns. role ∈ {verse, chorus, fill, intro, breakdown, outro, buildup}. density 0..1 scales note count (0.5 drops half the hats; 1.0 is the full pattern). length_bars tiles the pattern. Returns notes ready to drop on a Sampler track.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| seed | No | ||
| genre | Yes | ||
| swing | No | 0..0.1 swing offset on off-beat 8ths | |
| density | No | ||
| humanize | No | ||
| length_bars | Yes | ||
| start_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does provide useful behavioral detail: density scales note count, length_bars tiles patterns, and the tool returns notes rather than placing them. However, it does not disclose nondeterminism, the effect of seed/humanize on output variation, or any project side effects, and its density range conflicts with the schema's maximum of 1.5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main purpose in the first clause. It uses terse notation for the role set and density behavior, and every sentence contributes meaning without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core invocation path is covered: required params genre, role, and length_bars are explained, and the return intent is stated. However, this is an 8-parameter generative tool with no output schema and no annotations, so the missing semantics for four optional parameters and the density range inconsistency leave meaningful gaps for an agent deciding how to customize a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics for role, genre, density, and length_bars, including an explicit role enum and an illustrative density example. But with only 13% schema coverage, it leaves seed, swing, humanize, and start_beats undocumented, and the stated density range "0..1" contradicts the schema's allowable maximum of 1.5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Generate drum notes for a section." It further distinguishes itself from sibling generators like melody_generate, bassline_generate, and arp_pattern by focusing on drum patterns, naming the selection mechanism, and noting the notes are for a Sampler track.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use this tool: when drum notes for a section are needed, with genre and role selecting from the pattern library. It does not explicitly name alternatives or when-not-to-use conditions, though sibling drum_pattern_list is an obvious complement for browsing patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drum_pattern_listA
List all available (genre, role) patterns in the library.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It clearly implies a read-only list operation but does not disclose return format, pagination, error behavior, or any other behavioral traits beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word adds meaning, and it is appropriately sized for a zero-parameter list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless read-only listing, the description is essentially complete. It lacks an output schema and does not detail return shape, but the core invocation intent is fully clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly adds no parameter information because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('all available (genre, role) patterns in the library'), making the tool's purpose clear. It does not explicitly name or contrast with the sibling 'drum_pattern', so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: use this tool when you need to enumerate available patterns. No explicit when-to-use, when-not-to-use, or alternative routing is provided, so guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_createA
Create a new empty Edit (song). Sets tempo, time signature, and key. Replaces the in-memory Edit; does not write to disk until edit_save or flush.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Untitled | |
| tempo | No | ||
| key_mode | No | major | |
| key_root | No | 0=C, 1=C#, ... 11=B | |
| length_beats | No | ||
| time_sig_num | No | ||
| time_sig_denom | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it creates a new empty edit, replaces the in-memory Edit, and does not write to disk until edit_save or flush. This clearly communicates the non-destructive-to-disk nature and the in-memory replacement, which is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and each sentence adds distinct value: first states what it creates, second states the persistence behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and only 14% schema description coverage, the description is incomplete. It doesn't explain the parameters beyond a general mention, nor does it specify return values (though no output schema exists). It gives enough to understand the action but not enough to confidently set parameters without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14% (only key_root has a description). The description mentions 'tempo, time signature, and key' but does not map these to specific parameter names or explain defaults, ranges, or formats for the other six parameters. It adds minimal value beyond the schema's defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Create a new empty Edit (song)' and lists what it sets (tempo, time signature, key). It distinguishes from siblings like edit_open and edit_save by emphasizing 'new empty' and the non-persistence behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (create a new edit) but does not explicitly name alternatives or state when not to use it. The phrase 'Replaces the in-memory Edit' hints at a destructive side effect but does not guide the agent to choose this over edit_open or edit_save. Guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_export_chord_chartA
Export a chord-chart text file from the markers + tempo of the current Edit. format ∈ {lead_sheet, nashville}. Markers should be named with section labels (e.g. 'verse', 'chorus').
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | lead_sheet | |
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It clearly indicates an export/write action to out_path, but it does not mention whether existing files are overwritten, what happens if markers are missing, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, immediately identifying the action, output, and source. Every sentence adds relevant detail without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool, the description covers the essential context: source data, output type, and format options. It lacks minor details such as overwrite behavior and return value, but overall it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies the format parameter by listing allowed values and explains that markers should use section labels. out_path is not explicitly defined but is reasonably inferable as the destination file path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a chord-chart text file from the markers and tempo of the current Edit. It also enumerates the supported formats, making the purpose unambiguous and distinct from related export tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a chord chart derived from markers and tempo is needed. It could more explicitly contrast with edit_export_midi, but the source and output type are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_export_midiB
Export all MIDI clips in the current Edit to a Standard MIDI File (.mid). One MIDI track per Edit MIDI track. Format-1 SMF with the Edit's tempo + time signature in track 0. Drop into any DAW for editing/printing/learning.
| Name | Required | Description | Default |
|---|---|---|---|
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose side effects. It does not state whether the operation is read-only, whether it modifies the Edit, or whether it overwrites existing files. This leaves important behavioral traits unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively brief but includes some redundancy: the format details are stated twice ('One MIDI track per Edit MIDI track' and 'Format-1 SMF with the Edit's tempo + time signature in track 0' repeat the same facts). Still, it stays focused and clear overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives good context for the output format and use case, but fails to explain the required parameter, leaving the agent without the information needed to construct a valid call. It is adequate for high-level intent but incomplete for execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, out_path, has no schema description and the tool description never mentions it. The agent cannot infer what value to provide (file path, filename, extension, etc.), making this a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports all MIDI clips from the current Edit to a Standard MIDI File, with specific output format details. This distinguishes it from other edit export tools like edit_export_chord_chart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful output details (one MIDI track per Edit track, Format-1 SMF, tempo/time signature in track 0) but does not explicitly state when to prefer this over sibling export tools or when it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_inspectA
Detailed structural dump of the current Edit. Heavier than edit_summary — includes every plugin's params, clip gain/fade/offset, automation lane counts, master chain. Use after edit_open to understand a song before mutating it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the tool is a read-oriented structural dump (non-mutating by implication), notes its heavier nature (performance hint), and enumerates the content (plugin params, clip gain/fade/offset, automation lane counts, master chain). It stops short of explicitly stating 'read-only' or describing response format, but the 'dump' and 'understand' wording strongly imply non-mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the core purpose, then adds contrast and usage context. Every clause earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description adequately covers what the tool returns (the enumerated structural details), when to invoke it (after edit_open, before mutation), and how it differs from edit_summary. An agent has everything needed to decide when to call it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not elaborate on parameter semantics. The baseline for 0 parameters is 4, and the description adds no parameter-specific details (unnecessary). Schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('dump') and resource ('current Edit'), and immediately differentiates from sibling edit_summary by noting it is 'Heavier' and includes detailed components. This clearly distinguishes the tool from the lighter alternative, so an agent can select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use after edit_open to understand a song before mutating it.' This provides a clear temporal and contextual cue, and the contrast with edit_summary implies when the lighter version is appropriate. No ambiguity remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_openB
Load an existing .tracktionedit file from disk into the model.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the core behavior (loading a file into the model) but doesn't disclose side effects like replacing current edit state, failure modes, or whether the load is destructive to unsaved changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the essential action without unnecessary words. It is well-structured and front-loaded with the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema, the description covers the basic action but misses important context: what happens to the current edit, whether the file must already be in a specific format, and error conditions. It lacks the context needed to select this among many edit-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides the parameter name 'path' with type string and no description. Schema coverage is 0%, so the description must compensate. It mentions the file is a '.tracktionedit' file from disk but doesn't explain path format, relative vs absolute, or valid file extensions beyond the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Load' and the resource 'an existing .tracktionedit file from disk into the model'. It is distinguishable from sibling tools like 'edit_create' and 'edit_save', though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., file must exist) or situations where a different edit tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_saveA
Serialize the current Edit to a .tracktionedit file. Sets the flush target.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it serializes and sets a flush target, but it does not explain overwrite behavior, permissions, or what 'flush target' means in practice. This is a save operation, so non-destructiveness is implied but not stated, and the flush behavior is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the primary action. The second sentence adds a secondary behavior (setting flush target) without redundancy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema and no annotations, the description covers the core action but leaves the 'flush target' behavior unexplained. It also does not address potential edge cases (e.g., existing file, path validation). It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does not explicitly describe the 'path' parameter beyond implying it is the destination file path. It does not clarify whether the path should be absolute/relative, whether the file will be overwritten, or any format requirements. The description adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Serialize the current Edit') and the resource (a .tracktionedit file). This distinguishes it from sibling tools like edit_save_stem (which saves stems) and edit_export_midi (which exports MIDI). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to save the entire current Edit to a .tracktionedit file, which differentiates it from save_stem or export tools. However, it does not explicitly state when NOT to use it or mention alternatives, and the phrase 'Sets the flush target' suggests a relationship with the 'flush' sibling without explanation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_save_stemA
Save a stem-mix copy of the current Edit: only named tracks audible, all others muted. Pass track_ids or track_names (list). Use in a loop to produce per-track stems for rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| out_path | Yes | ||
| track_ids | No | ||
| track_names | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it saves a 'copy' which implies non-destructive behavior, but does not mention potential side effects, file overwrite behavior, or whether the current Edit is modified. This is adequate but not highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core action and usage guidance. It is concise, easy to parse, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and usage scenario, and mentions two of the three parameters. However, it omits essential details about the required out_path parameter and the relationship between track_ids and track_names, so it is not fully complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains track_ids and track_names as lists for selecting audible tracks, but does not explain out_path, which is the only required parameter. It also leaves ambiguous whether track_ids and track_names are mutually exclusive or can be combined. This is a significant gap given 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a stem-mix copy of the current Edit with only named tracks audible, and explicitly mentions using track_ids or track_names. It also provides a specific use case (loop for per-track stems) which distinguishes it from related save/render tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear when-to-use instruction ('Use in a loop to produce per-track stems for rendering') and identifies the key parameters. However, it does not explicitly contrast with sibling tools like edit_save or render_stems, so some inference is still needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_set_tempoB
Change the project tempo. preserve_pitch is informational (audio clips don't get pitch-shifted by this tool).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| preserve_pitch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clarifies that preserve_pitch does not actually shift audio pitch, which is a useful behavioral note. However, it does not disclose other potential effects (e.g., on tempo automation, playback, or whether changes are global).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the main action first, followed by a clarifier. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, it covers the core purpose and the only non-obvious parameter. Missing differentiation from tempo_set and any mention of return or side effects, but those are likely covered by the tool's simplicity. Could be more complete with usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It explains preserve_pitch's informational nature, but does not add detail for bpm (units, range, required). bpm is self-explanatory from name and type, but the description could have stated units explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear action (change) and resource (project tempo). It distinguishes from audio_detect_tempo and edit_transpose by implication, but a sibling named tempo_set exists that appears similar; no explicit differentiation is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like tempo_set. The description does not mention any exclusions, conditions, or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_summaryA
Return a JSON summary of the current Edit (tracks, clips, markers, tempo).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It indicates a read-only 'Return' operation and lists the summary contents, but it does not explicitly state that no changes are made, nor does it describe behavior when no Edit is open. This is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes: action, output type, scope, and content categories are all present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, this description is largely complete: it tells the agent what the call returns and at what granularity. It could be more explicit about the exact JSON structure or error/empty-edit behavior, but the tool's simplicity makes the current description sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. The description adds useful context by enumerating what the summary includes (tracks, clips, markers, tempo), which helps the agent understand the meaning of the returned data despite no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Return), the resource (current Edit), and the content categories (tracks, clips, markers, tempo). It is specific and immediately understandable, though it does not explicitly distinguish itself from the similarly named sibling edit_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like edit_inspect or edit_create. The description explains what the tool returns but not when an agent should prefer it or what conditions apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_transposeA
Transpose every MIDI note in the Edit by semitones. Audio clips are NOT pitch-shifted.
| Name | Required | Description | Default |
|---|---|---|---|
| semitones | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states that MIDI notes are transposed, implying a mutating operation, but it does not mention whether the change is destructive, reversible, or whether it has any side effects. The clarification about audio clips is a scope boundary, not a behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise—two short sentences—with no superfluous content. It front-loads the primary action and then adds a single, relevant clarification. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema, no annotations), the description is largely sufficient. It tells the agent what input is required and what the tool does. It could be enhanced by noting prerequisites (e.g., an open edit) or expected return value, but these are not critical for the tool's basic correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description for the `semitones` parameter, and the tool description only uses the parameter name without defining its meaning, range, or direction. The description implies the parameter is the transposition interval, but it does not specify whether negative values are allowed or provide any constraints, leaving the agent to infer semantics from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (transpose), the target (every MIDI note in the Edit), and the parameter (semitones). It also explicitly clarifies that audio clips are not pitch-shifted, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage boundary by stating that audio clips are NOT pitch-shifted, which helps an agent decide when not to use this tool. However, it does not explicitly name an alternative tool for audio pitch-shifting, so guidance is partial rather than fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensemble_dynamicsA
Return per-section velocity multipliers for a sections_plan. Apply uniformly to drums, bass, keys, lead notes so the whole ensemble breathes together (quiet intro, building verses, peak chorus/bridge, soft outro).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It says 'Return' multipliers but then says 'Apply uniformly', creating ambiguity about whether the tool mutates the project or simply returns values. It also does not clarify how the sections_plan is obtained or whether the operation has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core output is stated first, and the musical application is explained efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, target instruments, and musical shape, but with no output schema and no annotations, it should clarify whether the tool reads a current sections_plan, what the returned multiplier format is, and whether it has side effects. The ambiguity around 'apply' leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description references sections_plan but does not need to explain parameter syntax. It adds enough context about what the multipliers apply to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns per-section velocity multipliers for a sections_plan and identifies the affected instruments (drums, bass, keys, lead). It is specific and understandable, though it does not explicitly differentiate itself from sibling tools like theory_velocity or arrangement_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear musical context for when to use it: to make the ensemble breathe together across intro, verses, chorus/bridge, and outro. It implies usage but does not state exclusions or name alternatives, so it falls short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eq_high_passA
Add a high-pass filter at freq Hz to a track. slope is dB/oct (12, 18, 24).
| Name | Required | Description | Default |
|---|---|---|---|
| freq | No | ||
| slope | No | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly discloses the primary mutation (adds a high-pass filter with frequency and slope), though it does not mention whether the effect chain is appended/replaced or any failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the key parameters and their meanings are front-loaded and immediately useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter mutation with no output schema, the description is largely complete. It covers the operation and the two non-obvious parameters, though a note about where the filter is placed in the chain would add extra context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions, so the description fills in meaning for freq and slope (including valid slope values). track_id is only implicitly explained as the target track, which is still reasonably clear from 'to a track' and the required schema field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add a high-pass filter'), target ('to a track'), and key parameters ('freq', 'slope'). It clearly distinguishes from siblings like eq_low_pass and eq_tilt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear enough that an agent can infer when to use it (when high-pass filtering is needed), but it does not explicitly contrast with eq_low_pass/eq_tilt or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eq_low_passA
Add a lowpass filter at freq Hz to a track for darkening/muffling.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| freq | No | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone carries the burden. It clearly says the tool adds a filter at a frequency, but it does not mention side effects, non-destructive nature, or how the `q` parameter affects behavior. It is accurate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that conveys the essential information without any filler or redundant phrases. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filter operation, the description provides sufficient context: what it does, where it applies (track), and the key parameter. It does not mention output or potential side effects, but given the simplicity of the tool and the lack of an output schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains `freq` explicitly and `track_id` implicitly ('to a track'), but `q` is not mentioned at all. Schema coverage is roughly 66%, which is not high enough to warrant a baseline of 3, and the description does not compensate for the missing parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('add a lowpass filter') and the purpose ('darkening/muffling'), including the key parameter `freq` in Hz. It also implicitly distinguishes itself from sibling tools like eq_high_pass or eq_tilt by specifying a lowpass filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the intended use case (darkening/muffling) but does not explicitly state when to use this tool over alternatives (e.g., eq_high_pass) or when not to use it. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eq_tiltB
Single-knob bright/dark EQ. brightness -1=dark, 0=neutral, +1=bright.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | ||
| brightness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It explains the brightness parameter but does not disclose whether this adds a plugin, modifies existing EQ settings, is reversible, or what side effects occur. For a mutating tool, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the brightness value mapping is front-loaded and compact. Every word earns its place despite the minimal length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no annotations and no output schema, the description covers the main knob semantics but omits the explicit action/resource relationship and any guidance on valid brightness bounds or when to use it. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It adds meaning for brightness (-1=dark, 0=neutral, +1=bright), which is useful beyond the bare number type, but track_id is left undocumented and the valid range or bounds for brightness are not explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes a 'Single-knob bright/dark EQ' and defines the brightness scale, which clearly distinguishes it from eq_high_pass and eq_low_pass. However, it lacks an explicit action verb and does not explicitly state that it applies to the track, relying on the track_id parameter to imply the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over eq_high_pass, eq_low_pass, or other processing tools, and no alternatives or exclusions are mentioned. The only usage info is the brightness value mapping, which is parameter semantics rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flushA
Write the current Edit to the previously-opened/saved .tracktionedit path. Use this between batches of mutations so Waveform (when open) sees a single, coherent update instead of mid-edit flicker.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core behavior (writing the current Edit to a previously opened path) and adds useful context about the rationale (avoiding flicker in Waveform). It does not mention error cases or permissions, but for a zero-parameter flush operation this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The action is front-loaded, and the usage rationale is provided in the second sentence. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and no annotations, the description provides the essential context: what it writes, where it writes it, and when to use it. It could mention what happens if no edit is open, but the 'previously-opened/saved' phrasing implies the prerequisite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter information needed in the description, and the schema is empty; nothing is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Write') and a specific resource ('the current Edit to the previously-opened/saved .tracktionedit path'). This clearly defines what the tool does and distinguishes it from other edit-related operations like edit_save or edit_open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'between batches of mutations'. It explains the benefit (single coherent update, avoiding mid-edit flicker), though it does not name alternatives or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
key_setD
Set the project key.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| root | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the action 'set' without revealing whether the operation is destructive, reversible, requires authentication, or has side effects. It does not describe the expected behavior beyond the immediate mutation, leaving the agent with no insight into potential risks or effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief, which could be seen as concise, but it is under-specified to the point of being unhelpful. It lacks structure, front-loading of critical details, or any substantive content. The single sentence does not earn its place because it offers no useful information beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain the purpose of the parameters, the expected output, or any related context. An agent has virtually no information to correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for the lack of parameter documentation. However, it does not explain the meaning of 'root' (an integer 0-11) or 'mode' (major/minor). Without any elaboration, an agent cannot understand what values to pass or why they matter, making the parameters ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set the project key.' is essentially a tautology of the tool name 'key_set'. It does not provide any additional specificity about what 'project key' means (e.g., musical key, hash key, or session key), nor does it distinguish it from sibling tools like audio_detect_key or theory_scale. It adds no informational value beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or conditions under which this tool should be chosen over sibling tools such as audio_detect_key or theory_scale. No when-to-use or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loop_dropA
Drop a loop onto a track. mode='fit' time-stretches to song tempo, 'original' uses natural tempo. start_beats defaults to end of existing clips on that track. Auto-detects file duration.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fit | |
| track_id | Yes | ||
| loop_path | Yes | ||
| start_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description conveys that the tool mutates the project by dropping a loop onto a track, time-stretches based on mode, and auto-detects file duration. It does not spell out every side effect, but the core behavior is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, direct sentences cover the essential behavior and defaults without filler. The structure is efficient and easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema, the description provides enough operational context: what happens, how mode changes behavior, and where clips are placed by default. It omits details like error cases or exact return values, but those are not strongly required here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains mode and start_beats, including a default and a unit implication, but does not explicitly define track_id or loop_path. Schema names and the phrase 'file duration' give some hints, but about half of the parameters are not truly described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Drop a loop onto a track') and adds distinguishing behavior: time-stretch modes and default placement at the end of existing clips. This makes the tool's purpose unmistakable even among similar sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how to choose between mode='fit' and 'original' and notes the default for start_beats, but it does not explicitly say when to prefer this tool over alternatives like audio_clip_import or clip_add. The guidance is useful but selection context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loop_searchA
Search Waveform's loop library. Optional filters: tempo (BPM, with tolerance), name (substring), bars (exact), min_bars, max_bars.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| name | No | ||
| tempo | No | ||
| max_bars | No | ||
| min_bars | No | ||
| tempo_tolerance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of transparency. It does not mention whether the search is read-only, what side effects occur, or any rate limits or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action, followed by a compact list of filters. No redundant or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description omits what the search returns, such as loop names, metadata, or ordering. It also doesn't mention behavior when no results are found, which is a notable gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has six parameters with no descriptions, so the tool description must compensate. It explains tempo is in BPM with tolerance, name is a substring, bars is exact, and min/max bars are range filters. This adds meaningful semantics, though tempo_tolerance's exact behavior is only implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Waveform's loop library, a specific resource. The verb 'search' distinguishes it from other loop-related tools like loop_drop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool over alternatives, such as loop_drop or other search tools. It only lists optional filters without explaining scenarios or preferences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marker_addB
Drop a marker (verse, chorus, drop, etc.) at a beat position.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| start_beats | Yes | ||
| length_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full weight. It implies an additive action ('drop a marker') but does not state side effects like overwriting existing markers, undo behavior, or whether markers appear in a specific arrangement track.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words or extra details. It front-loads the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and low-risk, but the description does not explain what a marker is in the context of the DAW, whether start_beats is absolute or relative, or what happens after the marker is dropped. No output schema is provided, so return behavior is also unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description's phrase 'at a beat position' partially clarifies start_beats, but 'name' and 'length_beats' are not mentioned at all. Schema defaults are not explained, leaving the meaning of length_beats ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Drop a marker' and the resource 'marker' along with the position 'at a beat position.' It distinguishes the tool's function from other composition/edit tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No mention of when to use this tool versus alternatives such as clip_add or midi_clip_add. The description does not provide any conditional guidance or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
master_chain_applyA
Replace the master chain with a named template. template ∈ {clean_pop, loud_edm, lofi_warm, cinematic_dynamic, podcast_voice, no_processing}. Each is an EQ + Comp + Limiter chain tuned for its target use case.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that the tool replaces the master chain with an EQ + Comp + Limiter chain, which is transparent about the core behavior. However, it does not mention side effects such as removing existing chain plugins, whether the operation is destructive, or if it is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the main action stated first. The additional detail about templates is relevant and presented without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterized tool, the description provides enough context to understand what happens and how to choose a template. It could mention whether the existing master chain is discarded or preserved, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter `template` is fully documented by the description, which lists all allowed values and describes their intended use cases. The schema also enforces the enum, so there is no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: replace the master chain with a named template. It also lists the available templates, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly say when to use this tool versus alternatives such as individual EQ or compression tools. It implies template selection based on target use case but gives no direct guidance on when replacing the whole chain is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
melody_generateB
Generate a melody from a scale and contour. Returns notes (pitch/start_beats/length_beats/velocity) ready to drop into a MIDI clip. contour ∈ {arch, descending, ascending, wave, question_answer, static}. density ∈ {sparse, medium, busy}. Notes are rhythmically diverse — quarter, eighth, dotted, with rests — humanized for natural feel.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Scale mode e.g. 'natural_minor', 'dorian' | |
| root | Yes | Note name e.g. 'A', 'C#' | |
| seed | No | ||
| contour | No | arch | |
| density | No | medium | |
| length_beats | Yes | ||
| register_octave | No | Center octave (4=middle, 5=above middle) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the output format and rhythmic characteristics (quarter, eighth, dotted notes with rests, humanized), but it does not mention side effects, whether it modifies existing data, or whether it is a read-only operation. With no annotations provided, this partial transparency is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using bullet-like clarity for enums and output notes. Every sentence adds useful detail without redundancy, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with no output schema, the description provides a fairly complete picture: input parameters (scale, contour, density) and output format (pitch, start_beats, length_beats, velocity). It lacks detail on some parameters but overall is sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on the contour and density enums and the note output structure, but it does not clarify the meaning of root, mode, length_beats, seed, or register_octave. The schema provides brief descriptions for root, mode, and register_octave, but overall coverage is partial, leaving seed and length_beats ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: generating a melody from a scale and contour, producing notes ready for a MIDI clip. It distinguishes itself from other composition tools by focusing specifically on melody generation, though it does not explicitly name competing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like arp_pattern, bassline_generate, or other generative composition tools. No explicit conditions or recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midi_clip_addC
Create an empty MIDI clip on a track.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Clip | |
| track_id | Yes | ||
| start_beats | Yes | ||
| length_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral transparency. It only states that an empty MIDI clip is created, but does not disclose what happens if a clip already exists at the position, whether the clip is selected, or what return value or errors might occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no redundant words or unnecessary detail. It is concise while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides only the basic action and lacks surrounding context. It does not mention what the clip looks like, how it relates to other clip operations, or what the caller should expect after execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds essentially no parameter-level meaning. It does not explain start_beats, length_beats, the optional name, or the significance of track_id beyond the vague phrase 'on a track'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the resource ('empty MIDI clip'), and the location ('on a track'). It is distinguishable from sibling tools like midi_notes_add and audio_clip_import by the word 'empty' and 'MIDI', though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as midi_notes_add or clip_duplicate. It does not mention prerequisites, typical workflow steps, or conditions that would make this tool the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midi_clip_quantizeA
Snap note start times in a clip to the nearest grid division. Grid is in beats: 0.25 = 16th notes, 0.5 = 8ths, etc. Strength 0..1.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes | ||
| strength | No | ||
| grid_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It mentions the core mutation (snapping note start times) and explains the strength parameter (0..1) as partial snapping, but does not disclose whether the operation modifies the clip in place, whether it affects all notes or only selected, whether it is reversible, or what the return value is. For a mutation tool, these are significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The main action is front-loaded, followed by the essential grid explanation and strength constraint. Every sentence earns its place, and the structure is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with 3 parameters and no output schema, the description covers the essential aspects: the action, grid units, and strength range. However, it omits behavioral details like in-place modification and note scope, which would be helpful but are not critical for a simple quantize operation. Overall, it is nearly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all parameters. It does explain grid_beats with concrete examples (0.25 = 16th notes) and strength with a range (0..1). clip_id is not explicitly explained, but its purpose is self-evident from the context. The description adds meaningful semantics beyond the bare schema, compensating well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'snap note start times' on a specific resource 'a clip' to 'the nearest grid division'. It also defines the grid unit (beats) and gives examples, distinguishing it from sibling tools like midi_notes_add which add notes, or midi_notes_clear which clears them. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (after notes exist, to align timing) but does not explicitly state prerequisites, alternatives, or when not to use it. For instance, it doesn't mention that it modifies the clip in place or that it should be used after midi_notes_add. The guidance is implied by the action itself but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midi_notes_addB
Add notes to an existing MIDI clip. Pass an array of {pitch, start_beats, length_beats, velocity?, colour?}. Pitch is MIDI 0-127. Channel is per-clip, set when the clip is created (not per-note).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| clip_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing side effects. It does not state whether notes are appended, merged, or replace existing notes, nor does it describe potential errors (e.g., invalid clip_id, out-of-range pitch) or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two clear sentences with no redundancy. The key information is front-loaded, and the parameter clarification is efficiently placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with two parameters, but the description lacks any mention of error handling, return values, or interaction with the existing clip's state. Without annotations or an output schema, more detail would be needed to fully prepare an agent for all realistic scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that pitch is MIDI 0-127 and that channel is per-clip, not per-note, which adds useful context beyond the schema. However, it does not explain the meaning or units of start_beats and length_beats, nor the behavior of velocity and colour defaults beyond schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add notes') and the target ('existing MIDI clip'), and the parameter structure is explicit. It is easily distinguished from sibling tools like midi_clip_add and midi_notes_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives such as midi_clip_add (creating a clip) or midi_notes_clear (removing notes). It implies the clip must already exist, but does not contrast it with siblings or mention edge cases like overwriting existing notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
midi_notes_clearB
Remove all notes from a MIDI clip.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Remove all notes' implies a destructive operation, but it does not state whether the action is reversible (e.g., via undo), whether it affects other clip properties, or what happens if the clip does not exist. For a destructive tool, this is a significant omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, front-loaded with the action. It is maximally concise and well-structured for a tool that performs a single, simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the operation is simple, the description lacks critical context for an agent to invoke it safely. It does not mention error handling, reversibility, or what the tool returns. For a destructive operation with no annotations and no output schema, the description should provide at least a warning about its destructive nature and any assumptions about the clip.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the clip_id parameter (coverage 0%), so the description must compensate. It does not explain what clip_id refers to, how to obtain it, or any format constraints. The parameter name gives a basic hint, but no concrete semantics are provided, leaving the agent to infer its meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb 'Remove' and a specific resource 'all notes from a MIDI clip'. It unambiguously distinguishes itself from sibling tools like midi_notes_add (which adds notes) and midi_clip_quantize (which adjusts timing). An agent can immediately understand the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention any prerequisites (e.g., clip must exist) or contrast with midi_notes_add, which might be used to edit notes incrementally. The usage context is only implied by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mix_apply_referenceB
Set a track's volume_db (and optional pan) to the genre+role reference from the MIX_BALANCE table. Use this once per track after creating it instead of hand-tuning levels. Genres: synthwave, lofi, edm, pop, hip_hop, cinematic, ambient. Roles: drums, kick, snare, hat, bass, sub_bass, lead, pad, keys, arp, counter, melody, ambience, fx. Returns the dB value applied.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | ||
| role | Yes | ||
| genre | Yes | ||
| track_id | Yes | ||
| offset_db | No | Signed adjustment on top of the reference (e.g. +1 to lift slightly) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions it sets volume_db and optional pan, and returns the dB value, but does not disclose whether it overwrites existing settings, whether it's reversible, what happens on invalid genre/role, or any side effects. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action. The genre and role lists are necessary for valid input and are presented cleanly. It avoids redundancy and stays within a reasonable length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description returns the applied dB value and lists valid genres/roles, which is helpful. However, for a mutation tool with no output schema, it does not cover edge cases like track not existing, whether calling twice has cumulative effects, or interaction with other mix tools. The 'use once per track' hint is useful but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (only offset_db has a schema description). The description compensates somewhat by listing valid values for genre and role and clarifying that pan is optional. However, it does not explain track_id semantics or the pan range beyond what the schema shows, and offset_db is only explained in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set a track's volume_db (and optional pan) to the genre+role reference from the MIX_BALANCE table.' It also lists allowed genres and roles, giving precise scope. However, it does not explicitly differentiate from sibling tools like mix_set or mix_match_reference, relying only on the phrase 'instead of hand-tuning levels' which implies but does not name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: 'Use this once per track after creating it instead of hand-tuning levels.' This indicates when to use it (after track creation) and what it replaces (manual level setting). It does not explicitly name alternative tools or state when not to use it beyond that, so it falls 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.
mix_match_referenceA
Compare a rendered file against a genre's reference spectrum and return a per-band diff in dB plus a plain-English diagnosis ('low end is +4 dB hot vs synthwave reference; consider HP filter on bass'). Use after render to inform mix adjustments.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output (per-band diff and diagnosis) but does not explicitly state side effects or confirm that it is read-only. Since there are no annotations providing this information, the description carries the burden, and it only partially covers behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no redundant words. It packs essential information about the action, inputs, outputs, and timing, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's relatively simple nature, the description covers all core aspects: what it does, when to use it, and what it returns. It lacks detailed parameter specifications but is otherwise complete enough for an agent to understand the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero coverage (no descriptions for file_path or genre). The description loosely implies that file_path points to a rendered file and genre selects the reference spectrum, but it does not provide details on expected formats, allowed values, or constraints. The compensation from the description is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Compare'), the resource ('rendered file' and 'genre's reference spectrum'), and the output ('per-band diff in dB plus a plain-English diagnosis'). It also provides context for when it is used ('after render to inform mix adjustments'), which distinguishes it from other analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after render to inform mix adjustments,' giving a clear timing and intent. However, it does not contrast this tool with alternative siblings like 'mix_apply_reference' or 'reference_spectrum_lookup,' so the guidance is not fully explicit about when to choose this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mix_setA
Set track volume (dB), pan (-1..1), mute, solo. Pass only the fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | ||
| mute | No | ||
| solo | No | ||
| track_id | Yes | ||
| volume_db | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries the burden; it discloses partial update behavior and pan range, but does not specify volume_db range/units beyond 'dB' or how mute/solo booleans behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the action and key constraints front-loaded; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple setter: identifies target, parameters, and partial-update semantics, but lacks a few details like accepted volume_db range or behavior when no optional fields are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions; description names every parameter and gives units for volume and pan range, though it leaves volume_db range and mute/solo semantics implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Set' and resource 'track volume, pan, mute, solo' with track_id, distinguishing it from track creation/removal/routing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear that it is for adjusting existing track mix parameters and that only changed fields need be passed, but it does not name alternative tools or explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motif_developB
Transform a motif (set of notes) into a variation. transformation ∈ {transpose, invert, retrograde, augment, diminish, sequence_up, sequence_down}. transpose: shift by semitones. invert: mirror around axis_pitch. retrograde: reverse note order. augment: stretch durations by factor. sequence_up/down: transpose by semitones AND repeat.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| factor | No | Duration scale for augment/diminish | |
| semitones | No | ||
| axis_pitch | No | Mirror axis for inversion | |
| offset_beats | No | Shift the whole result | |
| transformation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description focuses on the mathematical transformations but does not disclose any behavioral traits such as whether the input notes are mutated in place, whether a new object is returned, what side effects occur (if any), or if the tool has any restrictions (e.g., destructive actions). With no annotations provided, this gap is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured. It opens with the primary purpose, then enumerates the transformation types with concise clarifications. No redundant sentences or fluff; every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately explains the transformation logic, but it omits critical context such as the expected input format for 'notes', the return value (especially since no output schema is provided), and the behavior of 'offset_beats'. These omissions could leave an agent uncertain about how to invoke the tool correctly and what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to some parameters (e.g., semitones, axis_pitch, factor, and the sequence_up/down behavior) that are not fully explained in the schema. However, it does not clarify the 'notes' format or the purpose of 'offset_beats', leaving those parameters under-specified. It improves coverage but is not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Transform a motif (set of notes) into a variation.' It specifies the exact resource (motif/notes) and action (transform), and lists all supported transformations, making the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., compose_variations or other composition tools). The description explains how each transformation works but never addresses the context or selection criteria, leaving the agent without direction on when this tool is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
narrateA
Tell the user (via the event stream / preview UI) what the agent is about to do, in plain English. Call this before a batch of mutations so the user can follow along.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description makes it clear this is a non-mutating, communicative action ('tell the user'). No side effects are implied or hidden, and the tool's only effect is presenting information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with no redundant words. It states the action, the target, the format, and the timing in a compact, easy-to-understand manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For such a simple tool, the description covers all necessary context: when to use it, what to include, and how to deliver it. No output schema is needed, and the description does not omit any relevant information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema only defines a generic 'text' string, the tool description explains that the text should be in plain English and describe what the agent is about to do. This fully clarifies the parameter's intended content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to tell the user what the agent is about to do. It uses a specific verb ('tell') and specifies the resource (the user) and the content (upcoming actions). This distinguishes it from other tools that perform mutations or queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to call this tool before a batch of mutations, giving a clear trigger condition. This provides unambiguous guidance on when to use it, even without mentioning alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_addA
Add a plugin to a track's chain. For built-ins, pass the type name (e.g. '4OSC', 'Wavetable'). For external VSTs, also pass preset_path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| type | Yes | Built-in name or VST3 unique id | |
| track_id | Yes | ||
| preset_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It does reveal an important behavioral distinction (built-in vs. VST requiring preset_path), but it omits details like insertion point in the chain, whether the plugin must already be discovered, and potential failure modes. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action is front-loaded, and the parameter guidance is compact and directly actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, low schema coverage, no annotations, and no output schema. The description covers the main parameter variation but leaves the 'name' field unexplained and does not address chain position, prerequisites, or return values. It is sufficient for the common cases but has clear gaps for full autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It adds meaningful guidance for 'type' (built-in names like '4OSC', 'Wavetable') and for 'preset_path' (required for external VSTs), but it leaves 'name' and 'track_id' without any explanatory context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Add a plugin to a track's chain.' It also clarifies the two main usage variants (built-in type names vs. external VST preset paths), which disambiguates it from sibling plugin_add_* tools like plugin_add_drum_kit and plugin_add_reverb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when to use the tool: any time a plugin needs to be added to a track's chain, with specific parameter guidance for built-ins versus external VSTs. It does not explicitly state when not to use it or point to alternatives, but the context is strong enough for an agent to select this over other plugin tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_add_drum_kitA
Add a Sampler-backed drum kit to a track. pads is a list of {midi_note, sample_path, name?, gain_db?, pan?, decay?}. Each pad becomes one SOUND mapped to a single MIDI note. Replaces the manual Sampler+sounds boilerplate in compose_lofi_track.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Drum Kit | |
| pads | Yes | ||
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It does disclose the Sampler-backed nature, the one-pad/one-MIDI-note mapping, and that it automates boilerplate. It does not state side effects, reversibility, or what happens to existing track contents, leaving a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences front-load the action, then provide the pad structure, behavior, and context. No filler or restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description omits return values, error behavior, and side effects on the target track. It is sufficient for a straightforward call but not fully complete for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description partially compensates by defining pads as a list of {midi_note, sample_path, name?, gain_db?, pan?, decay?} and explaining pad-to-note mapping. It does not explain track_id or name, nor the units/semantics of gain_db, pan, and decay, so the compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a Sampler-backed drum kit to a track') and clarifies the pad-to-SOUND/MIDI-note mapping. It also distinguishes itself from generic plugin_add by describing drum-kit-specific behavior and by noting it replaces manual Sampler boilerplate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description tells the agent this is the intended way to add a drum kit and that it replaces manual Sampler+sounds boilerplate in compose_lofi_track. It does not explicitly list exclusions or compare against sibling tools like plugin_add, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_add_macroA
Add a MacroParameter (single 0..1 knob) to a plugin. Macros are the canonical Tracktion way to expose a single control that drives multiple underlying params via assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | No | ||
| track_id | Yes | ||
| plugin_id | Yes | ||
| default_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the operation adds a single 0..1 MacroParameter and that macros drive multiple underlying params via assignments. However, it does not mention side effects, prerequisites like an existing plugin, whether assignments are created automatically, or what the return/response is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action and resource are front-loaded, and the second sentence adds valuable conceptual context about macros without repeating the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 5 parameters, 3 required, no annotations, and no output schema, the description does not explain parameter roles, required inputs, preconditions, or expected results. An agent would need additional information to correctly call this tool with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain track_id, plugin_id, name, value, or default_value. The phrase 'single 0..1 knob' hints at the value range but does not map to any specific parameter, leaving most required parameters semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Add a MacroParameter (single 0..1 knob) to a plugin.' It clearly identifies the resource and distinguishes this tool from sibling plugin tools like plugin_add, plugin_set_param, and plugin_add_reverb by naming the MacroParameter concept and its multi-param assignment role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by explaining that macros are 'the canonical Tracktion way to expose a single control that drives multiple underlying params via assignments.' This implies when the tool should be used, though it does not explicitly list alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_add_modifierA
Add a TRACK-LEVEL modifier (LFO/envelope/random/step_lfo) and assign it to a plugin parameter. Real Tracktion schema — wires both on the track AND on the plugin. depth: 0..1 (modulation amount). rate: Hz when rate_type=0, beat multiplier when rate_type=1 (default = beat-synced). shape ∈ {sine, triangle, square, saw}.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | ||
| depth | No | ||
| phase | No | ||
| shape | No | sine | |
| track_id | Yes | ||
| rate_type | No | 0 = Hz, 1 = beat-synced | |
| target_param | Yes | ||
| modifier_type | No | lfo | |
| target_plugin_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains the wiring behavior (modifies both <MODIFIERS> and <MODIFIERASSIGNMENTS>) and parameter semantics (depth range, rate interpretation, shape enums). It does not mention side effects, return values, or error conditions, but it provides substantial insight beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, roughly three sentences, with the purpose front-loaded and parameter details presented in a structured way using enums and parentheses. Every sentence adds value: the first defines the action and scope, the second explains the wiring, and the third details parameter constraints. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no output schema, and no annotations, the description covers the core behavior, wiring, and key parameters. It omits details like whether the modifier is added to existing modifiers or replaces them, and it doesn't specify return values or failure modes. However, the essential information needed to call the tool correctly (modifier types, rate/depth/shape semantics, and target assignment) is present, making it nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% (only rate_type has a description), so the description must compensate. It explains depth (0..1 modulation amount), rate (Hz or beat multiplier), rate_type (0/1), shape (enum), and modifier_type (via the opening sentence). It leaves track_id, target_plugin_id, target_param, and phase unexplained, but those are largely self-explanatory from their names. The description adds significant meaning for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (Add a TRACK-LEVEL modifier) and the resource (modifier assigned to a plugin parameter), with specific types (LFO/envelope/random/step_lfo). It also distinguishes itself by mentioning the Tracktion schema wiring both <MODIFIERS> and <MODIFIERASSIGNMENTS>, which sets it apart from sibling tools like automation_add or plugin_add_macro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for track-level modulation of plugin parameters) and clarifies the beat-synced vs Hz behavior via rate_type. It does not explicitly mention alternatives or exclusions, but the 'TRACK-LEVEL' qualifier and the focus on modifier assignment provide clear context that differentiates it from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_add_reverbA
Add a built-in reverb to a track. type ∈ {plate, natural, non_linear}. All other params are normalized 0..1: size, decay, mix (wet amount), pre_delay, diffusion, definition, high_damp, low_damp, high_cut. Defaults to a tasteful 25% wet plate.
| Name | Required | Description | Default |
|---|---|---|---|
| mix | No | ||
| name | No | ||
| size | No | ||
| type | No | plate | |
| decay | No | ||
| high_cut | No | ||
| low_damp | No | ||
| track_id | Yes | ||
| diffusion | No | ||
| high_damp | No | ||
| pre_delay | No | ||
| definition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only says it adds reverb and mentions parameter normalization, but does not disclose whether existing effects are preserved, whether the plugin is appended or replaces anything, or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences with no fluff. The parameter list is dense but directly adds useful context about normalization and allowed types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough to invoke the tool: target track, type choices, and normalized value ranges. It omits side effects and the meaning of name, but the core usage is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the type enum, normalization to 0..1, and the wet amount for most effect parameters. However, it inaccurately refers to 'all other params' as normalized while track_id and name are strings, and leaves the meaning of name undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: adding a built-in reverb to a track. It is distinct from sibling plugin_add_* helpers by naming the exact effect type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use—when a track needs a built-in reverb—but does not explicitly mention when to prefer this over generic plugin_add or other effect helpers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_discoverA
List third-party VST/AU plugins Waveform has scanned. Optional filters: kind ('instrument'|'effect'), format ('VST3'|'VST'|'AU'), manufacturer (substring), name (substring). Use the returned uniqueId as the type arg to plugin_add for VST3 instantiation.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| name | No | ||
| format | No | ||
| manufacturer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It communicates a read-only listing of already-scanned plugins and substring filter semantics, but it does not state whether a scan is triggered, whether the call has side effects, or how results are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core purpose comes first, filters follow compactly, and the downstream usage closes the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple discovery call, the description covers the necessary inputs and names the key return value (uniqueId) for downstream use. Without an output schema it could say more about the result shape, but nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates fully: it marks all four parameters as optional filters and documents the allowed values for kind and format plus substring matching for manufacturer and name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a precise resource ('third-party VST/AU plugins Waveform has scanned'), and the available filters. This clearly distinguishes it from siblings like plugin_list without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames the tool as a discovery step and explicitly routes the returned uniqueId into plugin_add for VST3 instantiation. It does not explicitly contrast with plugin_list or state when not to use it, but the intended workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_listA
Return the curated list of built-in instruments and effects available by name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to indicate side effects or read-only behavior, and the description itself does not disclose that the tool is non-mutating. Since the description carries the full burden without annotations, the lack of any statement about side effects or immutability leaves this aspect unclear, though the nature of a list retrieval mitigates risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose without extraneous fluff or redundancy. It is well-structured and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's simple scope: it states what is returned (a curated list of built-in instruments and effects) and the format (by name). It could benefit from noting that it only covers built-in plugins (which is implied by 'built-in') or whether it returns any additional metadata, but for a basic list retrieval, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter schema to document, and the description correctly omits any parameter details. No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning a curated list of built-in instruments and effects by name. It distinguishes itself from plugin_discover (which likely handles external plugin discovery) and other plugin-related tools by specifying 'built-in' and 'by name'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies usage (e.g., when you need to know available built-in plugins), it does not explicitly state when to use this tool versus alternatives like plugin_discover or plugin_add. The context of sibling tools provides some implicit guidance, but explicit conditions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_removeB
Remove a plugin from a track's chain by id.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | ||
| plugin_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description only states the action without disclosing side effects, irreversibility, or error behavior. The burden of transparency falls entirely on the description, which does not cover these aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous content. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-action nature and minimal schema, the description is adequate but not fully complete. It does not mention return values, errors (e.g., plugin not found), or any preconditions, which an agent might need to handle appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides bare parameter names (track_id, plugin_id). The description adds 'by id' to indicate both are identifiers, but it does not explain their meaning or relationship (e.g., that plugin_id is scoped to the track). Some inference is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove), the object (plugin from a track's chain), and the method (by id). It is unambiguous and immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not mention when to use this tool versus alternatives like plugin_add, plugin_list, or plugin_set_param. It lacks guidance on preferred scenarios or conditions for removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_set_paramC
Set a named parameter on a plugin in a track's chain.
| Name | Required | Description | Default |
|---|---|---|---|
| param | Yes | ||
| value | Yes | ||
| track_id | Yes | ||
| plugin_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action ('Set') without revealing side effects, reversibility, permission requirements, or what happens to the existing parameter value. The implication of mutation is present, but no additional context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence and is front-loaded with the core action. However, it is under-specified for a tool with four required parameters, making it more of a brevity gap than an example of optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four required parameters, no output schema, and no annotations, the description is incomplete. It fails to explain how the parameters interact, what value types are expected, or any usage context. An agent would struggle to call this tool correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 by explaining the parameters. It mentions 'named parameter' and 'plugin' but does not clarify what 'param' and 'value' mean, nor how track_id and plugin_id should be used. The description adds no meaning beyond the raw property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set') and the resource ('a named parameter on a plugin in a track's chain'). It is specific enough to distinguish from siblings like plugin_add (which adds a plugin) or plugin_remove (which removes one). It is not a tautology and gives a precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as plugin_set_vst_state or automation_add. There is no mention of exclusions or prerequisites, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_set_vst_stateA
Apply a base64 VST state blob (from plugin_state_capture) to an existing plugin in the in-memory Edit. Lets you copy one configured VST onto every other instance.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| track_id | Yes | ||
| plugin_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description must disclose behavior. Mentions 'in-memory Edit' and 'existing plugin', indicating mutation of in-memory session and requirement for existing plugin. However, doesn't describe side effects like overwriting, error conditions, or whether it's undoable. Missing details about compatibility of state blob with target plugin type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and source, no unnecessary words. Efficiently conveys purpose and use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no output schema, the description omits return behavior, error conditions, and compatibility requirements. It references the capture tool but doesn't state that the plugin must be of the same type or that the state must match. Also doesn't mention whether the operation is destructive or reversible. Incomplete for an agent to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain params. It explains that 'state' is a base64 VST state blob from plugin_state_capture, but does not explain track_id and plugin_id. These are likely identifiers but not elaborated. The description adds some value for state but insufficient for the other two.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Apply' and resource 'base64 VST state blob' to an existing plugin. Mentions source (plugin_state_capture) and use case (copy onto every other instance), clearly distinguishing from plugin_set_param and plugin_state_capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the workflow of capturing then applying, and says it's for copying configurations across instances. Doesn't explicitly mention when not to use, but the reference to plugin_state_capture and the phrase 'copy one configured VST' gives enough context to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_state_captureA
Read a saved .tracktionedit file and extract a VST plugin's base64 state blob by plugin_name (substring match) or unique_id. Used to copy a manually-loaded plugin's configuration (e.g. an SFZ loaded into sforzando) for re-use programmatically.
| Name | Required | Description | Default |
|---|---|---|---|
| unique_id | No | ||
| plugin_name | No | ||
| edit_file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the operation is a read, that plugin_name matching is substring-based, and that the output is a base64 state blob. It does not detail error handling or side effects, but the core behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The action is front-loaded, and the use case is stated concisely in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool, the description covers purpose, usage, and output format (base64 state blob). It does not mention potential error cases or multiple matches, but no output schema exists, so the explicit description of the return value is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameter descriptions, so the description must compensate. It gives meaning to all three parameters: edit_file_path as the .tracktionedit file, plugin_name with substring matching, and unique_id as an alternative lookup key. Unique_id is not further explained, but overall the description adds substantial semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action (read/extract) on a specific resource (.tracktionedit file and VST plugin state blob), and clearly distinguishes from siblings like plugin_list or plugin_set_vst_state by focusing on extraction of a base64 state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case: copying a manually-loaded plugin's configuration (e.g., SFZ in sforzando) for programmatic reuse. It does not explicitly mention alternatives or when-not-to-use, but the intended scenario is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
progression_generateA
Invent a chord progression in a key and mode. Returns a list of chord dicts ({roman, root_note, root_midi, chord_pitches, quality}). Constraints: end_cadence ∈ {authentic, plagal, deceptive, half}; allow_borrowed enables modal interchange (bIII/bVI/bVII in major, V/VII for minor); style ∈ {pop, jazz, modal, synthwave, sad, uplifting} biases the chord palette.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| root | Yes | ||
| seed | No | ||
| style | No | pop | |
| octave | No | ||
| end_cadence | No | authentic | |
| length_chords | Yes | ||
| allow_borrowed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does well by revealing the return format, constraining end_cadence to four options, explaining allow_borrowed's modal interchange behavior with concrete chords, and stating that style biases the chord palette. It does not mention determinism/seed behavior or explicit side-effect safety, but the generative nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and packs useful constraints into the second sentence without wasted words. The notation is compact yet readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, the description is not complete enough for reliable invocation. It covers the output shape and three parameter behaviors, but leaves allowed values for root/mode, the meaning of length_chords, and the effect of seed and octave unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it only explains end_cadence, allow_borrowed, and style. root and mode are only glossed as 'key and mode', while length_chords, seed, and octave receive no semantic explanation. Five of eight parameters remain underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it invents a chord progression in a key and mode, and further specifies the exact return shape as a list of chord dicts with five named keys. This clearly differentiates it from sibling theory/analysis tools like theory_chord_progression or theory_cadences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus sibling tools such as theory_chord_progression, compose_variations, or melody_generate. The word 'Invent' implies generation, and the return format suggests a standalone generator, but no when/when-not criteria or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_song_listA
List all known reference songs in the curated database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It clearly frames the operation as a non-mutating list over a curated database, but it does not disclose return format, ordering, or pagination. For a simple enumeration this is acceptable, though not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. The verb 'List' and the scope 'all known reference songs' are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, side-effect-free list operation with no output schema, the description covers the essential scope: all reference songs in the curated database. It does not define 'reference song' or describe the response shape, but neither is strictly required to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameter semantics to document. The description correctly implies no arguments are needed, matching the baseline for a 0-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation (list all) and resource (reference songs in the curated database), so it is clear and not a tautology. It does not explicitly contrast with the sibling reference_song_lookup, but the 'all' scope makes that distinction largely inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus reference_song_lookup, mix_match_reference, or other reference-related siblings. The agent is left to infer that a listing tool is appropriate for browsing all reference songs rather than looking up a specific one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_song_lookupA
Look up musical hints for a song. Pass name (one of the keys in REFERENCE_SONGS) OR genre to list all references in that genre. Returns BPM, key, form, energy curve, signatures the composer can use as inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| genre | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of transparency. It states the tool 'looks up' and 'returns' data, making it clear that it is a non-destructive read operation. It also discloses the nature of the output (BPM, key, form, energy curve, signatures), but does not mention edge cases like missing names or invalid genres.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second explains the parameters and output. It is concise, front-loaded, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description lists the returned fields (BPM, key, form, energy curve, signatures) and notes they can be used as composer inputs. It does not define 'energy curve' or 'signatures' in detail, but they are domain-specific enough for the intended audience. Error behavior is not mentioned, but the core usage is fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (`name` and `genre`) are explained in the description, including the constraint that `name` must be a key in REFERENCE_SONGS and the relationship between them (OR). This fully compensates for the absence of parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('look up'), a defined resource ('musical hints for a song'), and the exact parameters (`name` or `genre`). It distinguishes itself from sibling tools like `reference_song_list` by focusing on musical hints rather than just listing references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage instructions: pass `name` (one of the keys in REFERENCE_SONGS) or `genre` to list all references in that genre. It does not explicitly name alternatives or state when to prefer this over sibling tools, but the condition for use is implicit in the parameter guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_spectrum_lookupA
Get the target spectral profile (RMS dB per log-spaced band) for a genre — a mastering-engineer-cheat-sheet target for what a well-mixed track in this genre should look like spectrally. Bands: 60 / 133 / 296 / 657 / 1460 / 3243 / 7204 / 16000 Hz.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. The verb 'Get' implies a read-only operation with no side effects, but the description does not explicitly state that it does not modify any state or require special permissions. This leaves some ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise yet informative, packing the metric definition, the intended use case, and the exact band list into two sentences. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple lookup nature of the tool, the description provides sufficient context: what the tool returns (spectral profile), the metric (RMS dB), and the bands. It does not describe the output format, but that is not critical for a simple reference lookup and the overall complexity is low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'genre' is a plain string with no description in the schema. The tool description clarifies that it is used to select the target spectral profile for a genre, but it does not enumerate valid genre values or explain how the genre string should be formatted (e.g., 'rock', 'jazz'). Some guidance would improve usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (Get) and the resource (target spectral profile per genre), with specific detail on the metric (RMS dB per log-spaced band) and the exact band frequencies. However, it does not explicitly contrast with sibling tools like reference_song_list or mix_match_reference, so it earns a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a mastering reference via the 'mastering-engineer-cheat-sheet' phrasing, but it does not explicitly state when to prefer this tool over alternatives or provide conditions for use. The usage context is hinted, not made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renderA
Render the current Edit to a WAV file. NOT YET IMPLEMENTED — requires the wf-engine-helper binary which is not built. Use this tool to check status; it will return ok=False with a clear message so the agent can fall back to telling the user to render from inside Waveform.
| Name | Required | Description | Default |
|---|---|---|---|
| out_path | Yes | ||
| bit_depth | No | ||
| sample_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the critical behavior: NOT YET IMPLEMENTED, the missing wf-engine-helper binary, the ok=False return, and the intended fallback. This goes well beyond the schema and gives the agent accurate expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action, the implementation status, and the practical fallback behavior. The most critical caveat ('NOT YET IMPLEMENTED') is front-loaded immediately after the main verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-functional stub whose only expected behavior is returning ok=False, the description covers the essential agent decision: attempt a status check, then fall back. It omits return-value structure beyond ok=False and leaves parameter semantics unexplained, but those details are largely moot while the binary is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate by explaining out_path, bit_depth, and sample_rate. It does not mention any of them. The parameter names and the enum/default values offer some inference, but no detail is provided about what out_path should be (e.g., file vs directory) or how sample_rate/bit_depth affect output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Render the current Edit to a WAV file') with a specific verb and resource. It doesn't explicitly name sibling tools like render_and_audit or render_stems, but 'current Edit' helps differentiate the target. The not-implemented warning further clarifies that this is currently a status-check stub.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool to check status and describes the expected ok=False result plus the fallback of telling the user to render inside Waveform. It doesn't enumerate alternative render tools or state explicit when-not-to-use conditions, but the guidance is actionable and clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_and_auditC
Render the active edit to MP3, run the analyzer, and return both paths plus a balance/rhythm summary in one call. Replaces the manual revert→render→analyze chain.
| Name | Required | Description | Default |
|---|---|---|---|
| bitrate | No | 256k | |
| mp3_path | No | ||
| revert_first | No | ||
| trim_trailing_silence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose side effects. It mentions 'revert' but doesn't explicitly state whether the edit is reverted, what happens to the project state, or if files are created/modified. The optional 'revert_first' parameter hints at destructive behavior but is unexplained. The description is vague about the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the primary action and result, and efficiently mentions the replaced chain. It avoids redundancy and is appropriately sized, though it could add a few more details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, no schema descriptions, and no output schema, the description is severely incomplete. It does not explain parameter semantics, the nature of the analyzer, return format specifics, or prerequisites like an active edit. The agent would likely need to guess or inspect other tools to use this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no parameter descriptions exist in the schema. The description must compensate but does not explain any of the four parameters (bitrate, mp3_path, revert_first, trim_trailing_silence). It only mentions rendering and analysis at a high level, leaving the agent without parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders the active edit to MP3, runs the analyzer, and returns paths plus a balance/rhythm summary. It distinguishes itself from the manual revert→render→analyze chain, though it doesn't explicitly name sibling tools like 'render'. The verb+resource combination is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context by stating it replaces the manual chain of revert, render, and analyze, telling the agent this is a composite alternative. However, it doesn't explicitly list when NOT to use it or name alternatives like 'render' or 'undo', leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_stemsB
Render per-track stems. NOT YET IMPLEMENTED.
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It honestly discloses that the tool is not implemented, which is essential behavioral information, but it says nothing about failure behavior, side effects, or required project state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero filler. The core purpose is front-loaded, and the critical 'NOT YET IMPLEMENTED' status is immediately included, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description conveys the essential purpose and unavailability. However, the meaning of the required 'out_dir' parameter is left undocumented, and there is no guidance on how the tool would behave even hypothetically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the required 'out_dir' parameter, and the natural-language description does not explain it either. The parameter name is somewhat self-explanatory, but the description adds no semantic clarification beyond the schema and therefore fails to compensate for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Render per-track stems' clearly identifies a specific verb and resource: rendering stems at the individual track level. It is specific enough to distinguish from sibling tools like 'render' or 'render_and_audit', though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The warning 'NOT YET IMPLEMENTED' gives clear when-not-to-use guidance: an agent should not call this tool yet. However, it provides no indication of when the tool would be appropriate or what alternative to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_addA
Add an aux send (parallel routing) on a track. Tracktion routes via numbered buses 0..15 — pass bus_num explicitly, or pass dest_track_id to auto-pick a bus. Pair with aux_return_add on the receiving track. Emits a real element with proper slider position from amount_db.
| Name | Required | Description | Default |
|---|---|---|---|
| bus_num | No | ||
| pre_post | No | post | |
| amount_db | No | ||
| src_track_id | Yes | ||
| dest_track_id | No | Optional convenience: auto-pick bus from track index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the result ('Emits a real <PLUGIN type='auxsend'/> element') and clarifies the amount_db effect ('proper slider position'). It does not detail edge cases (e.g., conflicting parameters), but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose, and packs all essential guidance without redundancy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It explains the two parameter modes, the bus range, the companion tool (aux_return_add), and the resulting element. This fully situates the tool within the DAW workflow and sibling tools, covering all needed context for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (dest_track_id). The description compensates by explaining bus_num vs dest_track_id, src_track_id ('on a track'), and amount_db ('slider position'), but leaves pre_post unexplained. Since pre_post is an enum, its values are visible but its meaning (pre/post fader) is not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add'), the object ('aux send'), and the context ('on a track'). It differentiates from sibling tools by specifying 'parallel routing' and referencing aux_return_add, making its unique role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use bus_num versus dest_track_id ('pass bus_num explicitly, or pass dest_track_id to auto-pick a bus'), notes the valid bus range (0..15), and advises pairing with aux_return_add. This leaves no ambiguity about how to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_listA
List all saved snapshots in this session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself conveys a read-only behavior through the verb 'List.' It does not explicitly mention side effects or empty-result behavior, but the non-mutating intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool, the description is largely complete: it names the action, object, and scope. It does not describe the output format (e.g., names, metadata, timestamps), but this is reasonably inferred from 'list' and the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the input schema is empty, so there are no parameter semantics to clarify. The description adds no unnecessary parameter-related detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the object ('saved snapshots'), and the scope ('in this session'), leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the basic use case obvious, but it does not explicitly guide when to use this tool versus snapshot_save or snapshot_recall. A brief note about using it to review snapshots before recall or save would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_recallC
Restore a previously-saved snapshot as the active Edit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No mention of side effects (e.g., whether restoring overwrites the current edit, whether it reverts unsaved changes, or if it is destructive). With no annotations, the description carries no behavioral information beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that conveys the core purpose without redundant words. It is appropriately minimal for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the purpose is clear, the description omits critical context about the tool's behavior (e.g., what happens to the current edit, whether it is reversible) and does not provide any usage context. For a state-altering operation like restore, this leaves the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'name' has no description beyond its type (string). There is no explanation of what 'name' refers to (e.g., a snapshot identifier) or how it is used, leaving the schema effectively unusable without additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Restore') and the object ('a previously-saved snapshot') and ties it to the 'active Edit', which distinguishes it from snapshot save/list siblings. However, it does not explicitly reference sibling tools or further elaborate on the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like snapshot_save or snapshot_list. The description lacks any contextual cues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_saveA
Save the current Edit as a named snapshot for later A/B compare or recall.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present. The description discloses that a named snapshot is created, but it does not mention overwrite behavior, persistence, or whether the current Edit remains unchanged. Adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no filler. The verb and object are front-loaded, making the tool's core function immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and the presence of sibling tools like snapshot_recall and snapshot_list, the description gives enough context for typical use. Minor gaps remain around name conflicts, overwrite behavior, and snapshot scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lists 'name' as a required string, and the description ties it to naming the snapshot, but it does not add constraints, format rules, uniqueness expectations, or examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (save), the object (current Edit as a named snapshot), and the purpose (later A/B compare or recall). It is also distinguishable from regular edit_save by the snapshot concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some context for intended use ('later A/B compare or recall') but does not explicitly contrast with edit_save or state when snapshot_save should be preferred over a regular save. No alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_clip_addB
Add a step clip (drum-machine grid) to a track. channels is a list of {midi_note, name?, velocity?} dicts — one per drum row. patterns is a list of pattern dicts: each pattern has rows parallel to channels, where each row has a pattern string of '0'/'1' steps and optional velocities list. step_length is duration of each step in beats (0.25 = 16th notes). Way cleaner than 80 individual MidiClip notes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Step Clip | |
| channels | Yes | ||
| patterns | Yes | ||
| track_id | Yes | ||
| start_beats | Yes | ||
| step_length | No | Beats per step (0.25=16th, 0.5=8th, 1.0=quarter) | |
| length_beats | Yes | ||
| repeat_sequence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It explains the data structure of channels and patterns and step_length semantics, but it does not disclose whether the clip is appended, replaces an existing clip, or what side effects occur on the track. For a mutation tool with no annotation safety profile, this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then gives compact, technical detail about the two most complex parameters and step_length. The final sentence about being cleaner than individual notes is somewhat promotional but still useful for tool selection. Overall, the length is appropriate and every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 8 parameters, no annotations, no output schema, and only 13% schema description coverage. The description does not explain start_beats and length_beats semantics, repeat_sequence behavior, or what happens after the clip is added to the track. An agent would still need to guess several behavioral and parameter details to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, so the description must compensate, and it does add meaningful semantics for 'channels' and 'patterns' by explaining their nested structure and step string format. However, it leaves required parameters like track_id, start_beats, and length_beats, plus repeat_sequence, without any explanation beyond the schema, so it only partially offsets the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add a step clip (drum-machine grid) to a track.' It clearly distinguishes this from individual MidiClip note insertion by noting it is 'Way cleaner than 80 individual MidiClip notes,' which helps an agent separate it from midi_clip_add and midi_notes_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Way cleaner than 80 individual MidiClip notes' line implies the tool is preferred for drum-machine-style patterns, but it does not explicitly state when to use this tool versus alternatives like drum_pattern or midi_clip_add. There is no explicit when-not-to-use or comparison to other sibling tools, leaving usage guidance somewhat implied rather than fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tempo_setA
Set the project tempo in BPM (currently single global tempo; per-bar curves later).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a mutating action on the project tempo but does not disclose side effects such as affecting playback, existing automation, or whether the change is undoable. With no annotations, more explicit behavioral detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, direct, and front-loads the action. The parenthetical scope note adds useful context without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is complete enough: it states what the tool does, the unit of the parameter, and the current limitation. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, bpm, is explained as a tempo value in BPM and the schema already provides numeric constraints. Since schema descriptions are absent, the description compensates reasonably by naming the unit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (set) and the target resource (project tempo) with the unit BPM. Also clarifies the current scope as a single global tempo, distinguishing it from future per-bar curves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some usage context by noting that only a single global tempo is supported currently and per-bar curves are not yet available. It does not explicitly name alternative tools, but the scope note helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_arrangement_layersA
Return arrangement layers: foundation, harmonic_glue, lead, counter_melody, atmosphere, ear_candy. Optional section returns per-section presence values for each layer (0..1) from LAYER_PRESENCE_BY_SECTION — drives the 'which layers should be active' decision.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | intro/verse/chorus/etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the read-only nature implicitly through 'Return' and mentions the LAYER_PRESENCE_BY_SECTION data source, but does not address error behavior or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose. The optional parameter behavior is explained in the second sentence without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description explains both invocation modes and the nature of the returned data. It doesn't specify exact output formatting or invalid-section behavior, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes section as 'intro/verse/chorus/etc.', and the description adds that it is optional, returns per-section presence values in 0..1, and drives the layer activity decision. This goes beyond the schema's basic type hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns arrangement layers and enumerates them. The optional section behavior is also described, distinguishing it from other theory tools that return chord/scale info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that optional section returns per-section presence values and connects it to the 'which layers should be active' decision, giving a concrete use case. It does not name an alternative sibling tool, but the usage context is sufficient for a simple query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_borrowed_chordsA
Return the borrowed-chord (modal interchange) palette for major keys with usage notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Return' signals a read-only lookup and the mention of 'usage notes' hints at the output, but the description does not disclose return format, scope limits beyond major keys, or whether this is purely static reference data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no filler. It front-loads the action and resource, then adds the key qualifier 'for major keys' and the useful detail about usage notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference tool, the description covers the resource, scope, and output nature. It could be more explicit about the exact structure of the returned palette, but nothing critical is missing for an agent to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is already complete and the description has nothing to add. Baseline 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Return') on a specific resource ('borrowed-chord palette for major keys') with a clear qualifier ('modal interchange'). It is easily distinguished from sibling theory tools like theory_diatonic_chords and theory_modes because it names a unique musical concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when a borrowed-chord/modal-interchange palette is needed—but it does not explicitly state when not to use it or name alternatives. There is no exclusion guidance or routing to related theory tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_cadencesB
Return cadence types — pattern, feel, and use. Optional name for one specific cadence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, and the description doesn't disclose any side effects, permissions, or error behavior. It does not clarify what happens if an invalid name is provided or whether it performs any mutations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and to the point, with no extraneous information. It covers the essential purpose and the single parameter in two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough for a basic understanding, but lacks detail on the return format and possible name values. Given the simple one-parameter interface, it is sufficient but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'name' is described as optional and for selecting a specific cadence, adding some semantics beyond the bare schema. However, it doesn't specify valid values, format, or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns cadence types with pattern, feel, and use, and mentions the optional name filter. It is specific about the resource and action, though it doesn't contrast with sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to choose this tool over other theory_* tools like theory_chord_progression or theory_diatonic_chords. The description only mentions the optional name parameter, not usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_chord_progressionA
Look up a named chord progression. Returns the Roman-numeral sequence + tags + examples. Without args, lists all 24 named progressions.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag (e.g. 'lofi', 'jazz', 'pop') | |
| name | No | Progression name (e.g. 'axis_pop', 'ii_V_I') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It indicates read-only behavior through 'Look up' and 'Returns', and clearly describes the no-args case ('lists all 24 named progressions'). It doesn't mention error handling or empty results, but the core side-effect-free nature is evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loads the primary action, and conveys all essential information without any redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple lookup nature, the description covers the main behavior and the no-argument case. It doesn't specify the exact format of 'tags' or 'examples', but this is minor and the tool is otherwise self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions for both parameters are clear and self-contained ('Filter by tag', 'Progression name'). Since schema coverage is 100%, the description adds no extra parameter insight, and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Look up'), a specific resource ('named chord progression'), and the exact scope ('Without args, lists all 24 named progressions'). It is immediately distinguishable from generation tools like progression_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not explicitly state when to use it versus alternatives. It implies a lookup/retrieval use case, but doesn't name sibling tools or conditions for choosing this over progression_generate or theory_scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_diatonic_chordsB
Return the 7 diatonic chords for a key/mode. Set sevenths=true for 7th-chord qualities (Imaj7, ii7, etc.) instead of triads (I, ii, etc.). Returns Roman numerals + the actual chord pitches (MIDI) for each.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| root | Yes | ||
| octave | No | ||
| sevenths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it returns Roman numerals and MIDI pitches, which is helpful, but it does not describe the exact output structure (array vs. object), ordering, or whether pitches are voicings or single notes. It also omits any constraints on root format or octave behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The primary purpose and the key flag are stated upfront. It is concise and front-loaded, though a bulleted parameter breakdown could improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should fully specify the return format. It states the content (Roman numerals + MIDI pitches) but not the data structure, leaving the agent to guess whether it's an array, object, or something else. It also doesn't cover octave handling or edge cases like invalid root names. It's adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for all 4 parameters. It explicitly explains 'sevenths' and implies 'mode' via 'key/mode', but it does not explain the 'root' format (e.g., 'C' vs 'C#') or the 'octave' parameter at all. This is a significant gap for a tool with no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('7 diatonic chords') and clarifies the distinction between triads and 7th chords. It does not explicitly name sibling tools but is clearly differentiated from theory_borrowed_chords and theory_chord_progression by its focus on diatonic chords of a single key/mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to set the sevenths flag but does not contrast with alternatives like theory_borrowed_chords or theory_chord_progression. Usage context is implied (when you need the diatonic chords for a key) but no explicit exclusions or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_genreA
Return genre conventions: BPM range, time signature, key tendency, instruments, form, hallmark progressions. Without args, lists all 22 genres.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool appears to be a read-only query, but the description does not explicitly state that it has no side effects or that it is safe to call. It lacks details about error handling or edge cases, so transparency is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two short sentences. The main purpose is stated first, followed by the no-argument behavior. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool, the description covers the essential behavior: what it returns and what happens without args. It does not detail output format or error cases, but given the lack of output schema, this is sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'name' parameter by implying it is optional (without args, lists all genres) and that providing it returns conventions for a specific genre. This supplements the bare schema definition, though it does not enumerate valid genre names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it returns genre conventions with a specific list of attributes (BPM range, time signature, key tendency, instruments, form, hallmark progressions). It also explains behavior without arguments, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like theory_diatonic_chords or theory_chord_progression. It only mentions the no-argument behavior, but no explicit comparison or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_heuristicsA
Return the 13 songwriting heuristics (rule_of_3, contrast_required, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. 'Return' clearly indicates a read-only, side-effect-free operation, so the tool's behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that includes the essential resource and examples. No unnecessary words or redundancy are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only catalog tool with no parameters and no output schema, the description is fully sufficient. It tells the agent exactly what will be returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics to clarify. The baseline of 4 applies because no parameter information could be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Return') and a precise resource ('the 13 songwriting heuristics'), with concrete examples. It is immediately distinguishable from the many other theory_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as theory_search or other theory_* tools. It is self-explanatory for its basic purpose, but lacks any usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_mix_balanceA
Return reference track-volume dB targets for a genre. Without args, returns the full table of (genre, role) → dB. With genre, returns the role→dB map for that genre. With genre AND role, returns the single dB value with a brief rationale. Roles: drums, kick, snare, hat, bass, sub_bass, lead, pad, keys, arp, counter, melody, ambience, fx. Genres: synthwave, lofi, edm, pop, hip_hop, cinematic, ambient.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| genre | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The behavior is described for each argument combination, including that it returns tables, maps, or a single value with rationale. However, with no annotations, the description does not explicitly state that this is read-only, nor does it mention error behavior or invalid input handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight and front-loaded, clearly stating the purpose in the first sentence and then efficiently covering all argument modes. The role and genre lists are lengthy but necessary and directly support parameter understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description covers the main return shapes for all argument combinations. It lacks explicit error/edge-case details, but for a simple lookup tool the provided information is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description names `genre` and `role` in context and provides complete valid-value lists for both. It does not formally define data types or required/optional relationships beyond the argument-combination examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return reference track-volume dB targets for a genre.' It clearly distinguishes the query nature of this tool from mix/apply/render siblings by focusing on returning reference targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains different argument combinations (no args, genre, genre + role), but does not state when to prefer this tool over alternatives like mix_apply_reference or mix_match_reference. No explicit 'use this when...' guidance or sibling comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_modesB
List the 7 church modes with their characteristic degree, vibe, and typical use.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Optional: one mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. 'List' clearly signals a read-only informational operation, and the response content is described. However, it does not disclose how the optional mode parameter affects the output, nor does it explicitly state that the tool has no side effects on the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-front-loaded sentence with no filler. It states the action, scope, and output contents efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple informational tool, the description covers the main purpose and expected output. It is incomplete only in that it does not describe what happens when the optional mode parameter is supplied, which is relevant for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter as 'Optional: one mode', so baseline is 3. The description adds mild context by implying valid values are among the 7 church modes, but it does not explain the effect of providing mode on the returned list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a clear resource ('the 7 church modes'), and the exact content of the response (characteristic degree, vibe, typical use). It does not explicitly contrast itself with sibling theory_* tools, but the focus on modes is distinctive enough to make its purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this tool over siblings like theory_scale, theory_diatonic_chords, or theory_borrowed_chords. The phrase 'typical use' refers to the content being listed, not to when the agent should invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_rhythmA
Return rhythm/meter info: time signatures, syncopation patterns, swing ratios. Pass time_sig for one specific time signature, syncopation for one pattern, or neither for the full reference.
| Name | Required | Description | Default |
|---|---|---|---|
| time_sig | No | ||
| syncopation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clearly states what the tool returns and how parameter choices affect output, but does not mention edge cases (e.g., both parameters provided) or error handling, which would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and then explains parameter usage. It is concise and easy to parse without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not specify the output format beyond naming the types of info, and it lacks parameter value formats. For a tool with no output schema and minimal parameter metadata, this is insufficient for reliable invocation; more detail is needed on valid inputs and return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only strings with no descriptions. The description says 'time_sig' is 'one specific time signature' and 'syncopation' is 'one pattern', but gives no format examples (e.g., '4/4', pattern names) or allowed values, leaving the agent to guess valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns rhythm/meter info (time signatures, syncopation patterns, swing ratios) and specifies how to customize it (pass time_sig, syncopation, or neither). This fully conveys the tool's purpose and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each parameter (time_sig, syncopation, or neither), giving the agent actionable guidance. It does not explicitly contrast with sibling theory tools, but the purpose is distinctive enough that this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_scaleA
Return the notes of a scale starting at a root. Returns MIDI numbers, note names, and interval pattern. mode is one of: major, natural_minor, harmonic_minor, melodic_minor_asc, ionian, dorian, phrygian, lydian, mixolydian, aeolian, locrian, major_pentatonic, minor_pentatonic, blues, whole_tone, half_whole_dim, whole_half_dim, chromatic, hungarian_minor, phrygian_dominant.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| root | Yes | Note name like 'C', 'F#', 'Bb' | |
| octave | No | C4 = 60 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. The phrasing 'Return the notes' unambiguously indicates a pure query with no side effects, and the tool's read-only nature is implicitly and adequately conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences—and front-loads the primary action and output. Every sentence serves a purpose, and the mode list is the only added detail, which is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description states the nature of the output (MIDI numbers, note names, interval pattern). This is sufficient for an agent to understand what the tool will return and how to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema only describes 'root' and 'octave', the tool description fully covers 'mode' by listing all valid values. Combined, all three parameters are effectively documented, and the description adds critical meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the main action ('Return the notes of a scale starting at a root') and explicitly lists what the tool returns (MIDI numbers, note names, interval pattern). This fully specifies the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit enumeration of valid values for the 'mode' parameter, which is essential usage guidance. It does not explicitly contrast with sibling composition tools, but the self-contained nature and mode list make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_searchA
Search across all theory data by substring. Returns hits across scales, progressions, cadences, sections, forms, genres, heuristics. Useful for fuzzy questions like 'find anything related to lofi' or 'what mentions Phrygian'.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (case-insensitive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly states the action is a search that 'returns hits', making it evident the operation is read-only and non-destructive. While it doesn't explicitly say 'does not modify', the language strongly implies a safe query, which is sufficient for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, starting with the core action and then elaborating on scope and use cases. Every word contributes meaningful information, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and no output schema, the description is fully self-contained. It explains what is searched, what is returned (hits across listed theory domains), and how to use it via examples. No additional information is needed for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single parameter q as a case-insensitive search query, so baseline coverage is high. The description adds value by providing example queries and specifying the substring matching behavior, which clarifies the parameter's intent beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches across all theory data by substring, enumerating the covered domains (scales, progressions, cadences, sections, forms, genres, heuristics). This distinguishes it from the many specific theory tools listed as siblings, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete use cases with examples ('find anything related to lofi', 'what mentions Phrygian'), which effectively illustrate when to employ this general search. It does not explicitly mention alternatives or exclusions, but the examples and 'across all theory data' framing implicitly position it as the fallback for fuzzy queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_sectionA
Return song section info: typical bar counts, role, dynamic level, valid next sections. Without args, lists all 15 section types (intro, verse, chorus, bridge, drop, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses what information is returned but does not explicitly state that the tool is non-destructive or read-only. Since no annotations exist to cover this, the description carries the burden but falls short of fully transparent behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that efficiently convey the tool's primary function and the no-argument behavior. No redundant information or filler words are present, making it well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context to understand what the tool does and its output fields, which is sufficient for a simple library-like tool. However, it does not mention how this fits into a larger workflow or the exact return format, though the listed fields mitigate this omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description implies the optional 'name' parameter via the 'Without args' clause and gives example section names, but it does not explicitly define the parameter's format, accepted values, or default behavior. With zero schema description coverage, more detail would be needed to fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns song section information, specifies the fields (bar counts, role, dynamic level, valid next sections), and explains the no-argument behavior of listing all 15 section types. This makes the tool's purpose unambiguous and distinct from sibling theory tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description explains behavior (listing all vs. specific section), it does not explicitly state when to use this tool over alternatives like theory_search or theory_song_form. No guidance on prerequisites or contextual triggers is provided, leaving the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_song_formA
Return a macro song form layout. Without args, lists all 14 forms. With name, returns the section sequence, applicable genres, and total bar range.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The disclosure covers output content (section sequence, genres, total bar range) and the no-arg listing behavior. It does not mention error handling or side effects, but given no annotations, this is a reasonable transparency level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences clearly organize the no-arg and with-name cases. No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool, the description covers the main outputs and modes. It does not specify invalid-name behavior, but overall it is sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The name parameter is implied to be an optional form identifier, but valid values and format are not specified. The description clarifies optionality but leaves the exact accepted strings ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns macro song form layouts and specifies distinct behaviors for no arguments versus a name argument. This uniquely identifies its function among the theory_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two invocation modes but does not explicitly guide when to choose this tool over related theory tools like theory_section or theory_genre. No alternatives are mentioned, leaving selection to the caller.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_surprise_devicesC
Return the 7 surprise devices (truck_driver_modulation, deceptive_cadence, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'Return' implies a read-only operation, but there are no annotations or explicit statements about side effects. The description does not clarify whether this tool only fetches information or performs any additional action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, brief sentence that is easy to parse. The 'etc.' is slightly imprecise but the overall structure is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or further explanation, the description does not clarify what the returned devices actually are, how they are represented, or what the user should expect. It is too minimal for a standalone tool reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantic burden. The description does not need to explain parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Return the 7 surprise devices.' However, the term 'surprise devices' is undefined, and the parenthetical examples with 'etc.' leave the full set ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool or how it differs from sibling theory tools. The description gives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_velocityA
Convert dynamic markings (ppp/pp/p/mp/mf/f/ff/fff) to MIDI velocity values, or look up all of them. Includes ACCENT_BUMP and GHOST_NOTE_MAX_VEL constants.
| Name | Required | Description | Default |
|---|---|---|---|
| dynamic | No | ppp/pp/p/mp/mf/f/ff/fff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior, and it does state the conversion behavior and the dual mode (single dynamic vs. all). However, it does not disclose edge-case behavior such as invalid input handling, the exact velocity range, or the implications of the ACCENT_BUMP and GHOST_NOTE_MAX_VEL constants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and contains no redundant information. It packs the core behavior, accepted inputs, and supplemental constants into a compact, easily parseable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple conversion/lookup tool, but it omits output details such as the returned velocity values, return format, or how the constants are exposed. Since there is no output schema and no annotations, the agent has to infer some behavior from the tool name and description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single dynamic parameter, and the description reinforces it by listing the accepted values. It does not explicitly state that the parameter is optional or describe the result when omitted, but the 'or look up all of them' phrasing reasonably implies that behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: converting dynamic markings to MIDI velocity values, with an additional lookup-all mode. It also identifies the exact input domain (ppp/pp/p/mp/mf/f/ff/fff) and mentions the included constants, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but provides no guidance on when to use it versus alternatives, such as ensemble_dynamics or theory_dynamics-related tools. It does not mention typical use cases, prerequisites, or situations where this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theory_voice_leading_rulesA
Return the 10 codified voice-leading rules + scoring guidance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool appears to be a read-only informational query with no side effects, and the description reflects this by stating it 'returns' information. Without annotations, the description adequately implies a non-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence. It is directly to the point with no unnecessary words, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description fully conveys what the tool does. It is complete enough for an agent to understand the tool's purpose without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the baseline for no parameters is 4. The description does not need to explain parameter meanings since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'the 10 codified voice-leading rules + scoring guidance.' The verb 'Return' is specific and the resource is well-defined. It does not explicitly distinguish itself from the sibling tool 'voice_lead', but the content is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It simply states what it returns without any context about typical use cases, prerequisites, or differentiating conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_historyA
Return the last N tool calls made in this session for self-audit.
| Name | Required | Description | Default |
|---|---|---|---|
| last_n | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states it returns the last N tool calls, which implies a read-only operation with no side effects. This is transparent and sufficient for a simple audit tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and key scope. It avoids unnecessary details and is directly to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one self-explanatory parameter and no output schema. The description sufficiently explains what the tool returns. The only minor gap is the lack of any mention of the 'last_n' parameter, but its meaning is evident from the name and default value, so the overall context is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only the parameter name, type, and default for 'last_n' with no description. The tool description does not mention the parameter or explain its meaning or constraints. Although the name is self-explanatory, the description adds no semantic guidance, and schema coverage is 0%, so it fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Return the last N tool calls made in this session for self-audit.' It specifies the action (return), the object (tool calls), scope (in this session), and purpose (self-audit). No other sibling tool has a similar purpose, so it is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for self-audit' provides clear context for when to use the tool, implying usage during review or debugging sessions. However, it does not explicitly contrast with alternative tools or state when not to use it, though no sibling tool appears to offer comparable functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_addB
Add a new track. kind ∈ {audio, midi, folder, submix, automation}.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | ||
| kind | No | midi | |
| name | Yes | ||
| volume_db | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It reveals the mutation by saying 'Add', but it does not describe effects on the current project, whether the new track becomes selected, any permissions needed, or what the tool returns. It mostly repeats the kind enum from the schema instead of adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient and places the core action first, though the brevity contributes to missing parameter and behavior detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description is not complete enough. It omits the semantics of required and optional parameters, defaults, side effects, and response behavior. It is not entirely inadequate because it states the core operation and allowed kinds, but significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it does not. It only repeats the kind enum already present in the input schema and says nothing about the required 'name' parameter or the meaning of pan and volume_db.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'Add' and resource 'track', and enumerates the allowed kinds. This clearly distinguishes it from track_remove and from other creation tools like send_add or marker_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating a new track, but it gives no explicit guidance on when to use it versus alternatives such as bus_create, send_add, or clip_add, and it does not mention prerequisites or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_removeB
Delete a track by id.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral disclosure burden. It states that the action is a deletion but does not mention irreversibility, side effects on dependent clips/automation, or whether confirmation is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, but it is slightly too sparse to earn a top score on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive operation, the description is minimally usable, but with no output schema or annotations it leaves the agent without information about return values, permanence, or how to identify the correct track.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only repeats that the parameter is an id without explaining its format, origin, or how to resolve it. It adds no meaningful meaning beyond the property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and resource ('a track') and identifies the key input ('by id'). It clearly distinguishes the operation from sibling tools like track_add and clip_remove.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the verb and resource, but there is no explicit guidance on when to use this tool versus alternatives, no prerequisites, and no mention of how to obtain the track_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoB
Roll back the most recent mutation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry safety and side-effect information. It indicates a state-changing rollback but does not disclose failure behavior, whether the undo itself can be undone, or what happens when there is no mutation history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no redundant words or structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the core behavior is stated, but edge cases such as an empty undo history and the result/return value are not addressed, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and an empty input schema, so there is no parameter information the description needs to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('roll back') and a specific target ('most recent mutation'), making the tool's purpose unambiguous among many sibling mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use undo, such as after an accidental mutation or before using tool_history to inspect recent changes. It also does not contrast with related tools like tool_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voice_leadA
Voice the next chord with minimal voice motion from the previous voicing. Standard SATB-style voice leading: each voice moves the smallest interval to a target chord tone. Returns the new voicing as a list of MIDI pitches (same length as prev_voicing).
| Name | Required | Description | Default |
|---|---|---|---|
| next_chord | Yes | Target chord tones (any octave; will be re-voiced) | |
| prev_voicing | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool performs minimal voice motion, uses SATB-style, and returns a list of MIDI pitches of the same length. However, it does not mention behavior on failure (e.g., if the chord cannot be voiced) or any constraints like voice ranges or octave handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose and key behavior. It is concise with no redundant phrasing, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple function with two parameters, and the description explains the return format. However, it does not cover edge cases such as mismatched voice counts or impossible voicings, and it lacks any guidance on error handling. Given no output schema and no annotations, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes next_chord; prev_voicing is undocumented. The description compensates by clarifying that prev_voicing is the previous voicing and that next_chord is the target chord tones, and it implies both are MIDI pitches via the return description. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Voice' and the resource 'the next chord', with the specific goal of minimal voice motion. It distinguishes itself from siblings like theory_voice_leading_rules by being an actionable transformation rather than a rule reference. The return format is also specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention when it would be appropriate, when not to use it, or any sibling tool that might be preferred for different scenarios (e.g., theory_voice_leading_rules for rules).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_focusA
Bring Waveform's main window to the foreground. Required before desktop_key / desktop_type send keystrokes to the app.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly states the action (foregrounding the main window) and its purpose, which is sufficient for a simple UI-focus operation. It does not mention failure conditions like Waveform not running, but that is a minor gap for this low-risk action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no redundant wording: the first states the action, the second supplies the key prerequisite. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless UI-focus tool, the description covers purpose and prerequisite adequately. It doesn't state what happens if Waveform isn't running, but that can be inferred from sibling waveform_launch and is not essential for a foreground action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so there is no parameter burden for the description. Baseline 4 is appropriate because there are no parameter semantics to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Bring') with a clear resource ('Waveform's main window') and a precise outcome ('to the foreground'). It also connects to sibling desktop_key/desktop_type, distinguishing it from focus-unrelated tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when this tool is required—before desktop_key/desktop_type send keystrokes—which is strong usage guidance. It does not list alternatives or exclusions, but the prerequisite is stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_launchA
Launch Waveform, optionally opening a .tracktionedit file. If Waveform is already running and a file path is provided, opens the file in the existing instance via OS file association (Waveform registers itself as the handler for .tracktionedit on install).
| Name | Required | Description | Default |
|---|---|---|---|
| exe_path | No | Override the auto-detected Waveform binary path | |
| file_path | No | Optional .tracktionedit to open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the existing-instance handling and OS file association mechanism, but it does not mention whether the call blocks until launch completes, what happens if the binary is missing, or what the return value indicates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core behavior is front-loaded and the existing-instance nuance is placed efficiently after the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity launch tool with two optional parameters, the description covers the main launch behavior, file opening, and the already-running case. It omits startup-wait and error behavior, but these are minor gaps given the tool's simplicity and the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaningful context beyond the schema: file_path is opened through OS file association and can target an already-running instance, while exe_path overrides auto-detection. This enriches both parameters beyond their bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Launch Waveform') and the optional resource (a .tracktionedit file). It is clearly distinguishable from sibling tools like waveform_focus, waveform_status, and waveform_quit because it is the only one that starts the application.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to start Waveform or open a project file in it. It doesn't explicitly name alternatives or exclusion conditions, but the existing-instance behavior provides enough guidance for an agent to know when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_locateA
Find the installed Waveform binary on disk. Returns the path. Searches running processes first, then well-known install locations. Run this before launch/focus tools so the rest of the chain has a path to use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the search strategy (running processes first, then well-known install locations), which is useful and not inferable from the schema or name. It does not mention failure behavior when the binary is not found, but the core non-mutating search behavior is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: the action and return value are front-loaded, followed by the search strategy and a clear usage directive. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless discovery tool with no output schema, the description is complete: it states what is found, what is returned, how the search proceeds, and when to call it in the broader workflow. No critical information is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully covers the parameter surface. The baseline for no-parameter tools is 4, and the description adds no misleading or unnecessary parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Find'), names a concrete resource (the installed Waveform binary), and states the output (the path). This clearly distinguishes it from sibling tools like waveform_launch, waveform_focus, and waveform_status, which have different responsibilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to run this tool: before launch/focus tools, so the rest of the chain has a path to use. It gives clear timing guidance but does not enumerate when not to use it or name explicit alternatives beyond the implied launch/focus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_plugin_typesA
Return the friendly-name → Tracktion-type-code map for built-in plugins. These codes are what the .tracktionedit XML expects in .
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It signals a pure read-only informational operation ('Return'), scopes the result to built-in plugins, and gives the exact XML context. It does not discuss side effects, but none are plausible or implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core map return front-loaded and the XML purpose added in the second sentence. Every word contributes information; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema lookup tool, the description fully answers what is returned, its scope, and its intended use. Nothing an agent needs to select or call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter semantics to document. The baseline of 4 applies; the description correctly spends no sentences on nonexistent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names the exact resource: the friendly-name to Tracktion-type-code map for built-in plugins. It also states the downstream purpose (the PLUGIN type attribute in .tracktionedit XML), making it unmistakable what this tool does even among plugin-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the context clear: this is the reference for .tracktionedit XML type codes, so an agent can infer when to use it. It does not explicitly name alternatives or exclusions, but for a zero-parameter lookup tool the implied usage is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_preset_listA
List available factory presets. Without args, returns the plugin category folders (4OSC, Compressor, etc.). With category, lists individual .trkpreset files in that category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Plugin category folder name, e.g. '4OSC' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the two distinct output behaviors and implies a read-only operation (listing). It does not mention error cases like invalid categories, but for a simple listing tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. It leads with the purpose and immediately explains the two modes, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity listing tool with no output schema and no annotations, the description covers the essential information: what it returns in each mode. It could optionally mention exact category names or error behavior, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'category' parameter (100% coverage), so the baseline is 3. The description adds meaningful context by explaining how the parameter changes the output, which elevates it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('factory presets'), and clearly differentiates behavior based on whether the optional 'category' parameter is provided. It distinguishes itself from siblings like 'waveform_preset_read' by focusing on listing rather than reading a specific preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to call without args (to get category folders) and with the 'category' arg (to get individual files). It does not directly mention alternatives or when not to use it, but the two-mode guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_preset_readA
Read a .trkpreset XML and return its element contents — the type, parameters, and any nested elements. Use this to grab a known-good instrument or effect configuration to drop into a generated edit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the .trkpreset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly labels the operation as a read ('Read a .trkpreset XML') and specifies what is returned. It doesn't discuss failure modes or side effects, but the read-only nature is explicit and appropriate for a simple file-read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first defines the operation and output, the second gives a concrete use case. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description tells the agent what will be returned (type, parameters, nested elements) and why to use it. It could add return-format or error-behavior details, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the only parameter, 'path', is already described as 'Absolute path to the .trkpreset'. The description's mention of '.trkpreset XML' reinforces but adds no new parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read'), a specific resource ('.trkpreset XML'), and the exact payload returned (the <PLUGIN> element's type, parameters, and nested elements). This clearly distinguishes it from siblings like waveform_preset_list and waveform_plugin_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool: 'Use this to grab a known-good instrument or effect configuration to drop into a generated edit.' It provides clear context but does not name alternatives or exclusions, 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.
waveform_quitA
Politely close Waveform (sends WM_CLOSE to the main window).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the graceful-close behavior (WM_CLOSE) and 'politely' implies potential user cancellation for unsaved changes. However, it doesn't state error handling (e.g., if Waveform isn't running) or whether it waits for closure confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the purpose and mechanism with zero wasted words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the essential action and method. It is complete enough for an agent to invoke it correctly, though it could mention behavior when Waveform is not running, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty (100% coverage by definition). The description appropriately does not need to explain parameters, aligning with the baseline of 4 for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('close Waveform') and the resource (the application), distinguishing it from sibling tools like waveform_launch, waveform_focus, and waveform_locate. The mechanism (WM_CLOSE) adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It is obvious when to use this tool (to quit Waveform) given the context of sibling tools for launching and focusing. While it doesn't explicitly mention alternatives or exclusions, the purpose is self-evident and the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_settings_dirA
Return the path to Waveform's settings directory (where Waveform.settings, knownPluginList64.settings, Templates/, etc. live). Useful for the planned settings-file editor surface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation ('Return the path') but does not explicitly state that it creates or modifies nothing. This is a minor omission for such a straightforward getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that provides both the action and context without any fluff. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description states the return type (a path) and gives a concrete use case. It does not mention error conditions or installation requirements, but for a simple directory-lookup tool, the provided context is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema fully covers the input. The description adds no parameter-specific meaning, which is appropriate given the absence of parameters. The baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the path to Waveform's settings directory, with a specific resource and verb. It also lists example contents, leaving no ambiguity about what it provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a single use case ('Useful for the planned settings-file editor surface') but does not explicitly mention when not to use it or any alternatives. Since this is a simple utility with no direct siblings, the guidance is adequate but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_statusA
Is Waveform currently running? Returns pid + exe path if so.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the main behavioral trait: the tool only reports current running status and returns pid and exe path when running. It does not state the exact not-running return value, but the 'if so' qualifier is reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the purpose and then specifies the return payload. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status check with no output schema, the description is nearly complete: it states the condition and the returned fields. The only small gap is the exact not-running return value, but this does not seriously impede correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is trivially 100%. The description adds meaning about what the tool produces, which is all that is needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific status-check operation ('Is Waveform currently running?') with a clear resource (Waveform process) and precise output (pid + exe path). It is easily distinguished from sibling tools like waveform_launch, waveform_quit, and waveform_focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing implies a pre-flight check before launching/quitting Waveform, but it never explicitly says when to use it or names alternatives. For a simple status tool this is adequate but leaves the decision to the agent.
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. Dates show when Glama detected each change.
129 tool updates
v0.1.0- First observed
arp_pattern - First observed
arrangement_plan - First observed
audio_clip_import - First observed
audio_compare - First observed
audio_detect_key - First observed
audio_detect_tempo - First observed
audio_loudness_lufs - First observed
audio_spectrum - First observed
automation_add - First observed
automation_clear - First observed
automation_envelope - First observed
automation_list - First observed
aux_return_add - First observed
bassline_generate - First observed
bus_create - First observed
bus_route - First observed
clip_duplicate - First observed
clip_list - First observed
clip_move - First observed
clip_remove - First observed
clip_resize - First observed
clip_set - First observed
compose_and_reload - First observed
compose_djent_real - First observed
compose_djent_track - First observed
compose_from_primitives - First observed
compose_jazz_generative - First observed
compose_lofi_generative - First observed
compose_lofi_track - First observed
compose_rainstorm - First observed
compose_synthwave_generative - First observed
compose_synthwave_track - First observed
compose_variations - First observed
compress_glue - First observed
compress_smash - First observed
desktop_click - First observed
desktop_key - First observed
desktop_move - First observed
desktop_screen_size - First observed
desktop_screenshot - First observed
desktop_type - First observed
desktop_wait - First observed
drum_pattern - First observed
drum_pattern_list - First observed
edit_create - First observed
edit_export_chord_chart - First observed
edit_export_midi - First observed
edit_inspect - First observed
edit_open - First observed
edit_save - First observed
edit_save_stem - First observed
edit_set_tempo - First observed
edit_summary - First observed
edit_transpose - First observed
ensemble_dynamics - First observed
eq_high_pass - First observed
eq_low_pass - First observed
eq_tilt - First observed
flush - First observed
key_set - First observed
loop_drop - First observed
loop_search - First observed
marker_add - First observed
master_chain_apply - First observed
melody_generate - First observed
midi_clip_add - First observed
midi_clip_quantize - First observed
midi_notes_add - First observed
midi_notes_clear - First observed
mix_apply_reference - First observed
mix_match_reference - First observed
mix_set - First observed
motif_develop - First observed
narrate - First observed
plugin_add - First observed
plugin_add_drum_kit - First observed
plugin_add_macro - First observed
plugin_add_modifier - First observed
plugin_add_reverb - First observed
plugin_discover - First observed
plugin_list - First observed
plugin_remove - First observed
plugin_set_param - First observed
plugin_set_vst_state - First observed
plugin_state_capture - First observed
progression_generate - First observed
reference_song_list - First observed
reference_song_lookup - First observed
reference_spectrum_lookup - First observed
render - First observed
render_and_audit - First observed
render_stems - First observed
send_add - First observed
snapshot_list - First observed
snapshot_recall - First observed
snapshot_save - First observed
step_clip_add - First observed
tempo_set - First observed
theory_arrangement_layers - First observed
theory_borrowed_chords - First observed
theory_cadences - First observed
theory_chord_progression - First observed
theory_diatonic_chords - First observed
theory_genre - First observed
theory_heuristics - First observed
theory_mix_balance - First observed
theory_modes - First observed
theory_rhythm - First observed
theory_scale - First observed
theory_search - First observed
theory_section - First observed
theory_song_form - First observed
theory_surprise_devices - First observed
theory_velocity - First observed
theory_voice_leading_rules - First observed
tool_history - First observed
track_add - First observed
track_remove - First observed
undo - First observed
voice_lead - First observed
waveform_focus - First observed
waveform_launch - First observed
waveform_locate - First observed
waveform_plugin_types - First observed
waveform_preset_list - First observed
waveform_preset_read - First observed
waveform_quit - First observed
waveform_settings_dir - First observed
waveform_status
TDQS
Most tools have clearly distinct purposes, but several near-duplicates exist (tempo_set vs edit_set_tempo, compose_lofi_track vs compose_lofi_generative, audio_clip_import vs loop_drop). Some descriptions reference flows (e.g. 'revert→render→analyze' in render_and_audit) that don't map to explicit tools, which could confuse an agent.
The dominant snake_case verb_noun / domain_action pattern is consistent (midi_clip_add, automation_clear, waveform_launch, theory_scale). However, a few outliers break the pattern: tempo_set and key_set lack the domain prefix that edit_set_tempo has for the same concept, and verbs are mixed (list/lookup/get/add/create) without a strict rule.
With 129 tools, this is far beyond the 3-15 well-scoped range and even beyond the 50+ 'extreme' threshold. The breadth spans DAW control, music theory, generation, audio analysis, and desktop automation, but the sheer count makes it unwieldy for an agent to navigate; many tools (e.g. the numerous compose_*_track variants, granular desktop_* actions) could be consolidated behind parameters.
Coverage is broad across edit, clip, MIDI, audio, plugin, automation, rendering, theory, generation, and analysis domains. However, notable gaps exist: there is no way to list tracks (only track_add/remove), no bus listing, no marker add/list management, no plugin chain reorder/bypass, and no way to change time signature after edit creation.
Maintenance
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI agents the ability to listen to and understand music/audio files, enabling semantic analysis, stem separation, lyrics transcription, and signal processing via tool calls.1MIT
- AlicenseAqualityBmaintenanceMCP server for Ableton Live that exposes the Live Object Model to LLMs, enabling natural language control of music production.36995MIT
- AlicenseNot gradedqualityBmaintenanceA music MCP server enabling multi-agent collaboration where AI agents jam together in real-time, with 20 tools, conductor mode, and zero dependencies.8433AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables your LLM to generate and play music through SuperCollider.1853MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jarmstrong158/waveform-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server