openDAW MCP
The openDAW MCP server provides AI agents with programmatic, headless control over a browser-based DAW, enabling end-to-end music production: creating, editing, mixing, and rendering projects. Key capabilities include:
Project & Transport: Play/stop, tempo, time signature, loop, markers, groove, and tuning.
Tracks & Instruments: Create/delete audio, MIDI, synth, and instrument tracks; rename, replace instruments, manage drum pads.
Regions & Notes: Import/place audio and MIDI regions; create, edit, and transform notes; quantize, transpose, invert, reverse; copy, move, split, merge regions.
Effects & Mixing: Add/remove/reorder audio (compressor, reverb, delay, etc.) and MIDI effects; control parameters; volume, pan, mute, solo; aux sends and buses with routing.
Advanced Orchestration: High-level tools for drum patterns, chord progressions, genre tracks, canons, fugues, variations, and mastering chains.
Audio Processing: Fades, gain, stem separation, format conversion, loudness measurement, and LUFS targeting.
System & Integration: Download external audio, agent skills for specific workflows, framework support (LangChain, AutoGen, CrewAI), and project info/debugging.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@openDAW MCPCreate a drum pattern with kick, snare, and hihat, then render to WAV."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
opendaw-mcp
MCP server for agent-native control of openDAW — a browser-based digital audio workstation. Exposes 550+ tools (tracks, notes, effects, mixing, rendering) over the Model Context Protocol for AI agents (Claude, GPT, etc.).
AI agent ── MCP (stdio/SSE) ──▶ Python server ── Playwright ──▶ headless Chromium ──▶ openDAWThe server drives a real openDAW instance in headless Chromium via page.evaluate(). All project state lives in the browser's V8 context. Chromium starts lazily on the first tool call.
Quick start
Requirements: Python 3.10+, Node.js 20+ (only to build the openDAW host once), Chromium via Playwright.
pip install -r requirements.txt
playwright install chromium
# Build the openDAW headless host once — it is a separate, small Vite app
# (NOT the openDAW monorepo, which has no headless-daw directory):
git clone --depth 1 https://github.com/andremichelle/openDAW-headless ../headless-daw
cd ../headless-daw
# its vite.config.ts readFileSync()s these certs at config load, even for `vite build`
openssl req -x509 -newkey rsa:2048 -keyout localhost-key.pem -out localhost.pem -days 365 -nodes -subj "/CN=localhost"
npm install && npm run build
cd ..
# Serve the built host statically on http://localhost:5174 (no Node needed at runtime):
OPENDAW_STATIC_DIR=../headless-daw/dist python scripts/serve_static.py &
python server.py # stdio transportClient config example:
{
"mcpServers": {
"opendaw": {
"command": "python",
"args": ["server.py"],
"env": {
"OPENDAW_URL": "http://localhost:5174",
"OPENDAW_MCP_MODE": "lite"
}
}
}
}Related MCP server: reaper-mcp
Lite mode — recommended for weak machines
Full mode registers 557 tools; every tool schema costs tokens on each agent turn. Lite mode registers a curated set of 39 essential tools — about 92% less schema payload and a faster startup:
Note: Lite mode is now the default. You only need to set
OPENDAW_MCP_MODE=fullif you want all tools.
OPENDAW_MCP_MODE=lite python server.pyLite covers: project state, tracks, instruments, notes, regions, effects, mixing, BPM, markers, scriptable devices, render/export, and core composition helpers (drum pattern, bassline, melody, chord progression, mix preset).
Low-memory tuning
Chromium is launched with low-RAM flags by default: --disable-dev-shm-usage (safe on Docker's 64 MB /dev/shm), --disable-gpu, --mute-audio, a V8 heap cap, and no background networking. Offline rendering is unaffected.
In Docker, OPENDAW_SERVE_MODE=static (the default in the image) replaces the Vite dev server with a zero-dependency Python static server (scripts/serve_static.py, ~10 MB RAM instead of ~300–500 MB for Node + Vite). The image builds the headless host at build time, so no Node.js is needed at runtime.
Variable | Default | Description |
|
| V8 heap cap for the DAW page ( |
| — | Extra Chromium args, space-separated |
| — | Use system Chromium instead of the bundled one |
Environment variables
Note: As of this update,
OPENDAW_MCP_MODE=liteis now the default mode for better token efficiency. UseOPENDAW_MCP_MODE=fullto enable all 500+ tools.
Variable | Default | Description |
|
| URL of the served openDAW host |
|
| Path to headless DAW host directory |
|
| Rendered audio output directory |
|
|
|
|
|
|
|
| Directory served in static mode |
|
|
|
|
| SSE bind address |
| — | Prepended to PATH for Vite lookup (vite mode only) |
Docker
docker build -t opendaw-mcp .
docker run --rm -p 8080:8080 opendaw-mcpThe image builds the openDAW headless host (openDAW-headless) from source, serves its static build via scripts/serve_static.py, and runs the server in SSE mode on :8080. There is no Node.js in the runtime image; give the container at least 1 GB RAM for comfortable rendering.
Development
pip install -e ".[dev]"
python -m pytest tests/ -q
ruff check server.py opendaw_mcpSee ARCHITECTURE.md for internals and TOOL_CATALOG.md for the full tool list.
License
Apache-2.0 — see LICENSE.
Available Tools
515 toolsmcp_opendaw_accent_beatsA
Apply beat-aware velocity accents to notes based on their position.
Unlike apply_velocity_pattern (which cycles by note index), this determines accent strength from each note's beat position — downbeats get strong, off-beats get weak. This is how real drummers and musicians play.
Accent patterns:
"4/4" — beat 1 strong, 2 medium, 3 medium, 4 weak (classic rock/pop)
"backbeat" — beats 1+3 medium, 2+4 strong (rock, funk, soul)
"3/4" — beat 1 strong, 2 weak, 3 medium (waltz)
"6/8" — beats 1+4 strong, others weak (compound duple)
"off_beat" — downbeats weak, off-beats strong (syncopated, reggae skank)
"four_on_floor" — every quarter strong (house, techno)
Notes that fall on exact beat boundaries get accent levels. Notes between beats (e.g. 16th notes) get interpolated: closer to a strong beat → higher.
Use cases:
Make drum patterns feel groovy instead of flat
Add natural dynamics to programmed basslines
Emphasise downbeats in chord stabs
Create backbeat feel on snare/hihat
unit_index: AU index. track_index: Note track index. accent_pattern: Beat accent scheme (4/4, backbeat, 3/4, 6/8, off_beat, four_on_floor). strong_velocity: Velocity for strong beats (0-1). medium_velocity: Velocity for medium beats (0-1). weak_velocity: Velocity for weak beats (0-1). region_index: Region (-1 = first region).
Returns count of notes accented and per-level breakdown.
Example:
Backbeat feel — accent beats 2 and 4
accent_beats(0, 0, "backbeat", strong_velocity=1.0, weak_velocity=0.5)
Four-on-the-floor — every beat loud
accent_beats(0, 0, "four_on_floor", strong_velocity=0.95)
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| weak_velocity | No | ||
| accent_pattern | No | 4/4 | |
| medium_velocity | No | ||
| strong_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains the core behavior (accent strength from beat position), lists all accent patterns with meanings, describes interpolation for off-beat notes, and states the return value ('Returns count of notes accented and per-level breakdown'). It does not explicitly state that existing velocities are overwritten or whether undo is possible, but the behavior is well disclosed for a creative 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 longer than average but earned every sentence: it uses clear headings, bullets for patterns, a compact parameter list, and a concise example. It is front-loaded with the main purpose and never wastes words on tautology or repetition of schema info.
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 7 parameters, no annotations, and an output schema the description still covers all essential aspects: what the tool does, all patterns, interpolation behavior, parameter explanations, use cases, and return value. The example further grounds the abstraction. This is 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?
Schema description coverage is 0%, so the description fully compensates by defining every parameter: unit_index, track_index, accent_pattern with allowed values, strong/medium/weak_velocity with ranges (0-1), and region_index with default meaning. The example additionally demonstrates usage, making parameter semantics exceptionally clear.
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: 'Apply beat-aware velocity accents to notes based on their position.' It clearly differentiates from the sibling tool apply_velocity_pattern by explicitly noting the difference (beat position vs. note index), so the 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?
The description explicitly contrasts with 'apply_velocity_pattern (which cycles by note index)' and provides a use cases list ('Make drum patterns feel groovy', 'Add natural dynamics to programmed basslines', etc.). This gives clear guidance on when to use the tool and names an alternative, satisfying the 'when/when-not/alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_anticipationA
Add anticipation notes before strong-beat notes.
Anticipation is the fourth classic non-chord tone technique: a note that arrives early — on the weak part of the beat before a strong beat — anticipating the pitch of the upcoming note. This creates forward rhythmic motion and is ubiquitous in jazz, pop, and Latin music.
Unlike passing tones (which connect two different pitches stepwise), suspensions (which hold a note into the next chord), and neighbor tones (which ornament a single note), anticipation reaches forward to the next melodic/harmonic goal before the beat arrives.
Structure: [original note shortened] → [anticipation on weak beat] → [strong beat note]
The tool finds notes on strong beats (integer beat positions) and inserts an anticipation note just before them. The anticipation has the same pitch as the target note (or a related scale tone if direction is set), placed on the weak portion of the beat.
Jazz syncopation, pop vocal anticipations, salsa montuno, and funk guitar stabs all rely on this device.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) scale: Scale for anticipation pitch selection ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues", "chromatic") root: Root note for scale (C, C#, D, ... B) anticipation_offset: How early the anticipation arrives, in beats before the strong beat (0.0625-0.5, default 0.25 = sixteenth note before). Smaller = more subtle, larger = more pronounced. anticipation_fraction: Duration of anticipation as fraction of the offset gap (0.1-1.0, default 0.33). Controls how long the anticipation note lasts relative to the gap before the strong beat. anticipation_velocity: Velocity of anticipation note (0-1, default 0.55 — softer than the main note, as it is on a weak beat). direction: Anticipation pitch direction — "auto": same pitch as target note (classic anticipation) "upper": one scale step above target "lower": one scale step below target "approach": scale step approaching target from the direction of the previous note min_duration_beats: Minimum note duration in beats to qualify (0.5-4.0, default 1.5). Ensures the target note is long enough to anticipate meaningfully. cross_track: If >= 0, place anticipations on this track index instead of source track (preserves original notes).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| direction | No | auto | |
| unit_index | Yes | ||
| cross_track | No | ||
| track_index | Yes | ||
| region_index | No | ||
| min_duration_beats | No | ||
| anticipation_offset | No | ||
| anticipation_fraction | No | ||
| anticipation_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the algorithm (finds notes on strong beats, inserts anticipation before them), the structural transformation '[original note shortened] → [anticipation on weak beat] → [strong beat note]', and cross_track behavior that preserves original notes when set. This exceeds typical 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 long but appropriately so for an 11-parameter tool. It is logically structured: definition, comparison, structure, operational summary, genres, and parameter details. Every sentence adds value 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 description covers the musical concept, algorithm behavior, all parameters, genre applicability, and cross-track options. An output schema exists, so not describing return values is acceptable. This is a complete, self-sufficient 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?
Schema coverage is 0%, yet the description compensates thoroughly by documenting all 11 parameters with ranges, defaults, and musical rationale, e.g., anticipation_offset '0.0625-0.5, default 0.25 = sixteenth note before' and direction options with meanings. No parameter is left 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 opening line 'Add anticipation notes before strong-beat notes' is a specific verb+resource statement. The description further distinguishes this from sibling tools like passing tones, suspensions, and neighbor tones, making it unmistakably the anticipation ornament tool.
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 contrasts with 'passing tones (which connect two different pitches stepwise), suspensions (which hold a note into the next chord), and neighbor tones (which ornament a single note)' and names applicable genres (jazz, pop, Latin), providing clear when-to-use context and differentiation from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_automationA
Add parameter automation to an effect on an audio unit.
Creates an automation track + value clip + value events. Automation points control the parameter over time.
unit_index: Audio unit index. effect_index: Effect position in the chain. parameter_name: Parameter to automate (e.g. "cutoff", "volume", "mix"). points: JSON array of [position_beats, value_0_to_1] pairs. Example: "[[0, 0.5], [4, 1.0], [8, 0.5]]"
The parameter must be automatable (Field<Pointers.Automation>).
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It does disclose that the tool creates an automation track, value clip, and value events, and states the prerequisite that the parameter must be automatable. However, it does not mention potential side effects such as overwriting existing automation, whether the operation is destructive, or error behavior if the parameter is not automatable.
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. It leads with a one-sentence purpose, then a brief behavioral note, followed by a clear bulleted parameter list and a closing constraint. No redundant information; 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 tool with 4 params and no schema descriptions, the description is thorough: it covers all parameters, provides an example, states the automatable requirement, and mentions what it creates. It doesn't elaborate on return values, but an output schema exists, so that is acceptable. Minor gaps are not explaining how to discover valid effect_index/parameter_name values, but sibling tools cover that.
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 fully compensate. It does so admirably: each parameter is individually explained (unit_index, effect_index, parameter_name, points), including the expected format for 'points' with an explicit JSON example. This adds meaning well 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 opens with a specific verb + resource: 'Add parameter automation to an effect on an audio unit.' It further clarifies by listing what is created (automation track + value clip + value events), distinguishing it from sibling tools like add_instrument_automation and create_automation_event by specifying the target is an effect on an audio unit.
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 implies when to use this tool: when you want to automate a parameter on an effect. It does not explicitly name alternatives or state when not to use it, but the context is strong and the 'to an effect' scoping implicitly separates it from instrument automation or individual event creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_bass_chainA
Add a ready-made bass processing chain to an audio unit — EQ → Compressor (+ optional Waveshaper drive).
One call replaces 2-3 individual add_effect + set_effect_parameter calls. Designed for bass tracks but works on any low-frequency content.
unit_index: Target audio unit (the bass track). style: Preset character:
"deep" — sub boost, slow comp, thick low end (hip-hop, trap, 808s)
"round" — low-mid warmth, gentle comp (R&B, jazz, soul)
"driven" — low cut, mid boost, comp + drive (rock, punk bass)
"clean" — transparent, minimal coloration (electronic, house)
"tight" — fast comp, controlled, punchy (disco, funk, pop)
drive_amount: Waveshaper saturation (0-1, default 0 = off). Use 0.2-0.5 for grit.
Creates: Revamp EQ → Compressor (→ Waveshaper) on the target AU. Returns effect indices and parameter values set.
Example:
Deep sub bass chain
add_bass_chain(0)
Driven rock bass with grit
add_bass_chain(0, style="driven", drive_amount=0.4)
Clean electronic bass
add_bass_chain(0, style="clean")
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | deep | |
| unit_index | No | ||
| drive_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains what it creates (Revamp EQ → Compressor → Waveshaper), returns effect indices and parameter values, and describes the drive_amount range. However, it doesn't disclose whether it appends to or replaces existing effects on the target unit, which is a notable 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 well-structured and appropriately sized: it starts with the core function, then covers parameters in a clear list, states what it creates and returns, and finishes with practical examples. Every sentence adds value with no 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?
Given the tool's complexity and the presence of an output schema, the description covers all essential aspects: purpose, parameters, return values, examples, and relationship to alternatives. It is complete enough for an agent to select and 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?
Schema has no descriptions (0% coverage), but the tool description fully compensates: unit_index is explained, style lists all five presets with musical characteristics, and drive_amount includes range, default, and usage guidance. This adds substantial 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?
The description clearly states the tool adds a ready-made bass processing chain (EQ → Compressor + optional Waveshaper) to an audio unit. It uses a specific verb and resource, and the explicit chain structure distinguishes it from sibling tools like add_effect or add_mastering_chain.
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 'One call replaces 2-3 individual add_effect + set_effect_parameter calls,' naming the alternative. It also notes it's designed for bass but works on any low-frequency content, giving clear context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_chord_tensionA
Add a tension/extension note to an existing chord — jazz harmony.
Adds an extension note (9th, 11th, 13th, or alterations) to a chord already on the timeline. This is how triads become jazz chords — stack a 9th on a C major triad and it becomes Cmaj9, add a b13 to a G7 and it becomes G7b13. The extension is calculated from the chord root, so you don't need to know the exact pitch.
extension: The tension note to add:
"9" — major 9th (2 semitones above root, +14 from root). Adds color and warmth. C → D. The most common jazz extension.
"b9" — minor 9th (1 semitone above root, +13). Dark, tense. Dominant chords in minor keys, flamenco, film scores. C → Db.
"#9" — augmented 9th (3 semitones, +15). The Hendrix chord sound. Bluesy, gritty. C → D#.
"11" — perfect 11th (5 semitones above root, +17). Suspended, open. C → F. Can clash with 3rd — use carefully.
"#11" — augmented 11th (6 semitones, +18). Lydian sound. Dreamy, floating. C → F#. Common in modal jazz.
"13" — major 13th (9 semitones above root, +21). Full, rich. The ultimate jazz extension. C → A. Adds completeness.
"b13" — minor 13th (8 semitones, +20). Dark, dramatic. Minor key dominants. C → Ab. Spanish/orchestral feel.
chord_position: Beat position of the chord (finds root = lowest note). octave: Which octave to place the extension in (3-7, default 5). Higher = more color, lower = more grounded. velocity: Velocity of the added note (0-1, default 0.6 = subtle).
Returns root pitch, extension pitch, extension name, chord size.
Example:
Add 9th to first chord — Cmaj → Cmaj9
add_chord_tension(0, 2, 0, 0.0, extension="9")
Add b13 for dark dominant — G7 → G7b13
add_chord_tension(0, 2, 0, 4.0, extension="b13")
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| velocity | No | ||
| extension | No | 9 | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| chord_position | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the extension is calculated from the chord root, how the chord is found (root = lowest note), and includes return values. However, it omits error/failure behavior and whether the operation is reversible, leaving some uncertainty for a 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 long but well-structured: a summary, detailed extension list with musical rationales, parameter specs, return statement, and a concrete example. Each section adds value, and the content is front-loaded with the core purpose. Slight verbosity in the extension list is justified by its usefulness.
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 fully addresses the musical logic and returns, and includes an example call. However, it misses explanation of the three locator parameters (unit/track/region indices) and does not cover failure conditions or how the user obtains these indices. Given the tool's complexity and absent 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?
Schema coverage is 0%, so the description must fully explain parameters. It does well for extension, chord_position, octave, and velocity, but completely omits unit_index, track_index, and region_index — three required parameters. These are essential for targeting the chord, and the schema only lists them as titles with no additional 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 opening sentence 'Add a tension/extension note to an existing chord — jazz harmony' clearly identifies the action and target resource. It further explains the purpose ('This is how triads become jazz chords') and is distinct from sibling tools like add_suspension or add_passing_tones.
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 clear usage context with per-extension guidance on musical character and appropriate scenarios ('The most common jazz extension', 'Can clash with 3rd — use carefully'). It does not explicitly name alternatives or state when not to use, but the contextual guidance is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_drum_chainA
Add a ready-made drum processing chain to an audio unit — Gate → EQ → Compressor (+ optional Reverb).
One call replaces 3-4 individual add_effect + set_effect_parameter calls. Designed for drum tracks but works on any rhythmic content.
unit_index: Target audio unit (the drum track). style: Preset character:
"punchy" — tight gate, bright EQ, fast comp (pop, rock drums)
"deep" — loose gate, sub boost, slow comp (hip-hop, trap, 808s)
"crisp" — bright EQ, fast attack comp (techno, house, electronic)
"roomy" — medium gate, warm EQ, lush reverb (rock, live drums)
"tight" — transparent, just cleanup (jazz, acoustic, lofi)
reverb_amount: Reverb wet/dry (0-1, default 0 = off). Use 0.1-0.3 for room sound.
Creates: Gate → Revamp EQ → Compressor (→ Reverb) on the target AU. Returns effect indices and parameter values set.
Example:
Punchy drum chain on track 0
add_drum_chain(0)
Deep 808 chain
add_drum_chain(0, style="deep")
Roomy rock drums with reverb
add_drum_chain(0, style="roomy", reverb_amount=0.25)
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | punchy | |
| unit_index | No | ||
| reverb_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and does a good job by detailing the exact signal chain created ('Gate → Revamp EQ → Compressor (→ Reverb)'), the return value ('Returns effect indices and parameter values set'), and the optional reverb behavior. It does not disclose edge cases like invalid unit_index or whether existing effects are preserved, but the level of disclosure is substantially above average.
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 well-structured and front-loaded with the core purpose. It uses clear sections for parameters, chain construction, and examples. Every sentence contributes value—no filler—and the code examples at the end effectively illustrate usage patterns.
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 an output schema and moderate complexity, the description is exceptionally complete: it covers the signal chain, all parameters, presets, return behavior, and provides three usage examples. The only minor gap is lack of error handling details, but that does not detract from overall completeness given the rich 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 has 0% description coverage, so the description fully compensates by documenting all three parameters: unit_index as 'Target audio unit', style with five named presets and musical character, and reverb_amount with range and suggested values. It adds semantic richness beyond bare type information, including genre examples for each style.
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 with a specific verb and resource: 'Add a ready-made drum processing chain to an audio unit — Gate → EQ → Compressor (+ optional Reverb).' It also distinguishes itself from sibling tools by explicitly mentioning that one call replaces 3-4 individual add_effect + set_effect_parameter calls, making it unique among effect-related 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 provides clear when-to-use context: designed for drum tracks but works on any rhythmic content, and an explicit efficiency advantage over manual effect chaining. However, it does not mention exclusions or alternatives like add_vocal_chain or add_mastering_chain, so usage guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_effectA
Add an audio effect to an audio unit's effect chain.
effect_type: One of the audio effect names from mcp_opendaw_list_effects: Compressor, Crusher, DattorroReverb, Delay, Fold, Gate, Maximizer, NeuralAmp (Tone3000), Reverb, Revamp, StereoTool, Tidal, Vocoder, Waveshaper, Werkstatt
Returns effect_index — use it with mcp_opendaw_set_effect_parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 only states the basic action and return value, but does not disclose preconditions (e.g., how to determine unit_index), side effects (e.g., effect chain order, default state), failure modes, or reversibility. For a mutation tool, this is insufficient.
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 action. The effect_type list and return-value hint are useful, but there is minor redundancy in listing effect types after already naming the source tool. Overall, it is well-structured with no 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 tool is simple and the description provides valid effect types and the return value, as well as a connection to parameter-setting tools. However, it omits guidance on how to obtain unit_index and any behavioral caveats. The presence of an output schema and the description's return-value mention reduce the need for further return details, but the unit_index gap keeps it from being 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 does thoroughly explain effect_type with a full list of valid values and a cross-reference to mcp_opendaw_list_effects. However, unit_index—a required integer—receives no explanation at all, leaving a critical gap for the agent.
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 and resource: 'Add an audio effect to an audio unit's effect chain.' It distinguishes from related tools like mcp_opendaw_add_midi_effect by explicitly targeting audio effects. The enumeration of valid effect types further clarifies the exact scope of the tool.
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 references mcp_opendaw_list_effects for obtaining valid effect_type values and mentions using the returned effect_index with mcp_opendaw_set_effect_parameter, implying a clear workflow. However, it does not explicitly state when not to use this tool (e.g., for MIDI effects) or mention alternative tools like mcp_opendaw_remove_effect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_instrument_automationA
Automate a parameter on the instrument connected to an audio unit.
Works with any automatable instrument field: Vaporisateur (cutoff, resonance, volume, etc), Playfield sample mute, Tape flutter/wow, Nano volume/release, and more.
For Playfield sample-level params (mute, volume, pan, etc), set sample_index to the sample slot index (0-based). For top-level instrument params, leave sample_index as -1.
unit_index: Audio unit index containing the instrument. parameter_name: Field name to automate (e.g. "cutoff", "mute", "flutter"). points: JSON array of [position_beats, value] pairs. Example: "[[0, 0.5], [4, 1.0]]" sample_index: For Playfield, which sample slot to target (-1 = top-level instrument field).
Returns automation track info and number of events created.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| unit_index | Yes | ||
| sample_index | No | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It adds valuable context about sample_level vs top-level parameters and the return value, but it does not mention potential side effects (e.g., whether existing automation is overwritten) or any required permissions, leaving meaningful 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?
The description is front-loaded with the purpose, then succinctly covers supported fields, parameter semantics, and return value. Every sentence provides useful information without unnecessary repetition or 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?
Given the moderate complexity (4 parameters, conditional behavior) and lack of annotations, the description covers the core workflow effectively and even notes the return info. It could optionally mention prerequisites like instrument existence, but the presence of an output schema fills some 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?
The schema has no per-property descriptions (0% coverage), so the description's explanations of unit_index, parameter_name, points (including a JSON example), and sample_index (with default value -1) add essential meaning beyond the schema's raw types and 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 opens with a specific verb+resource ('Automate a parameter on the instrument connected to an audio unit') and provides concrete examples of target instruments and fields (Vaporisateur cutoff, Playfield mute, etc.), clearly distinguishing it from sibling automation tools like add_automation or create_automation_event.
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 establishes the context (automating instrument parameters on an audio unit) and explains the conditional usage of sample_index, but it does not explicitly name alternative tools or state when not to use this tool, stopping 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.
mcp_opendaw_add_instrument_chainA
Add a ready-made instrument processing chain — EQ → Compressor → Reverb (+ optional Delay).
Universal chain for guitars, keys, synth leads, strings, pads — any melodic/harmonic instrument. One call replaces 3-4 individual add_effect + set_effect_parameter calls.
unit_index: Target audio unit (the instrument track). style: Preset character:
"clean" — transparent EQ, light comp, subtle reverb (keys, piano, clean guitar)
"warm" — low-mid warmth, tube-like comp (jazz guitar, Rhodes, warm synths)
"bright" — air boost, present mids, short reverb (lead guitar, synth lead, pop keys)
"ambient" — wide EQ, minimal comp, lush reverb (pads, strings, atmospheres)
"driven" — mid crunch, drive comp, room reverb (rock guitar, aggressive synths)
reverb_amount: Reverb wet/dry (0-1, default 0.15 = subtle). delay_amount: Optional delay wet/dry (0-1, default 0 = off).
Creates: Revamp EQ → Compressor → Reverb (→ Delay) on the target AU. Returns effect indices and parameter values set.
Example:
Clean keys chain
add_instrument_chain(0)
Ambient pad with lush reverb
add_instrument_chain(0, style="ambient", reverb_amount=0.4)
Driven rock guitar
add_instrument_chain(0, style="driven", reverb_amount=0.2)
Synth lead with delay
add_instrument_chain(0, style="bright", delay_amount=0.2)
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | clean | |
| unit_index | No | ||
| delay_amount | No | ||
| reverb_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses the exact effect chain created ('Revamp EQ → Compressor → Reverb (→ Delay)') and the return value ('Returns effect indices and parameter values set'). However, it doesn't state whether the chain is appended to existing effects or replaces them, nor does it mention error conditions (e.g., non-instrument units). This is a minor transparency 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 a clear purpose, then uses bullet-style parameter explanations and illustrative examples. Though relatively long, every sentence adds functional value—no fluff or repetition. The structure makes the information 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 tool has moderate complexity (4 parameters, 5 style presets). The description covers purpose, parameter semantics, style selection, defaults, the exact effect chain, and return values. With an output schema present, this is sufficient for an agent to invoke the tool correctly across diverse use 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?
Schema descriptions are entirely absent (0% coverage), so the description carries full responsibility for parameter meaning. It thoroughly explains unit_index, style (with five detailed preset definitions), reverb_amount (0-1, default), and delay_amount (0-1, default). The examples further illustrate parameter combinations, adding value beyond the empty 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 first sentence clearly states the action ('Add a ready-made instrument processing chain') and the exact resource ('EQ → Compressor → Reverb (+ optional Delay)'). It also specifies the target usage ('guitars, keys, synth leads, strings, pads'), distinguishing it from related chain tools like add_drum_chain or add_bass_chain.
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 frames when to use this tool: 'One call replaces 3-4 individual add_effect + set_effect_parameter calls.' It also gives concrete style recommendations for different instruments, making the use case clear. Although it doesn't name sibling alternatives directly, it defines its scope as 'any melodic/harmonic instrument,' which implies exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_markerA
Add a timeline marker at a position.
Markers label song structure points (Verse, Chorus, Bridge, etc.). Visible on the timeline ruler.
position_beats: Position in beats. label: Marker text (e.g. "Verse 1", "Chorus", "Drop").
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description clearly states the mutation (adds a marker) and notes that markers are visible on the ruler. However, it does not disclose behavior around duplicate positions, validation, or success/error return, which would be valuable but is not critical for this simple 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 compact and well-structured: a one-sentence action summary, a brief explanatory note about markers, and parameter definitions. No filler or redundant content; every line 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?
For a simple two-parameter add tool, the description covers purpose, parameter semantics, and basic visibility behavior. An output schema exists, so the omission of return details is acceptable. It could mention duplicate handling or prerequisites, but overall it's 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?
The input schema has 0% description coverage, but the description compensates fully by documenting both parameters: position_beats (Position in beats) and label (Marker text with examples). This is exactly the compensation needed when schema descriptions are absent.
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 'Add a timeline marker at a position', a specific verb + resource + location. It clearly distinguishes this from sibling tools like list_markers, delete_marker, and set_marker_label by stating it performs an add 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?
The description explains that markers label song structure points and are visible on the timeline ruler, giving clear context for when to use this tool. It doesn't explicitly mention alternatives or exclusions, but the intended use case is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_mastering_chainA
Add a ready-made mastering chain to the output bus — EQ + compressor + maximizer in one call.
target_lufs: Target loudness (-14 = Spotify, -16 = Apple, -10 = loud). style: Preset character:
"balanced" — transparent EQ, gentle comp, clean limiter
"warm" — low shelf boost, slower comp attack, soft saturation
"loud" — aggressive comp, fast release, hard limit
"transparent" — minimal EQ, light comp, true peak limiting
Creates: Revamp EQ → Compressor → Maximizer on the output/master AU. Returns the effect indices and parameter values set.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | balanced | |
| target_lufs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 clearly state that the tool creates a chain (Revamp EQ → Compressor → Maximizer) on the output/master AU and returns effect indices and parameter values. However, it does not disclose whether this addition replaces or coexists with existing effects on the master bus, nor does it mention any destructive side effects or undo behavior—important for a mutating 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 front-loads the core purpose in the first sentence, then uses bulleted lists efficiently for parameter details. The final 'Creates' and 'Returns' lines summarize the behavior without redundancy. Every sentence adds value, and the structure is 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 output schema exists and the description states what is returned, so that area is covered. It clearly defines the target (output bus), the exact effect chain, and the meaning of both parameters. The missing piece is side-effect transparency (whether existing master effects are overwritten), which is not specified but might be inferred from 'add.' Given the tool's moderate complexity, the description is largely complete but leaves this one behavioral 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 descriptions are empty (0% coverage), but the description fully compensates by explaining both parameters. target_lufs is given concrete examples (-14 = Spotify, -16 = Apple, -10 = loud), and style is documented with four distinct preset names and their sonic characteristics. This provides far more semantic meaning than 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 opens with a precise action: 'Add a ready-made mastering chain to the output bus — EQ + compressor + maximizer in one call.' It specifies the resource (mastering chain), the target (output bus), and the composition (EQ + compressor + maximizer), clearly distinguishing it from sibling tools like add_effect or add_vocal_chain.
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 for when to use this tool: when the user wants a ready-made mastering chain on the output bus, saving the need for multiple effect-adding steps. It does not explicitly compare with alternatives like manually adding effects or using apply_full_mix, but the 'in one call' phrasing implies a preferred workflow. No exclusions are stated, which prevents the score from reaching 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_midi_effectA
Add a MIDI effect to an audio unit's MIDI effect chain.
MIDI effects process note data before the instrument. They are chained on au.midiEffects (separate from audio effects on au.audioEffects).
effect_type: One of: Arpeggio, Pitch, Velocity, Zeitgeist, Spielwerk
unit_index: Audio unit index (must be an instrument AU, not output). Returns effect_index in the MIDI chain.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral context. It discloses the chain location, the processing role of MIDI effects, the allowed effect_type values, the instrument-AU requirement, and the return value. It does not cover failure modes, but for an additive operation this is a strong set of disclosures.
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: first sentence states the action, then provides context, parameter details, and return value. 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 relatively simple with two parameters, and the description covers both parameters, the conceptual distinction, and the return value. It is sufficiently complete for an agent to invoke the tool correctly, though it could optionally mention the effect's position in the chain or error handling.
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, so the description fully compensates by explaining both parameters: effect_type lists the allowed values and unit_index clarifies it must be an instrument AU. It also adds semantic meaning by describing what MIDI effects do, which is absent from 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 begins with 'Add a MIDI effect to an audio unit's MIDI effect chain,' which is a specific verb and resource. It distinguishes MIDI effects from audio effects by referencing au.midiEffects vs au.audioEffects, setting it apart from sibling tools like add_effect.
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 that MIDI effects process note data before the instrument and are chained separately from audio effects, providing clear context for when to use this tool. It also notes that unit_index must be an instrument AU, not an output, acting as a prerequisite. However, it does not explicitly name alternatives 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.
mcp_opendaw_add_modular_moduleA
Add a module to a Modular device.
au_index: Audio unit index. effect_index: Effect index within the AU. module_type: One of "gain", "delay", "multiplier", "audio-input", "audio-output". label: Optional label for the module. x, y: Position in the modular editor grid.
Returns the new module's index and info.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| label | No | ||
| au_index | Yes | ||
| module_type | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 explains parameters and return value, but does not disclose side effects, error cases, or whether the operation is destructive. 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 a compact bulleted list with no filler. Every line provides necessary parameter or return information, earning 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?
All parameters and the return value are covered, and an output schema exists. However, missing prerequisite context (e.g., device must already exist, index validity) and edge-case behavior make it 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%, and the description compensates fully by explaining every parameter, including enumerating valid module_type values and clarifying x/y as grid positions.
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 'Add a module to a Modular device' with a specific verb and resource. It distinguishes from sibling modular tools like list, connect, remove, and set param by focusing on the creation action.
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, such as list_modular_modules or connect_modular_modules. No prerequisites are mentioned, like needing an existing Modular device or valid AU/effect indices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_neighbor_tonesA
Add upper/lower neighbor tones to embellish existing notes.
A neighbor tone is a non-chord tone that steps away from the main note by one scale step (up or down) and then returns. Unlike passing tones which connect two different notes, neighbor tones ornament a single sustained note.
Structure: [main first part] → [neighbor (dissonance)] → [main return]
The original note is split into three parts:
First part: original pitch from start to neighbor_offset
Neighbor: one scale step away, duration = neighbor_fraction of original
Return: original pitch for the remainder
This is the third of the four classic non-chord tone techniques: passing tones, suspensions, neighbor tones, and anticipation.
Bach ornaments, jazz ballad fills, country chicken pickin', and classical cadenzas all use neighbor tones extensively.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) scale: Scale for diatonic neighbor step ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues", "chromatic") root: Root note for scale (C, C#, D, ... B) direction: Neighbor direction — "upper": step up from main note (most common) "lower": step down from main note "alternating": alternate upper/lower per note neighbor_fraction: Duration of neighbor as fraction of original note (0.1-0.5, default 0.25 = quarter of original). Smaller values create subtle ornaments, larger create more prominent embellishments. neighbor_offset: Position of neighbor within the note (0.1-0.9, default 0.5 = middle). 0.15 = near start, 0.5 = middle, 0.85 = near end. neighbor_velocity: Velocity of neighbor note (0-1, default 0.6 — softer than the main note, as is traditional for ornaments). min_duration_beats: Minimum note duration in beats to embellish (0.5-4.0, default 1.0). Short notes are skipped — ornaments need room to breathe. cross_track: If >= 0, place neighbors on this track index instead of source track (preserves original notes).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| direction | No | upper | |
| unit_index | Yes | ||
| cross_track | No | ||
| track_index | Yes | ||
| region_index | No | ||
| neighbor_offset | No | ||
| neighbor_fraction | No | ||
| neighbor_velocity | No | ||
| min_duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency. It clearly explains the three-part note splitting structure, parameter effects (e.g., neighbor_offset position, min_duration_beats skipping short notes), and cross_track behavior that preserves original notes. However, it does not explicitly state the destructive/reversible nature of the default operation on the source 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 well-structured and front-loaded: a one-sentence summary, definition, structural breakdown, context, and then a thorough Args list. Every sentence serves a purpose—the music theory context and usage examples help the agent select the tool, while the Args section adds essential semantics not found in the schema. No redundancy or 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?
This is a complex 11-parameter tool with no annotations or schema descriptions. The description covers the algorithm, all parameter semantics, behavioral nuances (skipping short notes, cross-track placement), and musical context. Since an output schema exists, the lack of return-value explanation is acceptable. The description is complete enough for correct selection and 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 provides no parameter descriptions (0% coverage), but the description's 'Args' section compensates exceptionally well. Every parameter is explained with ranges, defaults, and musical reasoning (e.g., neighbor_velocity: 'default 0.6 — softer than the main note, as is traditional for ornaments'). This is more than sufficient for an agent to understand each parameter's 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 opens with a specific verb+resource: 'Add upper/lower neighbor tones to embellish existing notes.' It further distinguishes itself from similar tools by explaining the difference from passing tones and positioning it as the third of four non-chord tone techniques, making it clear which sibling tool this is.
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 contrasts with passing tones ('Unlike passing tones which connect two different notes, neighbor tones ornament a single sustained note'), giving the agent a clear decision point among ornamentation tools. It also mentions musical styles (Bach, jazz, country) but does not explicitly state when not to use this tool or provide a direct comparison to say add_suspension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_passing_tonesA
Add passing tones between existing notes for smoother melodic lines.
Inserting diatonic passing tones in gaps where consecutive notes have an interval larger than a 2nd. The passing tone is placed on the weak part of the beat, connecting the two notes stepwise through the scale.
This is a fundamental counterpoint technique — makes large melodic leaps sound smoother by filling them with scale steps. Bach inventions, jazz walking lines, and pop vocal melismas all use passing tones.
Passing tones are only added when:
The interval between consecutive notes is > 2 semitones
There is enough time gap between notes (at least 1/8 note)
The interval does not exceed max_interval semitones
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) scale: Scale for diatonic passing tones ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues", "chromatic") root: Root note for scale (C, C#, D, ... B) max_interval: Maximum interval (semitones) to fill with passing tones (3-12, default 7 = perfect 5th). Intervals larger than this are left as leaps. velocity: Velocity of passing tones (0-1, default 0.6 — slightly quieter than melodic notes, as is traditional) duration_fraction: Duration of passing tones as fraction of the gap between notes (0.25-1.0, default 0.5) direction: Passing tone direction — "auto": choose direction that fits scale better "ascending": always step up from lower to higher note "descending": always step down from higher to lower note "nearest": use nearest scale tone to midpoint cross_track: If >= 0, place passing tones on this track index instead of source track (preserves original melody)
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| velocity | No | ||
| direction | No | auto | |
| unit_index | Yes | ||
| cross_track | No | ||
| track_index | Yes | ||
| max_interval | No | ||
| region_index | No | ||
| duration_fraction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description fully carries the burden of behavioral disclosure. It explains the placement on weak beats, the direction options, the cross_track behavior (placing on another track to preserve original melody), and the default velocity being quieter. It does not explicitly state whether notes are inserted or modified in place or if it's reversible, but the cross_track option implies a non-destructive path. The level of detail significantly exceeds minimal 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 longer than average but well-structured: a lead sentence, an explanatory paragraph, a bulleted condition list, and a detailed Args section. Every part contributes to understanding. The musical examples (Bach, jazz, pop) add context but could be trimmed without losing core meaning. It is front-loaded with the essential purpose and maintains focus throughout.
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 10 parameters, no annotations, and a schema lacking descriptions, this description is exceptionally complete. It covers the musical goal, the exact conditions for operation, every parameter with meaning and defaults, and a notable behavioral option (cross_track). The presence of an output schema is not critical here since this is a mutation tool; the description fully equips an agent to decide when and how to use 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 input schema has 0% description coverage, but the description's Args section provides comprehensive semantics for all 10 parameters. It explains units, ranges, defaults, and even musical rationale (e.g., velocity default 0.6 'slightly quieter than melodic notes, as is traditional'). This goes far beyond the minimal schema types and titles, giving the agent everything needed to invoke the tool 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 opens with a clear, specific statement: 'Add passing tones between existing notes for smoother melodic lines.' It names the exact resource (passing tones between existing notes) and verb (add), and distinguishes itself from sibling tools like add_anticipation or add_neighbor_tones by focusing on interval-filling with scale steps. The musical context and conditions further clarify its unique 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 concrete conditions for when the tool is applicable (interval > 2 semitones, enough time gap, not exceeding max_interval) and gives musical examples (Bach, jazz, pop). It does not explicitly mention alternatives or when not to use it, but the conditions strongly imply the appropriate context. While not as explicit as naming alternative tools, it offers clear usage guidance beyond a vague 'use this for counterpoint.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_signature_changeA
Add a time signature change at a specific position in the track.
Unlike set_time_signature (which sets the global default), this creates a SignatureEventBox on the timeline's signature track, allowing time signature changes mid-track (e.g. 4/4 → 3/4 → 4/4).
position_beats: Position in beats where the change occurs. numerator: Number of beats per bar (top number). denominator: Note value per beat (bottom number: 4=quarter, 8=eighth).
Returns the created signature event details.
| Name | Required | Description | Default |
|---|---|---|---|
| numerator | Yes | ||
| denominator | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains the underlying mechanism (creating a SignatureEventBox on the signature track) and clarifies that this is different from setting a global default. However, it doesn't disclose whether this operation mutates existing events, whether there are constraints (e.g., position must be positive, denominator limited to powers of 2), or potential side effects on adjacent measures. The description adds some behavioral context but leaves these 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?
The description is well-structured: a one-sentence summary, a paragraph contrasting with the sibling tool, and a compact bullet-style list of parameters. Every sentence earns its place, and the key info is front-loaded. No fluff or repetition of schema fields.
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 3 required parameters, an output schema, and no annotations. The description covers the core purpose, the key distinction from the sibling tool, and all parameters. It also mentions the return value ('Returns the created signature event details'), and since an output schema exists, it doesn't need to detail the exact structure. Minor gaps exist (e.g., no mention of validation, edge cases, or interaction with existing signature events), but given the tool's moderate complexity and the output schema, the description 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%, so the description must compensate, and it does. It explains each parameter in plain language: position_beats is 'Position in beats where the change occurs,' numerator is 'Number of beats per bar (top number),' and denominator is 'Note value per beat (bottom number: 4=quarter, 8=eighth).' This adds musical meaning beyond the raw schema, though it could go further with acceptable ranges (e.g., numerator 1-32, denominator powers of 2).
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: 'Add a time signature change at a specific position in the track.' It specifies the verb (add), the resource (signature change), and the location (position in the track). It also explicitly distinguishes itself from set_time_signature by noting that it creates a SignatureEventBox on the timeline's signature track rather than setting the global default, which differentiates it from its sibling tool.
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 contrasts this tool with set_time_signature: 'Unlike set_time_signature (which sets the global default), this creates a SignatureEventBox on the timeline's signature track, allowing time signature changes mid-track.' This gives clear when-to-use vs. when-not-to-use guidance. It also provides a concrete example (4/4 → 3/4 → 4/4) illustrating the intended mid-track use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_suspensionA
Add suspension-resolutions to existing notes.
A suspension is a non-chord tone technique where a note from the previous chord is held over (suspended) into the next chord on a strong beat, creating dissonance, then resolves by step (usually downward) to a chord tone.
Structure: Preparation (held note) → Suspension (dissonance on strong beat) → Resolution (step down/up to chord tone).
This tool finds notes on strong beats (downbeats) and creates a suspension before them: a preparatory note a step above (or below) the target, held into the strong beat, then resolving to the target note.
This is one of the most expressive devices in Western music — Bach chorales, jazz ballads, film scores all rely on suspensions for emotional tension-release.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) scale: Scale for resolution step ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "chromatic") root: Root note for scale resolution: Resolution direction — "down": resolve downward by step (classic 4-3, 9-8, 7-6 suspension) "up": resolve upward by step (rare, retardation) "both": alternate down/up per note suspension_offset: Semitone offset of suspension from target (1-7, default 2 = step above for down resolution). The suspension is placed this many semitones above (for "down" resolution) or below (for "up" resolution) the target note, then snaps to nearest scale tone. preparation_beats: Duration of the preparation note in beats (0.25-2.0, default 0.5 = eighth note before strong beat). suspension_velocity: Velocity of suspension note (0-1, default 0.75 — slightly accented, it is on a strong beat). resolution_velocity: Velocity of resolution note (0-1, default 0.65 — resolution is typically softer). cross_track: If >= 0, place suspensions on this track index instead of source track (preserves original melody).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| resolution | No | down | |
| unit_index | Yes | ||
| cross_track | No | ||
| track_index | Yes | ||
| region_index | No | ||
| preparation_beats | No | ||
| suspension_offset | No | ||
| resolution_velocity | No | ||
| suspension_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description compensates with detailed behavior: it specifies that notes on strong beats are targeted, preparatory notes are placed a step above/below and snapped to scale tones, velocities are given with musical rationale, and cross_track behavior is explained. However, it does not explicitly state whether original notes are modified or preserved on the source track, which is a notable 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?
The description starts with a concise purpose sentence, then builds context with the suspension definition, structure, and algorithm. The Args section is logically ordered. The cultural flourish about Bach chorales and film scores adds context but is not strictly necessary, making it slightly less concise than ideal.
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 complex tool with 11 parameters and no schema descriptions, the description provides thorough documentation of the algorithm, parameter effects, and musical intent. It does not mention error cases or prerequisites such as needing metrical information to find strong beats, but overall it is highly complete for an AI agent 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 provides zero descriptions, but the Arg list covers all 11 parameters with types, defaults, ranges (e.g., preparation_beats 0.25-2.0), scale list, and musical context (e.g., 'down' = classic 4-3, 9-8 suspension). This fully compensates for the schema's lack of 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 opening line 'Add suspension-resolutions to existing notes' clearly states the action and resource. The subsequent explanation of the suspension structure (Preparation → Suspension → Resolution) and the algorithm makes it easy to distinguish from sibling ornament tools like add_passing_tones or create_appoggiatura.
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 that the tool operates on existing notes, targets strong beats, and creates suspensions, giving clear context for when to use it. However, it never explicitly mentions alternatives or states 'use this instead of X,' 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.
mcp_opendaw_add_tempo_changeA
Add a tempo (BPM) change at a specific position in the track.
Creates a ValueEventBox on the timeline's tempo track, allowing BPM automation mid-track (e.g. 120 BPM → 90 BPM → 140 BPM).
The tempo track uses normalized values (0..1) mapped to minBpm..maxBpm (default 60..240). This tool handles the conversion automatically.
position_beats: Position in beats where the tempo change occurs. bpm: Target BPM (60-240). interpolation: 'linear' for smooth transition, 'hold' for instant jump.
Returns the created tempo event and full tempo map.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| interpolation | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 a ValueEventBox is created, explains the normalized value mapping and automatic conversion, and states the return value (created event and tempo map). This is informative, though it doesn't mention idempotency or effects on existing tempo 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 well-structured with a brief overview, internal details, and a parameter list. It is reasonably concise, though it could trim some redundancy (e.g., repeating 'BPM' multiple times). Overall, 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?
For a moderate-complexity tool, the description covers purpose, parameters, internal behavior, and return value. The output schema exists, so the return format is already structured. The description is complete for selection and 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 coverage is 0%, so the description fully compensates by explaining each parameter: position_beats (position in beats), bpm (target BPM, 60-240), and interpolation ('linear' vs 'hold'). This exceeds the raw schema and provides clear meaning and valid 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 tool adds a tempo change at a specific position, using a specific verb ('Add') and resource ('tempo change'). It distinguishes itself from siblings like set_bpm and create_tempo_ramp by focusing on mid-track automation and explicitly mentions creating a ValueEventBox on the tempo 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 implies usage for mid-track BPM automation with examples (120→90→140 BPM) and explains interpolation options. It lacks explicit 'when not to use' or alternative tool mentions, but the context is clear enough for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_add_vocal_chainA
Add a ready-made vocal processing chain to an audio unit — EQ + compressor + reverb (+ optional delay).
One call replaces 3-4 individual add_effect + set_effect_parameter calls. Designed for vocal tracks but works on any melodic content.
unit_index: Target audio unit (the vocal track). style: Preset character:
"balanced" — transparent EQ, gentle comp, medium reverb (pop)
"warm" — low-mid warmth, slower comp, lush reverb (R&B, soul)
"bright" — air boost, fast comp, short reverb (pop, radio)
"intimate" — minimal EQ, light comp, small room (ballad, acoustic)
"aggressive" — presence boost, hard comp, plate reverb (rock, rap)
reverb_amount: Reverb wet/dry (0-1, default 0.25 = subtle). delay_amount: Optional slap delay wet/dry (0-1, default 0 = off).
Creates: Revamp EQ → Compressor → Reverb (→ Delay) on the target AU. Returns effect indices and parameter values set.
Example:
Balanced vocal chain on track 0
add_vocal_chain(0)
Warm R&B vocal with lush reverb
add_vocal_chain(0, style="warm", reverb_amount=0.35)
Pop vocal with slap delay
add_vocal_chain(0, style="bright", delay_amount=0.15)
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | balanced | |
| unit_index | No | ||
| delay_amount | No | ||
| reverb_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on full disclosure responsibility. It details the exact chain created ('Revamp EQ → Compressor → Reverb (→ Delay)'), states the return value ('Returns effect indices and parameter values set'), and explains preset behavior. However, it does not explicitly state whether the chain is appended to existing effects or replaces them, nor does it mention error scenarios (e.g., invalid unit_index), which would be useful for full 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 thorough yet well-organized: opening summary, benefit statement, parameter details in structured bullet-like lines, chain output, and three practical examples. Every sentence contributes useful information without redundancy, making it easy for an agent to parse quickly.
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 moderate complexity (4 params, 5 presets, output schema) and zero annotations, the description is remarkably complete. It covers purpose, parameter semantics, behavioral details, return values, and usage examples, leaving no significant gaps for an agent to guess about. The output schema handles formal return structure, so the description's mention of return contents 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?
Schema coverage is 0%, so the description must fully document parameters, and it does. Every parameter is explained: unit_index ('Target audio unit'), style with five detailed preset descriptions, and both amount parameters with ranges and defaults. This far exceeds what the schema provides, making invocation behavior predictable.
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 first sentence clearly states the tool's function: 'Add a ready-made vocal processing chain to an audio unit — EQ + compressor + reverb (+ optional delay).' It also distinguishes itself from siblings by explicitly noting 'One call replaces 3-4 individual add_effect + set_effect_parameter calls' and specifies scope ('Designed for vocal tracks but works on any melodic content').
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 explicit guidance on when to use this tool: it replaces multiple add_effect and set_effect_parameter calls, making it the efficient choice for standard vocal chains. It also differentiates from other chain tools (mastering, drum, bass, instrument) by focusing on vocal/melodic content, giving clear context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_dynamicsARead-only
Dynamics analysis — crest factor, loudness range, transient density, segment RMS.
Measures the dynamic character of a track:
crest_factor_db: Peak/RMS ratio in dB (high = dynamic, low = compressed/squashed)
loudness_range_db: LRA — 95th-10th percentile of short-term RMS (high = varied dynamics)
dynamic_range_db: max-min window RMS (total loudness variation)
transient_density: energy spikes per second (high = percussive/transient-rich)
segment_variation_db: RMS variation across 10 segments of the track
segments: per-segment RMS (dB) with time positions
Compression decision guidance:
crest_factor < 6 dB → heavily compressed, low headroom
crest_factor > 15 dB → very dynamic, may need compression
loudness_range < 4 dB → flat/squashed, lacks dynamic interest
loudness_range > 12 dB → very dynamic, may need leveling
transient_density > 10 → percussive/transient-heavy content
segment_variation > 6 dB → significant level changes between sections
Args: filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns dynamics descriptors, 10-segment RMS contour, and compression suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the tool safe, and the description adds substantial context about the metrics, the 10-segment RMS contour, and compression suggestions. It also clarifies the input format (WAV file in exports directory or absolute path). No contradictions with annotations. A 5 would require even richer operational detail, but this is solid.
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 structured logically: a one-line summary, a bulleted metric breakdown, compression guidance, argument explanation, and return summary. Every sentence carries useful information—no fluff. Despite length, it is efficiently organized and scannable 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 multi-metric analysis tool, the description covers everything: what the tool does, the meaning of each metric, interpretation thresholds, input specification, and return content. The output schema further enriches context, so the description need not restate structured return types. This is complete for informed selection and 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 input schema has no description for 'filename', but the description fully compensates: 'Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' It resolves ambiguity about path resolution and file type, adding meaning beyond the schema's bare 'Filename' title.
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 performs 'Dynamics analysis' with specific metrics (crest factor, loudness range, transient density, segment RMS) and 'Measures the dynamic character of a track.' This specific verb+resource combination distinguishes it from siblings like analyze_spectrum, analyze_stereo, and measure_lufs.
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 detailed compression decision guidance with quantitative thresholds (e.g., 'crest_factor < 6 dB → heavily compressed'), which implies when to use the tool for dynamic evaluation. However, it does not explicitly name alternative tools for other analysis types, so it stops short of the 'explicit alternatives' bar for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_harmonic_rhythmARead-only
Analyze harmonic rhythm — how fast chords change and where.
Identifies chords from MIDI notes (same logic as identify_chords), then analyses the rhythm of chord changes:
Chord change positions: exact beat where each new chord starts
Chord durations: how long each chord lasts (in beats and bars)
Harmonic rhythm rate: fast (<2 bars), medium (2-4 bars), slow (>4 bars)
Harmonic density: chords per bar
Chord sequence: ordered list of chords with durations
Stable sections: where harmony stays the same for 4+ bars
Active sections: where chords change every bar or faster
Total harmonic events: number of distinct chord changes
This complements identify_chords (which lists chords) by focusing on the temporal pattern of harmony — essential for understanding arrangement, predicting where tension builds, and planning variations.
Use with:
analyze_song_structure (structure + harmonic rhythm = full form picture)
reharmonize_progression (know what to reharmonize and where)
create_arrangement_variation (match or contrast harmonic rhythm)
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = first, -2 = all regions on track). group_tolerance: Beats of tolerance for grouping notes (default 0.25). min_notes: Minimum notes for chord identification (default 3).
Returns harmonic rhythm analysis with chord timeline and section classification.
| Name | Required | Description | Default |
|---|---|---|---|
| min_notes | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| group_tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description discloses several behavioral traits beyond that: it identifies chords using the same logic as identify_chords, returns specific analysis outputs (chord change positions, durations, rate, density, stable/active sections, total events), and notes the data source is MIDI notes. This adds substantial context about what the tool does with input and what it produces.
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 appropriately structured with a clear summary, bullet-point output list, comparison to related tools, usage suggestions, parameter definitions, and a return value statement. Each section earns its place without 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 has an output schema (though its content is not shown in the provided context), so return values may already be documented there. The description covers usage context, input semantics, and output types at a level appropriate for the tool's complexity. It could be improved by explaining why region_index defaults to -1 meaning 'first' rather than all regions, but overall it is complete for selection and 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%, but the description includes a brief parameter list with defaults and meanings (unit_index, track_index, region_index with -1 = first and -2 = all regions, group_tolerance as beats of tolerance, min_notes as minimum notes). Though concise, it provides essential semantics for all five 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 tool's purpose: analyze harmonic rhythm (how fast chords change and where), listing the specific outputs. It distinguishes itself from sibling identify_chords by explicitly focusing on the temporal pattern of harmony.
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 when to use this tool vs alternatives, naming identify_chords as complementary and listing three specific sibling tools to use with it: analyze_song_structure, reharmonize_progression, and create_arrangement_variation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_melodyARead-only
Analyze melodic content — contour, intervals, direction, climax.
Returns a detailed melodic analysis of notes in a region:
Contour profile: direction (up/down/static) for each consecutive interval
Interval histogram: count of each interval size (semitones)
Step vs leap ratio: percentage of steps (≤2 semitones) vs leaps (>2)
Direction changes: how often melody changes direction
Climax: highest pitch and its position
Nadir: lowest pitch and its position
Phrase analysis: groups by rests (gaps > 1 beat) into phrases
Contour shape classification: ascending/descending/arch/v_shape/wave/static
Melodic range: semitone span between lowest and highest
Average interval size
Useful for:
Understanding a melody before variation/reharmonization
Comparing melodies (which is more jagged, which more stepwise?)
Identifying climax placement (is the high point early, middle, late?)
Feeding analysis to create_motif_variations
Evaluating AI-generated melodies for contour interest
unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first region).
Returns analysis object.
Example: analysis = analyze_melody(0, 3)
contour_shape, climax_position, step_leap_ratio, interval_histogram
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the tool is known to be safe. The description adds meaningful behavioral detail beyond the annotation: it explains how phrases are grouped (by rests > 1 beat) and what the return object contains. This is useful context without contradicting the annotation.
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 long but well-organized with sections and bullet points. Every sentence adds value, but the output feature list (10 items) and use-case list (5 items) could be tightened without losing meaning. Front-loaded core statement ensures quick comprehension.
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 (detailed musical analysis) and the presence of an output schema, the description is remarkably complete. It covers what the tool does, what it returns (even beyond the schema, e.g., phrase analysis details), when to use it, and parameter explanations. The inclusion of an example call reinforces 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 has 0% description coverage, but the description compensates with a clear param section: 'unit_index: AU index, track_index: Note track index, region_index: Region (-1 = first region).' It also provides a code example showing positional usage, making parameter semantics explicit and actionable.
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+resource: 'Analyze melodic content — contour, intervals, direction, climax.' It then enumerates a detailed list of outputs (contour profile, interval histogram, step/leap ratio, etc.), making the tool's function unmistakable. The specificity distinguishes it from broader sibling tools like mcp_opendaw_analyze_track or mcp_opendaw_note_stats.
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?
A dedicated 'Useful for:' section lists five concrete scenarios, such as 'understanding a melody before variation/reharmonization' and 'feeding analysis to create_motif_variations.' This provides clear context on when to use the tool, though it does not explicitly mention when not to use it or name alternative tools for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_mixARead-only
Complete mix diagnosis in one call — combines track + spectrum + stereo + dynamics.
Runs all four analysis modules and synthesizes a single prioritized report:
analyze_track: BPM, key, LUFS, duration
analyze_spectrum: 7-band frequency balance, spectral centroid, rolloff
analyze_stereo: width, L/R balance, phase correlation, mono compat
analyze_dynamics: crest factor, LRA, transient density, segment contour
Produces prioritized mix_suggestions (sorted by severity) and a master_check with platform-specific LUFS targets:
Spotify: -14 LUFS
Apple Music: -16 LUFS
YouTube: -14 LUFS
CD: no target (full dynamics)
The agent can call this single tool instead of 4 separate calls, getting a complete picture for mix decisions: EQ, compression, stereo, mastering.
Args: filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns combined analysis + prioritized suggestions + master check.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds substantial context: it runs four analysis modules, produces 'prioritized mix_suggestions' and a 'master_check' with platform-specific LUFS targets. This goes beyond the annotation's safety signal, though it doesn't discuss error handling or performance characteristics.
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 well-structured and front-loaded: a one-sentence summary, followed by a numbered list of modules, output details, and an Args section. Every sentence provides value, and the formatting makes it easy to scan quickly. No redundant or filler content.
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 complex tool combining four analyses with one parameter and an output schema, the description is thorough. It covers the purpose, the constituent modules, the output (suggestions, master_check, LUFS targets), and the filename parameter. Since an output schema exists, the description doesn't need to detail return fields, and it provides enough context 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 input schema has one parameter (filename) with no description (0% coverage), but the description fully compensates: 'Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' This clearly explains the format and accepted alternatives, leaving 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 it provides 'complete mix diagnosis in one call' by combining track, spectrum, stereo, and dynamics analysis. It distinguishes itself from the individual analyze_* siblings by explicitly listing the four modules it aggregates, making the tool's purpose specific 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?
It offers clear guidance: 'The agent can call this single tool instead of 4 separate calls, getting a complete picture for mix decisions.' This implies using it when a holistic analysis is needed and names the individual alternatives, though it doesn't explicitly state when to use the separate tools (e.g., when only one analysis is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_phaseARead-only
Per-band phase analysis — coherence, polarity, inter-channel delay.
Checks for phase problems that destroy mono compatibility:
Per-band phase correlation (sub, bass, mid, high)
Polarity check (inverted channels?)
Inter-channel sample delay (misaligned mics, plugin latency)
Mono compatibility score (what happens when L+R collapse to mono)
Low-frequency phase issues are critical: bass should be mono. High-frequency phase issues widen stereo but risk mono cancellation.
filename: WAV file in exports dir, or absolute path.
Returns per-band phase coherence + mono compatibility assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds substantial behavioral context: the specific phase checks performed, the rationale (mono compatibility), frequency-dependent risks, and what the return value contains. This is genuinely useful information that helps an agent interpret results safely.
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 tightly structured: a one-line summary, bulleted list of checks, two lines on frequency context, and a final parameter explanation. Every sentence contributes information, with 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 single-parameter analysis tool with an output schema, the description is complete. It covers what the tool does, what it detects, how to specify the input, and what the result is about. The output schema handles the exact return format, so no additional detail 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?
With schema description coverage at 0%, the description fully compensates by explaining the filename parameter in detail: 'WAV file in exports dir, or absolute path.' This is essential guidance that turns an otherwise opaque string parameter into a usable one.
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: 'Per-band phase analysis — coherence, polarity, inter-channel delay.' It then lists concrete checks and the final output (mono compatibility score), clearly distinguishing this from sibling analysis tools like analyze_stereo or analyze_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 description clearly implies when to use this tool by explaining what problems it detects (phase issues that damage mono compatibility) and provides contextual guidance about low vs. high frequency behavior. However, it does not explicitly name alternatives or state when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_song_structureARead-only
Analyze song structure by segmenting MIDI content into structural parts.
Scans all note tracks bar-by-bar, computes per-bar features (note density, pitch range, average velocity, active track count), groups consecutive bars into segments, and classifies each segment as intro/verse/chorus/bridge/ outro/breakdown based on density and energy patterns.
Essential for: understanding existing arrangements, finding where sections change, verifying song form, and planning variations or extensions.
unit_index: AU index (-1 = all AUs). bars_per_segment: Minimum bars per structural segment (default 4). Groups of bars with similar density are merged into segments of at least this length.
Returns per-segment classification with bar range, density, energy, and feature summary.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | No | ||
| bars_per_segment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description consistently presents this as a read-only analysis operation, so no contradiction. It adds behavioral detail beyond the annotation: the algorithm (scans bar-by-bar, computes features, groups consecutive bars, classifies segments) and the output structure (per-segment classification with bar range, density, energy, feature summary). This is useful context, though it could also mention edge cases or data 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 well-structured with a clear opening, algorithmic overview, use-case list, and parameter breakdown. It is somewhat long (multiple paragraphs), but each section adds value and the information is front-loaded. A tighter version could combine the algorithm and use cases, but the current format is readable and effective.
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 moderate complexity and presence of an output schema, the description is complete: it explains what it does, the algorithm, the parameters, the output type, and typical use cases. It does not need to describe return values in detail because an output schema exists. The description fully equips an agent to decide when and how to call 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 carry the burden. It does: 'unit_index: AU index (-1 = all AUs)' and 'bars_per_segment: Minimum bars per structural segment (default 4)...' This adds meaning beyond the plain integer types and defaults in the schema. It could be richer (e.g., valid ranges for unit_index) but is adequate.
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+resource: 'Analyze song structure by segmenting MIDI content into structural parts.' It details the method (bar-by-bar feature extraction, grouping, classification into intro/verse/chorus/etc.), and distinguishes from siblings by focusing on analysis and structural segmentation, not creation or editing.
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 use cases: 'Essential for: understanding existing arrangements, finding where sections change, verifying song form, and planning variations or extensions.' This gives clear context on when to use. However, it does not mention when NOT to use it or contrast with alternative analysis/creation tools, so it misses the 'when-not' part for a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_spectrumARead-only
Spectral analysis of audio across 7 ISO frequency bands.
Divides the spectrum into standard bands:
sub_bass (20-60 Hz), bass (60-250 Hz), low_mids (250-500 Hz), mids (500-2000 Hz), high_mids (2000-4000 Hz), presence (4000-6000 Hz), brilliance (6000-20000 Hz)
Per band: RMS (linear + dB), peak (dB), energy percentage. Global descriptors:
spectral_centroid_hz: brightness (weighted mean frequency)
spectral_spread_hz: frequency variance around centroid
spectral_rolloff_95_hz: frequency below which 95% of energy lies
low_high_ratio: energy <250 Hz / energy >250 Hz (tonal balance)
spectral_crest: peak/mean power ratio (tonal vs noisy)
Use after analyze_track for mix decisions:
High low_high_ratio → bass-heavy mix, may need EQ cut in low mids
Low spectral_centroid → dark/muffled, consider high shelf boost
High spectral_centroid → bright/harsh, consider high shelf cut
Dominant band energy_pct → where the mix lives
Args: filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns band-by-band analysis + global spectral descriptors + mix suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares it as a safe read operation. The description adds substantial context: input requirements (WAV file in exports directory or absolute path), the exact return content (band-by-band analysis, global descriptors, mix suggestions), and semantics of each metric (e.g., spectral_centroid as brightness). 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?
Well-structured with a clear opening line, bullet-point frequency bands, metric definitions, and usage examples. The length is justified by the density of useful information; every sentence contributes value, and critical information (purpose, workflow, args) 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?
Covers input expectations, output content (band-by-band analysis, global descriptors, mix suggestions), and interpretation guidance. With an output schema present, it doesn't need to detail exact return types, but it provides sufficient context for correct invocation and result 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?
Although schema coverage is 0%, the description fully compensates with the Args section: 'filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' This precisely specifies the single parameter's format and acceptable values, going beyond the bare schema definition.
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: 'Spectral analysis of audio across 7 ISO frequency bands' followed by detailed band definitions and metrics. This distinguishes it from sibling analysis tools like analyze_stereo, analyze_dynamics, and analyze_mix by focusing specifically on spectrum analysis.
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 provides usage context: 'Use after analyze_track for mix decisions' and gives concrete interpretation rules (e.g., high low_high_ratio → bass-heavy mix, low spectral_centroid → dark/muffled). This tells the agent when to invoke the tool and how to act on the results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_analyze_stereoARead-only
Stereo analysis of audio — width, L/R balance, mono compatibility, mid/side energy.
Analyzes the stereo field of a track:
stereo_width: Side/Mid RMS ratio (0 = mono, 0.5+ = wide, 1.0 = hard panned)
lr_balance: L/R energy difference (-1 = fully left, 0 = centered, +1 = fully right)
phase_correlation: -1 to +1 (+1 = mono safe, 0 = uncorrelated, -1 = out of phase)
mono_compatible: True if phase correlation > 0 (collapses to mono without cancellation)
phase_issues_pct: % of samples where L and R have opposite polarity
Per-region width: low (<250Hz), mid (250-4000Hz), high (4000+Hz) Helps identify if stereo width is well-distributed or concentrated in one region
Mix decision guidance:
stereo_width < 0.1 → narrow/mono mix, consider widening
stereo_width > 0.8 → very wide, check mono compatibility
phase_correlation < 0 → phase issues, will cancel in mono
lr_balance > 0.2 → right-heavy, consider rebalancing
lr_balance < -0.2 → left-heavy, consider rebalancing
Low-freq width > 0.3 → bass is wide (usually undesirable, keep bass mono)
Args: filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns stereo descriptors, per-region width, and mix suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds behavioral context by explaining it reads a WAV file and computes stereo metrics. It also clarifies filename semantics (exports directory or absolute path) and gives detailed metric definitions, going beyond the minimal read-only annotation.
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 long but well-structured with a summary header, detailed metric bullet points, mix decision guidance, and an Args section. The information density is high and each section serves a purpose, though it could be slightly trimmed without losing 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 description covers input (filename), output (stereo descriptors, per-region width, mix suggestions), and interpretation (decision thresholds). Even though an output schema exists, the description goes beyond by explaining metric ranges and actionable guidance, making it 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 schema only provides the parameter title with no description (0% coverage), but the description's Args section fully explains the filename parameter: 'Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' This fully compensates for the lack of schema 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 'Stereo analysis of audio' and lists specific outputs like stereo_width, lr_balance, and phase_correlation. It distinguishes itself from sibling tools such as analyze_mix or analyze_dynamics by focusing on stereo-specific metrics and per-region width.
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 'Mix decision guidance' section provides explicit thresholds (e.g., stereo_width < 0.1 means narrow) that indicate when to act on results. However, it does not explicitly mention when not to use this tool or how it compares to other analysis tools, 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.
mcp_opendaw_analyze_trackARead-only
Full audio analysis in one call — BPM + key + LUFS + duration + dynamic range.
Composite tool that runs detect_bpm + detect_key + measure_lufs in a single call. Eliminates 3 separate calls for track analysis. Essential for Suno remix pipeline: download_audio → analyze_track → set_bpm + matching progression → import → mix → render.
filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns: bpm, bpm_confidence, key, mode, key_confidence, lufs_integrated, true_peak_db, duration_seconds, sample_rate, channels, dynamic_range, alternatives (key alternatives), chroma.
Examples: result = analyze_track("suno_track.wav")
→ {bpm: 128.0, bpm_confidence: 0.85, key: "A", mode: "minor",
lufs_integrated: -14.2, duration_seconds: 30.0, ...}
Then use results for remix:
set_bpm(result.bpm) create_progression_from_key(result.key, result.mode, "synthwave")
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, and the description adds substantial behavioral context: it runs multiple analyses in a single call, returns a comprehensive set of audio metrics, and requires a filename. It does not describe failure modes, but given the read-only annotation, the description adds enough useful context beyond what annotations provide.
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 somewhat long, but it is well-structured: purpose, pipeline context, parameter explanation, return fields, and a usage example. Each section adds practical value, though the example repeats some return-field info. It is appropriately sized for the tool's composite nature.
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 all essential aspects: what it does, when to use it, how the parameter is specified, what it returns, and a concrete usage example. With an output schema present, the return-value listing is extra but helpful. There are no significant gaps 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 input schema provides zero description for the filename parameter (schema description coverage is 0%). The description fully compensates by explaining both accepted forms: a filename relative to the exports directory or an absolute path to any WAV file, and includes an example. This is excellent parameter-level 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 opens with 'Full audio analysis in one call — BPM + key + LUFS + duration + dynamic range' which explicitly states what the tool does. It further clarifies that it is a composite of detect_bpm + detect_key + measure_lufs, clearly distinguishing this integrated tool from its single-purpose 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 provides clear usage context: it is a composite tool that eliminates three separate calls and is essential for the Suno remix pipeline. It names the individual tools being combined, but does not explicitly state when one would prefer the single-purpose alternatives over this composite, though that is implied by the efficiency rationale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_articulationA
Apply articulation to existing notes — staccato, legato, tenuto, accent.
Reshapes note durations relative to their grid position to change phrasing character. Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios — the fundamental dimension of musical articulation.
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track). articulation: Articulation type:
"staccato" — shorten notes to fraction of their grid slot (default 50%)
"legato" — extend notes to nearly the next note's start (default 95%)
"tenuto" — hold notes to full grid slot (100%, no gap, no overlap)
"accent" — boost velocity on notes that fall on beat boundaries (downbeats) amount: Articulation depth 0-1 (default 0.5):
staccato: fraction of slot (0.3 = very short, 0.7 = moderate)
legato: overlap fraction (0.9 = near-full, 0.5 = half-fill)
tenuto: (unused, always full)
accent: velocity boost amount (0.3 = subtle, 1.0 = strong accent)
Returns per-region note counts and total notes reshaped.
Examples: apply_articulation(articulation="staccato", amount=0.3) # crisp, detached apply_articulation(articulation="legato", amount=0.95) # smooth, connected apply_articulation(articulation="accent", amount=0.8) # strong downbeat accents
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| unit_index | No | ||
| track_index | No | ||
| articulation | No | staccato | |
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 that the tool deterministically reshapes note durations, details each articulation's specific effect (e.g., 'staccato — shorten notes to fraction of their grid slot'), and states the return value. However, it does not explicitly mention irreversibility or in-place modification, though the sibling undo tool exists; this small gap keeps it from a 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 long but appropriately so for a tool with 5 parameters and 4 articulation variants. It uses clear sectioning, bullet lists for parameters, and concrete examples. No sentence is superfluous; each adds either definitional precision or practical guidance, making the length justified.
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 no annotations and zero schema descriptions, the description covers the tool's purpose, parameter semantics, return type, examples, and relationship to sibling tools. It even explains the algorithmic behavior for each articulation and the impact of amount. The tool is complex, but the description leaves little ambiguity about what will happen when invoked.
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%, but the description fully compensates by explaining every parameter: unit_index, track_index, region_index (with the -1 special case), articulation (with per-type behavior), and amount (with per-articulation meaning and examples). This far exceeds what the bare schema provides, giving the agent complete parameter understanding.
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: 'Apply articulation to existing notes' and enumerates the articulation types. It also explicitly distinguishes the tool from siblings: 'Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios', making its scope and unique purpose 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?
The description names two direct alternatives (velocity_curve, humanize) and explains why this tool is the right choice for deterministic articulation: 'Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios'. This gives clear when-to-use guidance relative to at least two siblings, and the examples further illustrate appropriate invocations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_contourA
Apply a melodic contour shape to existing notes.
Redistributes note pitches to follow a specified contour profile while keeping timing and duration unchanged. Unlike transpose_notes (uniform shift), this reshapes the melody direction — ascending, descending, arch, inverted arch, wave, or custom.
The tool calculates a target pitch for each note based on its position in the sequence (0..1 normalized) mapped through the contour function, then snaps to the nearest scale degree if requested. The original pitch range center is preserved.
Contours:
"ascending": low to high across the phrase
"descending": high to low
"arch": rise then fall (peak at midpoint)
"inverted_arch": fall then rise (valley at midpoint)
"wave": sinusoidal up-down-up
"escalating": stepwise ascending with plateaus
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) contour: Contour shape name range_semitones: Pitch range span in semitones (1-48, default 12=octave) snap_to_scale: Scale for snapping results (""=chromatic, "major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues") root: Root note for scale snapping preserve_first: Keep first note pitch unchanged preserve_last: Keep last note pitch unchanged
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| contour | No | arch | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| preserve_last | No | ||
| snap_to_scale | No | ||
| preserve_first | No | ||
| range_semitones | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It includes important behaviors: timing and duration remain unchanged, original pitch range center is preserved, and snapping to scale degree is optional. However, it does not explicitly state the destructive nature (e.g., that pitches are overwritten) or mention undo/restore implications beyond the preserve flags, leaving a slight transparency 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 structured cleanly: purpose statement, algorithm explanation, contour definitions, and args list. Every sentence adds value—no redundant repetition of schema titles or types. It is front-loaded with the primary action and scales into necessary detail without bloat.
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 annotations, and an existing output schema (so return values need not be described), the description is remarkably complete. It covers the algorithmic behavior, all contour semantics, parameter nuances, and even provides a differentiation from a sibling. This equips the agent to invoke the tool correctly in 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 description coverage is 0%, so the description must compensate for the schema's lack of parameter docs. It does this thoroughly: each parameter is explained with units, ranges, defaults, and allowed values (e.g., range_semitones '1-48, default 12=octave', full contour list, scale list). This is essential and well-executed.
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+resource: 'Apply a melodic contour shape to existing notes.' It further details the behavior (redistributes pitches while keeping timing/duration) and explicitly contrasts with transpose_notes ('uniform shift'), making the tool's unique purpose unmistakable and well-differentiated 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?
The description explicitly names the alternative transpose_notes and explains the difference: 'Unlike transpose_notes (uniform shift), this reshapes the melody direction.' This provides a clear when-to-use/when-not-to-use signal, telling the agent to reach for this tool when reshaping contour rather than shifting uniformly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_full_mixA
Apply a complete mix in one call — genre-aware processing chains on every track + mastering.
Replaces 5-6 separate calls (add_drum_chain + add_bass_chain + add_instrument_chain × N + add_mastering_chain). Each track gets the right chain with genre-appropriate style automatically.
genre: Determines chain styles per track. Supported: dnb, liquid_dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae, synthwave, trance, disco unit_index: Target audio unit. num_tracks: Number of note tracks in the unit (default 4). Track 0 = drums, Track 1 = bass, Track 2+ = melodic/instrument. master_lufs: Mastering LUFS target (-14 Spotify, -10 loud, -16 Apple).
Chain assignment per track: Track 0 → add_drum_chain (genre-aware style) Track 1 → add_bass_chain (genre-aware style) Track 2+ → add_instrument_chain (genre-aware style) Output → add_mastering_chain
Returns summary of all chains applied.
Example:
Full mix for a 4-track house project
apply_full_mix("house", unit_index=0, num_tracks=4)
Loud techno master
apply_full_mix("techno", num_tracks=3, master_lufs=-10)
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | pop | |
| num_tracks | No | ||
| unit_index | No | ||
| master_lufs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 details the exact chain assignment per track, the return value, and the meaning of parameters. However, it does not mention potential side effects such as whether existing chains are overwritten, or whether the operation can be undone. This is a minor gap given the tool's clear mutation intent.
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 well-structured and front-loaded, starting with a one-line summary, then alternative guidance, parameter details, chain assignment, return value, and examples. Every sentence adds value; there is no fluff. The bullet points and code examples make 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 covers all four parameters, behavioral details, return value, and provides examples. It is quite complete for a complex tool. However, it does not explicitly mention prerequisites (e.g., that the unit must contain note tracks) or edge cases (e.g., what happens if num_tracks exceeds available tracks). These gaps are minor given the tool's clarity.
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%, but the description compensates thoroughly. It explains each parameter in detail: genre lists all supported values, unit_index identifies target, num_tracks explains track roles (0=drums, 1=bass, 2+=melodic), and master_lufs gives reference targets. The chain assignment section further elaborates how parameters map to 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 a specific verb+resource+scope: 'Apply a complete mix in one call — genre-aware processing chains on every track + mastering.' It explicitly distinguishes itself from sibling tools by naming the individual chain tools it replaces (add_drum_chain, add_bass_chain, add_instrument_chain, add_mastering_chain).
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 explicit guidance on when to use this tool: 'Replaces 5-6 separate calls (add_drum_chain + add_bass_chain + add_instrument_chain × N + add_mastering_chain).' It also gives concrete examples with different genres and LUFS targets, which clarifies the intended use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_genre_humanizationA
Apply genre-aware humanization to arrangement tracks — makes programmed MIDI feel alive.
After creating an arrangement, notes are perfectly quantized — robotic. This tool applies genre-appropriate humanization: jazz gets loose timing and wide velocity variation, electronic genres stay tight with minimal variation, funk gets behind-the-beat pocket feel.
Each genre has a different humanization recipe:
Jazz: high timing variation (0.20), high velocity variation (0.20), swing 0.66 (classic jazz swing feel). Drums get the most humanization.
Funk: behind-the-beat timing (positive bias), medium velocity variation, swing 0.0 (straight 16ths but with pocket feel).
Rock: medium timing (0.10), medium velocity (0.12), no swing. Drums get slight push, bass stays tight.
Reggae: laid-back timing (positive bias, behind beat), medium velocity, no swing. Bass stays tight (it's the lead), drums get loose.
Pop: very subtle (0.05 timing, 0.08 velocity), no swing. Pop should sound polished, not loose.
DnB/House/Techno/Trance/Synthwave/Dubstep/Trap: minimal humanization. Electronic genres should sound tight and consistent. Timing 0.03, velocity 0.05, no swing.
Afrobeat: medium timing (0.12), medium velocity (0.15), no swing. Polyrhythms need some human feel but stay grounded.
Disco: subtle timing (0.06), medium velocity (0.10), no swing. Disco should sound tight but not robotic — live drummer feel.
genre: One of: dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae, synthwave, trance, disco unit_index: AU index with the arrangement tracks. drum_track / bass_track / harmony_track / melody_track: Track indices. has_4th_track: True if arrangement has 4 tracks (False for 3-track genres).
Returns humanization parameters applied per track.
Example:
After: create_jazz_arrangement(...)
apply_genre_humanization("jazz", unit_index=0)
After: create_dnb_arrangement(...)
apply_genre_humanization("dnb", unit_index=0, has_4th_track=False)
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| bass_track | No | ||
| drum_track | No | ||
| unit_index | No | ||
| melody_track | No | ||
| harmony_track | No | ||
| has_4th_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses detailed genre-specific behavior (timing/velocity/swing values), track-level effects (drums get most, bass stays tight), and that it returns the applied parameters. It does not explicitly state whether it mutates the actual MIDI notes or how it interacts with prior humanization, but the coverage is substantial.
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 a clear purpose statement, followed by structured sections: context, genre recipe bullets, parameter list, return value, and a concrete example. It is long, but every sentence contributes necessary behavioral or semantic detail for a complex tool with 7 parameters and 14 genres. Nothing feels redundant.
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 and the existence of an output schema, the description is remarkably complete. It covers the workflow context (post-arrangement), all parameter semantics, genre-specific recipes, track roles, and provides a usage example. The only minor omission is an explicit prerequisite statement, but the examples and opening context imply it clearly.
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 — and it does. It explains the genre parameter with an explicit list of allowed values, defines unit_index as 'AU index with the arrangement tracks', interprets the track indices, and clarifies has_4th_track in the context of 3- vs 4-track genres. This adds essential meaning beyond the bare parameter 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 opens with a specific verb+resource: 'Apply genre-aware humanization to arrangement tracks — makes programmed MIDI feel alive.' It clearly distinguishes itself from generic humanization tools (e.g., humanize_notes, apply_swing) by emphasizing genre-awareness and the arrangement-track context.
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 contextual guidance: use it after creating an arrangement because notes are quantized/robotic. Examples explicitly show calls after create_jazz_arrangement and create_dnb_arrangement. However, it does not explicitly name alternative tools to use instead (e.g., humanize_notes) or exclusion cases, so it stops short of perfect guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_genre_mixA
Apply genre-specific mixing effects to tracks after creating an arrangement.
Closes the loop: create arrangement → apply genre mix → ready to render. One call replaces 10-20 manual add_effect + set_effect_parameter calls.
Each genre has a different effect chain recipe:
Drums: compressor (genre-specific ratio/threshold) + EQ
Bass: EQ (HPF + low boost) + saturation (genre-specific)
Chords/Melody: reverb (genre-specific decay) + delay (if applicable)
Extra track: genre-specific treatment
Sidechain: drums→bass (if applicable to genre)
genre: One of: dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae unit_index: AU index with the arrangement tracks. num_tracks: Number of tracks to mix (3 or 4, must match arrangement). sidechain: Whether to add sidechain drums→bass (True for electronic genres, False for organic).
Returns effects added per track and parameter values.
Example:
After: create_dnb_arrangement(...)
apply_genre_mix("dnb", unit_index=0, num_tracks=3, sidechain=True)
After: create_jazz_arrangement(...)
apply_genre_mix("jazz", unit_index=0, num_tracks=4, sidechain=False)
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| sidechain | No | ||
| num_tracks | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosure burden. It details per-track effect recipes (compressor+EQ, saturation, reverb/delay, sidechain) and specifies genre-specific variations. It also discloses sidechain behavior and returns the effects added per track, giving full visibility into the operation's outcome.
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 uses tight lead sentences, bulleted recipe lists, a compact parameter explanation block, and two clarifying examples. Each section earns its place without redundancy, and the most important information (purpose and workflow) 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?
With 4 parameters and zero schema descriptions, this description covers all necessary invocation context: usage scenario, workflow position, genre-specific behavior, parameter constraints, and return value. The output schema exists, and the description states it returns 'effects added per track and parameter values', so no critical information 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%, but the description thoroughly compensates for every parameter: genre lists the 11 allowed values, unit_index is defined as 'AU index with the arrangement tracks', num_tracks is specified as '3 or 4, must match arrangement', and sidechain is described as 'drums→bass' with genre-family guidance. This is exactly what the agent needs to invoke 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?
Description opens with 'Apply genre-specific mixing effects to tracks after creating an arrangement' – a specific verb+resource+context. It clearly distinguishes itself from sibling tools like create_*arrangement and manual effect-chaining calls by positioning itself as the connection between arrangement creation and rendering.
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 places tool in the workflow: 'Closes the loop: create arrangement → apply genre mix → ready to render.' It also states this replaces '10-20 manual add_effect + set_effect_parameter calls', directly identifying the alternative. Examples pair it with specific arrangement-creation functions (create_dnb_arrangement, create_jazz_arrangement), making when-to-use unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_mix_presetA
Apply a mix preset to all audio units in one call — volume, pan, mute, solo.
Replaces 10-30 set_track_volume/set_track_panning/set_track_mute calls. Presets can be genre-specific or custom JSON.
preset: JSON object mapping unit indices to settings: {"0": {"volume_db": -3, "panning": 0.0, "mute": false}, "1": {"volume_db": -6, "panning": -0.3, "solo": false}, ...}
Alternatively, use a named preset: "lofi", "house", "balanced", "wide"
Returns applied settings per unit.
Example: preset='{"0":{"volume_db":-3,"panning":0},"1":{"volume_db":-6,"panning":-0.3}}' preset='lofi' (built-in: kicks +0, bass -3, synths -6, wide pans)
| Name | Required | Description | Default |
|---|---|---|---|
| preset | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the operation, parameter format, and return value, but lacks details on side effects (e.g., whether existing settings are overwritten, behavior on invalid indices), reversibility, or prerequisites. It adds useful context but not complete 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 slightly verbose but every sentence is informative. It is front-loaded with the primary purpose, then details the parameter format, examples, and return value. The structure is logical and scannable, though a bit dense.
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 tool, the description is quite complete: it covers the main use case, parameter format, built-in options, and return value. However, it does not differentiate from similar batch tools like apply_full_mix or apply_genre_mix, and misses edge cases like invalid presets or partial application. Given no annotations, it's strong but has minor 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?
The input schema has a single 'preset' parameter with zero description coverage. The description fully compensates by providing the exact JSON structure, named presets, and multiple examples. This is exemplary parameter documentation that goes far 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 'Apply a mix preset to all audio units in one call — volume, pan, mute, solo.' This specifies the action, target scope, and attributes, distinguishing it from individual set_track_* tools. It also mentions the batch nature, which separates 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?
The description explicitly says 'Replaces 10-30 set_track_volume/set_track_panning/set_track_mute calls,' providing a clear alternative and when this tool is beneficial. It does not explicitly state when NOT to use it, but the context strongly implies the batch-vs-individual tradeoff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_rhythm_patternA
Apply a rhythmic pattern to existing notes — reposition onsets to match a target grid.
Takes a rhythm pattern (either a rhythm_string like "x.x.x..x" or an onset_grid like "1,0,1,0,1,0,0,1") and repositions existing notes onto the onset positions. This is the inverse of extract_rhythm — it lets you stamp a groove onto any note content.
How it works:
Reads existing notes and their pitches/velocities/durations
Computes the target onset positions from the pattern (cycling if pattern is shorter than the region)
Distributes notes across onset positions:
If fewer onsets than notes: extra notes are placed at the nearest onset
If more onsets than notes: notes are assigned round-robin to onsets
Optionally adjusts velocity (accent onsets) and duration (staccato/legato)
velocity_mode:
"preserve": keep original velocities
"accent": strong beats (0,4,8,12 in 16th) get +20% velocity, weak get -10%
"flat": all notes get 0.8 velocity
"pattern": use onset_velocities from extract_rhythm if provided in onset_grid
duration_mode:
"preserve": keep original durations
"staccato": each note lasts 50% of the grid step
"legato": each note lasts until the next onset
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = first region). rhythm_string: Compact pattern "x.x.x..x" (x=onset, .=rest). Used if onset_grid is empty. onset_grid: Comma-separated "1,0,1,0,1,0,0,1" or "1;0.5;0;0.8" (value=velocity). Takes priority over rhythm_string. grid: Grid resolution (16th/8th/32nd/quarter). velocity_mode: How to handle velocities (preserve/accent/flat/pattern). duration_mode: How to handle durations (preserve/staccato/legato).
Returns modification summary with repositioned note count.
Example:
Extract groove from drums, apply to bass
rhythm = extract_rhythm(0, 0, grid="16th")
... parse rhythm_string from result ...
apply_rhythm_pattern(0, 1, rhythm_string="x...x...x...x...", grid="16th")
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | 16th | |
| onset_grid | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| duration_mode | No | preserve | |
| rhythm_string | No | ||
| velocity_mode | No | preserve |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It describes the note distribution algorithm in detail ('If fewer onsets than notes: extra notes are placed at the nearest onset'), the effects of velocity/duration modes, and notes that it returns 'a modification summary with repositioned note count.' It implies in-place modification by saying 'repositions existing notes.' It does not discuss undo or reversibility, but the level of detail is strong given the lack of 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?
The description is long but every section is purposeful: a summary sentence, numbered algorithm steps, a parameter glossary, and a usage example. It is structured and front-loaded with the one-line purpose, 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 tool with 8 parameters and no schema descriptions, the description covers all parameters, behavior, precedence, and an example workflow. It also mentions the return value ('modification summary'), and since an output schema exists, we don't need exact return fields. The only minor gaps are edge cases like empty note regions, which aren't critical 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 schema has 0% coverage, but the description defines every parameter, including default values and precedence (e.g., 'onset_grid: ... Takes priority over rhythm_string'). It explains valid values for velocity_mode and duration_mode with examples, providing far more semantics than 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 first sentence states a specific action: 'Apply a rhythmic pattern to existing notes — reposition onsets to match a target grid.' It also explicitly distinguishes itself from extract_rhythm ('This is the inverse of extract_rhythm'), establishing a clear purpose unique among 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?
It explains when to use this tool by framing it as the inverse of extract_rhythm, saying it 'lets you stamp a groove onto any note content,' and provides a concrete example workflow ('Extract groove from drums, apply to bass'). It does not, however, list exclusions or alternatives beyond extract_rhythm, so it's clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_sidechainA
Apply sidechain ducking via volume automation — the classic pumping/breathing effect.
Simulates sidechain compression by creating volume automation that ducks on every kick beat and recovers. This is the signature sound of house, techno, EDM, and modern pop. Works by creating automation events on the target track's volume parameter.
unit_index: AU index whose volume will be automated. track_index: Track index (-1 = all tracks on the AU). bars: Number of bars to fill with sidechain (1-16). start_beat: Starting beat position. depth: Ducking depth 0-1 (0.6 = volume drops to 40% on each kick, 0.8 = drops to 20%). attack: Attack time in beats (how fast volume drops, 0.01 = instant, 0.05 = smooth). release: Release time in beats (how fast volume recovers, 0.3 = classic, 0.5 = slow pump). kick_interval: Kick spacing in beats (1.0 = every beat, 2.0 = every 2 beats, 0.5 = 16th kicks).
Returns total automation events created and ducking pattern info.
Example: apply_sidechain(unit_index=0, bars=8, depth=0.7, release=0.25, kick_interval=1.0)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| depth | No | ||
| attack | No | ||
| release | No | ||
| start_beat | No | ||
| unit_index | Yes | ||
| track_index | No | ||
| kick_interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It clearly states that it creates automation events on the volume parameter and returns the event count and pattern info. However, it does not disclose potential side effects such as whether existing automation is overwritten or appended, whether the operation is reversible, or any preconditions like unit/track existence.
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?
Well-structured and front-loaded with a one-line summary. The mechanism, parameter list, return info, and an example are all included, and each sentence serves a purpose. The parameter explanations double as usage guidance, keeping the description 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?
Covers purpose, mechanism, parameters, return value, and an example. With the output schema present, describing return details in more depth is unnecessary. Missing only brief preconditions (e.g., valid unit_index/track_index, potential need for existing AU), but overall 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 0%, and the description fully compensates. Every parameter (unit_index, track_index, bars, start_beat, depth, attack, release, kick_interval) is explained with meaning, ranges, and practical examples—e.g., depth: '0.6 = volume drops to 40% on each kick'—adding far more value than 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?
Uses a specific verb+resource: 'Apply sidechain ducking via volume automation'. Clearly distinguishes from the sibling connect_sidechain tool by stating it 'Simulates sidechain compression' rather than performing actual routing, and from set_track_volume by describing automation creation.
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 clear context by describing the effect as 'the signature sound of house, techno, EDM, and modern pop', implying when this tool is appropriate. The description of how it works ('by creating volume automation') implicitly differentiates it from real sidechain tools, but it does not explicitly state alternatives or 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.
mcp_opendaw_apply_swingA
Apply swing feel to existing notes without changing velocity or duration.
Swing shifts every other grid position later, creating a triplet/shuffle feel. Unlike humanize_notes (which couples swing with random velocity/timing changes), this tool applies pure swing — deterministic, no randomness, reversible.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). swing_amount: Swing depth 0-1 (0 = straight, 0.5 = light swing, 1.0 = full triplet). 0.55-0.66 = classic hip-hop/lofi swing. grid: Grid to swing against — "16th" (default, shifts odd 16ths) or "8th" (shifts odd 8ths).
Returns per-track note counts shifted.
Example: apply_swing(unit_index=0, track_index=0, swing_amount=0.58, grid="16th")
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | 16th | |
| unit_index | No | ||
| track_index | No | ||
| swing_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It discloses key behavioral traits: no velocity/duration changes, deterministic, no randomness, reversible, and returns per-track note counts shifted. This gives the agent a solid safety and side-effect profile.
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 structured with a purpose statement, parameter details, return value, and a usage example. Every sentence adds value; there is no 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?
With no annotations and a rich schema, the description covers what the tool does, when to use it, parameter semantics, return value, and an example. This leaves no significant gaps for an agent to select and 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?
Schema coverage is 0%, but the description explains all four parameters in detail: unit_index, track_index, swing_amount (including range and musical examples like 0.55-0.66 for hip-hop/lofi), and grid (with default and interpretation). This fully compensates for the missing 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 opens with a specific action: 'Apply swing feel to existing notes without changing velocity or duration.' It also explicitly contrasts with humanize_notes, making the purpose and distinction from siblings 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 explicitly states when to use this tool versus an alternative: 'Unlike humanize_notes (which couples swing with random velocity/timing changes), this tool applies pure swing.' This tells the agent when to choose this over a known sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_velocity_curveA
Apply a velocity envelope across notes — ramp, arc, trough, or custom power curve.
Maps each note's position within its region to a velocity value via a mathematical curve. Unlike humanize_notes (random variation), this applies a deterministic envelope shape — useful for build-ups, fade-ins, crescendo rolls, and expressive phrasing.
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track). curve_type: Curve shape:
"ramp_up" — linear increase from start_velocity to end_velocity
"ramp_down" — linear decrease from start_velocity to end_velocity
"arc" — rises to end_velocity then falls back to start_velocity (peak in middle)
"trough" — falls to start_velocity then rises to end_velocity (dip in middle)
"power" — exponential curve controlled by 'power' param (>1 = fast rise, <1 = slow rise) start_velocity: Velocity at curve start 0-1 (default 0.3). end_velocity: Velocity at curve end 0-1 (default 1.0). power: Exponent for "power" curve type (default 1.0 = linear). 2.0 = sharp attack, 0.5 = slow swell.
Returns per-region note counts and total notes shaped.
Examples: apply_velocity_curve(curve_type="ramp_up", start_velocity=0.2, end_velocity=1.0) # build-up apply_velocity_curve(curve_type="arc", start_velocity=0.4, end_velocity=0.95) # expressive phrase apply_velocity_curve(curve_type="power", power=2.0, start_velocity=0.1, end_velocity=1.0) # sharp attack
| Name | Required | Description | Default |
|---|---|---|---|
| power | No | ||
| curve_type | No | ramp_up | |
| unit_index | No | ||
| track_index | No | ||
| end_velocity | No | ||
| region_index | No | ||
| start_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the deterministic mapping mechanism (each note's position to a velocity value), details each curve's mathematical behavior, and states the return value. It stops short of noting irreversibility or clamps on out-of-range inputs, but the disclosure is substantial.
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?
Well-structured: purpose, mechanism, differentiation, parameter specs, return value, then three practical examples. No sentence is wasted; the length is justified by the tool's complexity and 0% schema coverage.
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 7-parameter tool with no annotations and no schema-side parameter descriptions, this description is fully complete. The curve_type values are individually explained, defaults are given, return semantics are stated, and concrete usage examples anchor the behavior.
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%, yet the description documents all 7 parameters with defaults, ranges (0-1 for velocities), and behavioral meaning. 'power' gains extra semantic depth ('2.0 = sharp attack, 0.5 = slow swell'), and region_index's -1 sentinel is explained. This fully compensates for the empty 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 opens with a specific verb+resource ('Apply a velocity envelope across notes') and lists the curve variations (ramp, arc, trough, power curve). It explicitly distinguishes itself from the sibling humanize_notes, making the tool's identity 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 states when to use the tool ('useful for build-ups, fade-ins, crescendo rolls, and expressive phrasing') and explicitly contrasts it with humanize_notes for random variation. This gives an agent clear criteria for choosing this tool over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_velocity_lfoA
Apply periodic velocity modulation — velocity LFO along note positions.
Oscillates note velocity cyclically based on each note's position, creating pumping, breathing, or wave-like dynamic motion. Unlike apply_velocity_curve (monotonic ramps), this creates REPEATING velocity patterns synced to beat positions.
Args: unit_index: Audio unit index track_index: Note track index rate: LFO cycles per beat (0.25=every 4 beats, 1.0=per beat, 2.0=twice per beat, 0.5=every 2 beats) depth: Modulation depth 0-1 (0=no change, 0.3=subtle breathing, 1.0=full swing from 0 to max) shape: LFO waveform — "sine" (smooth), "triangle" (linear), "saw" (ramp up), "square" (on/off), "random" (per-beat random) phase: Starting phase 0-1 (0=begin at peak, 0.25=begin at zero rising, 0.5=begin at trough, 0.75=begin at zero falling) center: Center velocity around which modulation oscillates (0-1). The LFO modulates ±depth*center around this value. region_index: Specific region (-1 = all regions)
Returns: JSON with notes_processed, modulation stats (min/max/avg velocity before and after), regions_processed, rate, depth, shape.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | ||
| depth | No | ||
| phase | No | ||
| shape | No | sine | |
| center | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and delivers substantial behavioral context: it explains the oscillating algorithm, parameter formulas (e.g., 'modulates ±depth*center'), and the return payload (notes_processed, min/max/avg stats). However, it does not explicitly state that the operation mutates note velocities in place or warn about destructiveness/reversibility, which would have made it 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 front-loaded with the core purpose, then uses a compact Args block with one line per parameter, followed by a Returns section. Every sentence adds information—the differentiation sentence, parameter examples, and return field list all serve purpose without redundancy. The structure is scannable and efficient for an 8-parameter 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 covers the tool's operation, all parameters, output format, and sibling differentiation, which is strong given the lack of annotations and schema descriptions. Minor gaps remain: no mention of prerequisites (e.g., the target track must be a note track with notes) or error/empty-region behavior, but the core knowledge needed to invoke the tool correctly is 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 0%, but the description fully compensates by documenting all 8 parameters with rich detail: rate includes beat-cycle examples (0.25=every 4 beats, 1.0=per beat), shape enumerates the waveform options and their meanings, phase explains starting positions, and center gives the exact modulation formula. This exceeds what a typical schema description would provide.
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+resource: 'Apply periodic velocity modulation — velocity LFO along note positions,' which precisely states what the tool does. It further clarifies by contrasting with 'apply_velocity_curve (monotonic ramps)' and emphasizing 'REPEATING velocity patterns synced to beat positions,' distinguishing it from sibling velocity 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 names the closest alternative (apply_velocity_curve) and states when to choose this tool over it: for 'pumping, breathing, or wave-like dynamic motion' and repeating patterns rather than monotonic ramps. It also provides concrete scenario descriptors ('pumping, breathing, wave-like') that signal appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_apply_velocity_patternA
Apply a cyclic velocity pattern to existing notes in a region.
The producer's accent pattern tool. Instead of a linear ramp (crescendo), this applies a repeating velocity pattern across notes — the foundation of groove. Examples: strong-weak-medium-weak (backbeat emphasis), staggered accents for syncopation, or dynamic intensity layers.
unit_index: AU index. track_index: Track index. pattern: JSON array of velocity multipliers 0.0-1.0. Cycled across notes in order of position. Example: [1.0, 0.5, 0.7, 0.5] = strong-weak-medium-weak. region_index: Region index (-1 = first region). mode: "cycle" (repeat pattern from start, default) or "stretch" (distribute pattern evenly across all notes — good for 2-note patterns on 16 notes). base_velocity: Base velocity 0-1 that multipliers are applied to (default 0.8). Final velocity = base_velocity * pattern[i % len].
Returns notes modified, pattern applied, and velocity preview.
Examples: apply_velocity_pattern(unit_index=0, track_index=0, pattern="[1.0, 0.5, 0.7, 0.5]") -> 4-note accent cycle: strong-weak-medium-weak on every group of 4 notes apply_velocity_pattern(unit_index=0, track_index=0, pattern="[1.0, 0.3]", base_velocity=0.9) -> Alternating strong/weak at 0.9 and 0.27 apply_velocity_pattern(unit_index=1, track_index=0, pattern="[0.8, 0.4, 0.6, 0.4, 0.9, 0.4, 0.7, 0.4]", mode="stretch") -> 8-note pattern stretched across all notes in region
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | cycle | |
| pattern | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| base_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 exact formula for final velocity, explains cycle vs stretch modes, and states the return payload (notes modified, pattern applied, velocity preview). It doesn't mention irreversibility, but the behavior is well-specified.
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 well-organized with a clear opening, parameter list, formula, and examples. It's somewhat long but every sentence carries meaningful information; the examples add practical clarity without being redundant.
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 6-parameter tool with no annotations, the description is remarkably thorough: it covers all parameters, modes, the underlying formula, return values, and practical examples. It also situates the tool against alternatives, making it easy for an agent to decide when 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?
Schema descriptions are 0% covered, so the description must and does explain every parameter: unit_index, track_index, pattern (with JSON example), region_index, mode (with definitions), and base_velocity (with default and formula). It even provides multiple examples showing parameter combinations.
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: 'Apply a cyclic velocity pattern to existing notes in a region.' It clearly distinguishes from linear ramps/crescendos and positions itself as the accent/groove tool, differentiating it from siblings like apply_velocity_curve or apply_velocity_lfo.
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 contrasts with linear ramps ('Instead of a linear ramp (crescendo)...') and provides concrete use cases (backbeat emphasis, syncopation, dynamic layers). It implies when to use this tool but doesn't explicitly name alternative tools or exclusions beyond the linear ramp contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_augment_notesA
Augment or diminish note durations — the fourth classical transformation.
Multiplies note durations by a factor. Combined with transpose, reverse, and invert, this completes the set of four fundamental motivic transformations used by Bach, Beethoven, and every composition teacher since.
factor > 1.0: augmentation (longer notes, slower feel). 2.0 = double duration.
factor < 1.0: diminution (shorter notes, faster feel). 0.5 = half duration.
factor = 1.0: no change (useful for testing).
Think Beethoven 5th: the opening G-G-G-Eb motif returns augmented (twice as slow) in the recapitulation. Or Bach fugues where the subject appears in diminution (twice as fast) in the finale.
factor: Duration multiplier (0.25-4.0). 2.0 = augmentation, 0.5 = diminution. unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track). mode: How to handle note positions — "scale" (default): multiply both duration AND position relative to region start. The entire phrase slows down or speeds up — notes stay in sequence. "stretch": multiply only duration, leave positions unchanged. Notes become longer/shorter but don't move — may overlap or leave gaps.
Returns count of notes augmented and notes skipped (duration too short/long).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | scale | |
| factor | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses factor effects, mode behavior on note positions (including potential overlaps/gaps), the possibility of skipped notes, and the return value. It omits explicit claims about reversibility or in-place modification, but covers core side effects adequately.
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 well-structured with a clear summary, factor bullets, a musical example, parameter definitions, and return information. It is longer than minimal but justified by complexity; the Beethoven/Bach example, while illustrative, is not essential for an AI agent, making it slightly less concise than a 5.
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 covers core functionality, all parameters, return behavior, and provides real-world context for use. It lacks explicit edge-case handling (e.g., invalid factor range or no notes present) but the mention of skipped notes covers some. Given the output schema captures exact return structure, this is adequately 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 coverage is 0%, so the description is the sole source of parameter meaning. It thoroughly explains every parameter: factor range and effect, unit_index as AU index, track_index as note track, region_index defaulting to -1 for all regions, and mode with two detailed behaviors. This far exceeds the schema's bare type information.
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 ('Augment or diminish note durations') and immediately identifies it as the 'fourth classical transformation', clearly distinguishing it from transpose, reverse, and invert. This makes the tool's purpose unambiguous and differentiates it from 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 provides clear guidance on when to use augmentation vs diminution through factor ranges, and explains the two modes ('scale' and 'stretch') with practical implications for note positions. However, it does not explicitly name alternative tools for other transformations or state when not to use this tool, though it implies complementarity with transpose/reverse/invert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_auto_gainA
Auto-adjust output volume to hit a target LUFS.
Iterative loop: render → measure LUFS → adjust Maximizer threshold → re-render. Converges within ±1 LUFS of target.
target_lufs: Target loudness (Spotify -14, YouTube -14, Apple -16). filename: Output filename (without .wav). sample_rate: Export sample rate (default 48000). max_iterations: Max refinement loops (default 3).
Returns final LUFS, threshold applied, iterations, and WAV path.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | auto_gain_mix | |
| sample_rate | No | ||
| target_lufs | Yes | ||
| max_iterations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 reveals the iterative loop (render → measure LUFS → adjust Maximizer threshold → re-render), convergence tolerance (±1 LUFS), and return values (final LUFS, threshold, iterations, WAV path). It does not state side effects on the project (e.g., whether the original mix is modified), but it gives substantial insight into its 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 well-structured: a one-sentence purpose, a concise algorithm outline, a bullet-style parameter list, and a clear return statement. Every sentence adds meaningful information without 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?
The description covers the tool's purpose, algorithm, parameter semantics, and return values. Since an output schema exists, return details need not be exhaustive. The main missing piece is whether the tool operates on the entire project mix or a specific track, but the name and 'output volume' imply the master output. Overall, 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?
Schema description coverage is 0%, but the description explains all four parameters thoroughly: target_lufs includes platform examples, filename notes that no .wav extension is appended, sample_rate and max_iterations both state defaults. This fully compensates for the missing schema descriptions and adds practical 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 first sentence explicitly states the tool's function: 'Auto-adjust output volume to hit a target LUFS.' This uses a specific verb (auto-adjust), resource (output volume), and outcome (target LUFS), clearly distinguishing it from siblings like measure_lufs (measurement only) or export_mix (export only).
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 by mentioning common streaming loudness targets (Spotify -14, YouTube -14, Apple -16) and describing the iterative process to achieve a target. It does not explicitly name alternative tools or exclusions, but the use case is strongly implied through these examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_automation_sweepA
Create a smooth automation sweep (ramp) between two values over a beat range.
Generates multiple automation events with interpolated values, creating smooth parameter transitions (filter sweeps, volume fades, pitch drops, etc.) in one call. Automatically creates the automation track if it doesn't exist yet.
unit_index: AU index. parameter_name: Instrument parameter to automate (e.g. "cutoff", "volume", "resonance"). start_beat: Start position in beats. end_beat: End position in beats. start_value: Starting normalized value (0.0-1.0). end_value: Ending normalized value (0.0-1.0). steps: Number of interpolation points (default 16, more = smoother). curve: "linear" (even spacing), "exp" (exponential, good for filter sweeps), "log" (logarithmic).
Returns the number of events created and a preview of the first few points.
Example: Filter sweep from closed (0.1) to open (0.9) over 16 beats: automation_sweep(unit_index=0, parameter_name="cutoff", start_beat=0, end_beat=16, start_value=0.1, end_value=0.9, steps=32, curve="exp")
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | linear | |
| steps | No | ||
| end_beat | Yes | ||
| end_value | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| start_value | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses a key side effect: 'Automatically creates the automation track if it doesn't exist yet.' It also explains it generates multiple events and returns a preview. However, it does not mention whether existing automation events are overwritten, whether the operation is reversible, or any error conditions, which is significant for a write 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 well-organized with an overview, parameter list, return note, and example. Every section is useful, though it is somewhat long. The parameter list is necessary given the 0% schema coverage, and the example is valuable. Minor redundancy: the first sentence and the later transition mention overlap.
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, full parameter semantics, return value, and a notable side effect (track creation). It is complete enough for an 8-parameter tool with no annotations. It lacks explicit error handling or edge-case info (e.g., what if start_beat > end_beat), but the provided details are strong.
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 descriptions (coverage 0%), so the description must compensate. It does so thoroughly: every parameter is documented with units (beats, normalized values 0.0-1.0), defaults (steps=16, curve='linear'), curve options with guidance ('exp' for filter sweeps), and an example that ties them together. This exceeds the baseline 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 opens with a clear verb+resource+scope: 'Create a smooth automation sweep (ramp) between two values over a beat range.' It further explains the mechanism (generates interpolated events) and gives concrete examples (filter sweeps, volume fades), distinguishing this general-purpose tool from more specific siblings like create_filter_sweep or create_volume_fade.
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 states context—'creating smooth parameter transitions'—and lists typical use cases (filter sweeps, volume fades, pitch drops). It does not explicitly name alternatives or exclusions, but the use cases make it clear when this tool is appropriate. Lacks explicit 'use this instead of X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_balance_track_velocitiesA
Balance velocities across multiple tracks — MIDI mix leveling.
Sets relative velocity levels across multiple note tracks so they sit correctly in the mix. Unlike scale_velocity (one track at a time), this operates on multiple tracks simultaneously and establishes the relative balance between them.
Presets:
"mix_balanced" — all tracks equal (~0.75). Neutral starting point.
"drums_forward" — drums loudest (0.95), bass (0.80), harmony (0.65), lead (0.70). Hip-hop, rock, electronic.
"vocal_forward" — vocal/lead loudest (0.95), pads (0.60), bass (0.75), drums (0.80). Pop, ballad, singer-songwriter.
"pads_quiet" — pads very quiet (0.50), arp (0.65), bass (0.80), drums (0.90), lead (0.85). Ambient, cinematic.
"bass_heavy" — bass loudest (0.95), drums (0.85), lead (0.70), harmony (0.55). Reggae, dub, trap.
"custom" — use target_velocities parameter (comma-separated 0-1 values, one per track in track_indices order).
The tool reads current average velocities, computes scale factors to reach targets, and applies them. Original relative dynamics within each track are preserved (multiply mode).
track_indices: Comma-separated track indices (e.g. "0,1,2,3"). preset: One of the presets above, or "custom". target_velocities: For custom mode — comma-separated target avg velocities (e.g. "0.9,0.7,0.6,0.8"). Must match track_indices count. region_index: Region (-1 = first, -2 = all regions).
Returns per-track velocity stats before/after.
Example:
Balance 4 tracks: drums, bass, pads, lead
balance_track_velocities(0, "0,1,2,3", preset="drums_forward")
Custom: drums=0.9, bass=0.7, pads=0.5, lead=0.8
balance_track_velocities(0, "0,1,2,3", preset="custom", target_velocities="0.9,0.7,0.5,0.8")
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | mix_balanced | |
| unit_index | Yes | ||
| region_index | No | ||
| track_indices | Yes | ||
| target_velocities | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description takes on the full burden. It discloses the algorithm: reads current average velocities, computes scale factors, and applies them in multiply mode, preserving original relative dynamics. It also notes that per-track velocity stats are returned before/after. This provides solid behavioral insight, though it does not explicitly state reversibility or edge-case handling (e.g., out-of-range targets), which keeps it from a 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 comprehensive but well-organized with clear sections: overview, preset list, parameter definitions, return value, and examples. It is longer than average, but every section adds necessary detail for the tool's complexity. The front-loaded overview immediately conveys the core purpose, and the structured preset list is easy to scan. The lack of a brief parameter list for unit_index slightly affects structural completeness.
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 5 parameters and an output schema, and the description covers the key aspects: purpose, preset behavior, parameter formats, and return value (per-track stats). It includes practical examples for both preset and custom modes. The missing unit_index definition is the primary gap, and since the output schema exists, the description appropriately avoids re-explaining return structure. Overall, the description is complete enough for typical use, but the unit_index omission prevents a perfect score.
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 thoroughly explains track_indices, preset (listing all preset options with target values), target_velocities (format and requirement to match count), and region_index (special values -1 and -2). The only gap is unit_index, which appears only in the example (as the first argument) without explicit explanation in the parameter list. This is a notable omission but the example infers its usage.
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: 'Balance velocities across multiple tracks — MIDI mix leveling.' It clearly states the tool sets relative velocity levels across multiple note tracks. It also explicitly distinguishes itself from the sibling tool scale_velocity, which handles one track at a time, making the purpose 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?
Usage context is explicit: the tool is for balancing velocities across multiple tracks, with a direct comparison to scale_velocity ('Unlike scale_velocity (one track at a time)'). It also provides presets for specific musical genres/mix intentions, giving clear 'when to use' guidance. Examples further illustrate the intended call patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_batch_diagnosticA
Run full diagnostic on multiple stems in one call — problems + phase + profile comparison.
Phantom's batch_diagnostic equivalent. For each stem runs:
detect_problems (clipping, DC offset, mud, harshness, sibilance, resonance)
analyze_phase (polarity, correlation, mono compat) — stereo files only
compare_to_profile (if genre specified)
Produces a prioritized triage report:
dealbreaker: clipping, phase inversion, DC offset
significant: mud, harshness, resonance
moderate: sibilance risk, width issues
minor: slight deviations from profile
filenames: JSON array or comma-separated list of WAV filenames. genre: Optional genre profile for comparison (pop, rock, lo-fi, etc.).
Returns per-stem results + global summary + prioritized fix list.
Example: batch_diagnostic('["vocals.wav","bass.wav","drums.wav","mix.wav"]', genre="rock")
→ {triage: [{stem: "vocals", severity: "significant", problems: [...]}]}
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | ||
| filenames | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden and does so well: it enumerates the checks, the triage severity categories, the return structure, and the input format. It does not explicitly state that the operation is read-only, but 'diagnostic' strongly implies a non-mutating analysis.
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 longer than average but well-structured with numbered sub-checks, bullet points, and a short example. The first sentence front-loads the core purpose. Some redundancy exists between 'Produces a prioritized triage report' and the later return summary, but the structure keeps it 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 complex batch tool with an output schema, the description covers the input parameters, the per-stem analysis pipeline, the severity classification, and the result shape. It does not need to detail every return field because an output schema exists, and the provided example gives a concrete preview.
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 filenames as either a JSON array or comma-separated list of WAV filenames, and genre as an optional profile. This adds meaningful type and usage context 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?
The description starts with a specific verb and resource: 'Run full diagnostic on multiple stems in one call', listing the three sub-analyses performed. It clearly distinguishes itself from siblings like detect_problems, analyze_phase, and compare_to_profile by framing it as their batch combination.
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 clear this is for multi-stem diagnostics, mentions that phase analysis applies only to stereo files, and notes genre comparison is optional. It does not explicitly state 'use this instead of calling individual analysis tools', but the context is adequately conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_capture_realtimeA
Capture realtime audio output from the DAW engine.
Records the live audio output for a specified duration. The engine must be running (call start_engine first). Useful for capturing live playback with effects, automation, and real-time processing.
duration_seconds: How long to record (float, e.g. 10.0). filename: Output WAV filename (without extension).
Returns file path and size, or error if engine not running.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| duration_seconds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses return behavior ('Returns file path and size'), error conditions ('or error if engine not running'), and a filename constraint ('without extension'). It could also mention side effects (e.g., whether a region is placed in the project), but the disclosed traits are 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?
The description is concise and well-structured: first line states the purpose, followed by usage context, then parameter details, then return/error behavior. Every sentence earns its place with no 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?
For a two-parameter capture tool, the description covers the what, when, prerequisite, parameter semantics, and return format. It omits explicit alternative tool comparisons and potential side effects like whether an audio region is added to the project, but given the output schema exists and the tool is simple, 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?
Schema descriptions are completely absent (0% coverage), and the description fully compensates by explaining each parameter with type and example: 'duration_seconds: How long to record (float, e.g. 10.0)' and 'filename: Output WAV filename (without extension).' This adds clear meaning beyond the bare schema 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 states a specific verb+resource+method: 'Capture realtime audio output from the DAW engine' and clarifies it records live playback with effects and automation. This clearly distinguishes it from offline render/export tools like render_range or export_mix.
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 clear context and a prerequisite: 'The engine must be running (call start_engine first).' Also states when it's useful (live playback, effects, automation). However, it does not explicitly name alternatives or exclusions (e.g., 'for offline rendering use render_range'), so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_change_base_signatureA
Change the base time signature of the project.
This changes the initial signature (default 4/4). All existing signature change events are recalculated to preserve their approximate absolute positions.
nominator: Number of beats per bar (e.g. 4 for 4/4, 3 for 3/4, 6 for 6/8). denominator: Beat unit (1=whole, 2=half, 4=quarter, 8=eighth, 16=sixteenth).
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| nominator | Yes | ||
| denominator | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently states that existing signature change events are recalculated to preserve approximate absolute positions, which is a critical side effect. It also discloses the default signature and return type, offering meaningful behavioral context beyond a simple 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 compact and well-structured: a single-sentence purpose, a single-sentence side effect, two lines of parameter definitions, and a return note. Every sentence adds value 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?
Given the tool's simple two-parameter schema and lack of annotations, the description covers all essential aspects: purpose, side effects, parameter semantics, and return value. The output schema further reduces the need to describe return details, making this description complete for safe and effective 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 input schema has 0% description coverage, but the description fully explains both parameters with examples and valid values (e.g., nominator 4 for 4/4, denominator 4 for quarter note). This provides the agent with all necessary information to construct correct arguments without 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 ('Change the base time signature of the project') with a specific resource and scope. It distinguishes itself from sibling tools by emphasizing the 'base' or 'initial' signature and noting that existing signature change events are recalculated, which sets it apart from tools like add_signature_change or set_time_signature.
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 on what the tool does and its effect on existing signature changes, implying it is for global signature changes rather than per-position edits. However, it does not explicitly mention alternative tools or state when not to use it, 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.
mcp_opendaw_classify_drum_patternA
Classify a drum pattern from MIDI notes in a region.
Analyzes drum note positions, pitches (GM drum map: 36=kick, 38=snare, 42=closed hat, 46=open hat, 50=high tom, 45=low tom, 49=crash, 51=ride), and velocities to classify the pattern as one of: four-on-the-floor, breakbeat, boom-bap, trap, shuffle, half-time, military/march, amen, unknown.
Essential for: understanding existing drum patterns, matching genre expectations, verifying generated patterns, and suggesting variations.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track).
Returns pattern classification with confidence, features, and per-bar breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 details what is analyzed (drum note positions, pitches with GM mapping, velocities) and the output structure (classification, confidence, features, per-bar breakdown), which gives a thorough understanding of the operation. It does not explicitly state that the tool is read-only, but the analysis-oriented language makes this 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 organized into clear sections: a one-sentence summary, analysis method, use cases, parameters, and return value. While it is fairly long, the GM drum map list adds useful domain context for a specialized tool. Each section earns its place; no superfluous 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 covers the essential aspects for using this tool correctly: what it does, what inputs to provide (including default semantics), what it returns, and when it is valuable. Given the complexities of drum pattern classification and the existence of an output schema, the description is sufficiently complete, though it could mention edge cases such as empty regions or non-GM-mapped notes.
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 description coverage, so the description must compensate. It does so effectively by explaining each parameter ('unit_index: AU index (-1 = all AUs)', 'track_index: Note track index (-1 = all note tracks)', 'region_index: Region index (-1 = all regions on track)'), including the meaning of defaults. This goes well beyond the 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 clearly states the tool's purpose with a specific verb ('classify') and resource ('a drum pattern from MIDI notes in a region'). It enumerates the pattern types and explains the analysis inputs, making the tool's function unambiguous. However, it does not explicitly differentiate itself from similar drum-analysis siblings like transcribe_drums or extract_rhythm.
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 explicit use cases under 'Essential for:' (understanding existing drum patterns, matching genre expectations, verifying generated patterns, suggesting variations), giving clear context for when to invoke the tool. It does not mention exclusions or alternatives, which would earn a 5, but the stated purposes are sufficiently specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_clear_region_notesADestructive
Clear all notes from a region while keeping the region on the timeline.
Removes every note event from the specified region(s) but preserves the region itself — its position, duration, and track placement stay intact. This is the "erase and rewrite" operation: the producer wants to clear a region to start fresh, without deleting and recreating the region container.
Different from delete_note_region (which removes the entire region from the timeline) and delete_note (which removes one note at a time).
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all note regions on the track).
Returns notes cleared and remaining region info.
Examples: clear_region_notes(unit_index=0, track_index=0, region_index=0) -> Erase all notes in region 0, region stays on timeline clear_region_notes(unit_index=0, track_index=0, region_index=-1) -> Erase all notes in ALL regions on track 0
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though the annotation destructiveHint=true already signals mutating behavior, the description goes further by explaining precisely what is preserved (region position, duration, track placement) and what is returned (notes cleared, remaining region info). It also documents the special -1 behavior, adding transparency beyond the annotation.
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 well-structured: a one-line summary, a clarifying elaboration, differentiation from siblings, parameter explanations, return value note, and two examples. Every sentence adds value, and the front-loaded summary immediately conveys 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?
Given the tool's destructive nature and three parameters, the description is complete: it covers behavior, scope, special values, return values, and even provides worked examples. The output schema isn't shown, but the return value is described in prose, and the sibling differentiation fills any remaining context 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?
The input schema has 0% description coverage, so the description must fully compensate. It does: unit_index, track_index, and region_index are all explained, with the crucial -1 = all note regions on the track semantics. Concrete examples make parameter usage crystal clear.
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+resource: 'Clear all notes from a region while keeping the region on the timeline.' It clearly distinguishes itself from siblings by explicitly comparing to delete_note_region and delete_note, making the 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 explicitly states when to use this tool: as the 'erase and rewrite' operation when the producer wants to start fresh without deleting the region container. It also names alternatives and what they do differently, giving clear when-to-use vs. when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_clone_clipA
Clone a clip (note or value) on the same track. Optionally consolidate (make event collection unique).
unit_index: AU index. track_index: Track index within the AU. clip_index: Clip index to clone. consolidate: If true, the clone gets its own independent event collection (not shared).
Returns success, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | ||
| unit_index | Yes | ||
| consolidate | No | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the core behavior: cloning a clip and the optional consolidation that makes the event collection independent (not shared). It also mentions the return value (success or error). While it doesn't cover reversibility or side effects on the original clip, it goes beyond the schema and offers meaningful behavioral insights.
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: it opens with the main action and then provides a clean, structured parameter list. Every sentence adds value, with no repetition of schema details or 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?
Given the tool's moderate complexity, the description covers the operation, parameters, and return behavior. An output schema is present, so detailed return values need not be described. The description is complete for an agent to select and 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 description provides explicit, meaningful explanations for all parameters: unit_index is an AU index, track_index is within the AU, clip_index is the clip to clone, and consolidate controls whether the clone gets its own independent event collection. This is far more informative than the minimal type/title info in the schema, which has 0% 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's purpose: cloning a clip (note or value) on the same track. It uses a specific verb (clone) and resource (clip), and distinguishes it from other clip operations like delete, list, or set properties.
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 that this tool is used for cloning a clip onto the same track, with optional consolidation. It explains each parameter, giving the agent enough context to determine when to use it. However, it does not explicitly mention alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_clone_effect_chainA
Copy all effects from one audio unit to another, including parameter values.
Useful for applying the same vocal chain (EQ → compressor → reverb) to doubled vocal tracks.
src_unit: Source audio unit index. dst_unit: Destination audio unit index (effects appended to existing chain).
Returns list of cloned effects with their new indices.
| Name | Required | Description | Default |
|---|---|---|---|
| dst_unit | Yes | ||
| src_unit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 reveals that parameter values are included, effects are appended to the existing chain, and the return is a list of cloned effects with new indices. It does not explicitly state that the source is unchanged, but "copy" implies non-destructive behavior; a bit more explicitness would merit a 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?
Four sentences, front-loaded with purpose, followed by a use case, parameter explanations, and return value. Every sentence earns its place with no fluff 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 two-parameter tool with an output schema, the description adequately covers the purpose, when to use it, parameter semantics, and the return value. No critical missing information 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?
Schema coverage is 0%, so the description must compensate. It explains both parameters: "src_unit: Source audio unit index" and "dst_unit: Destination audio unit index (effects appended to existing chain)." This adds meaningful context beyond the bare integer types 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 a specific action: "Copy all effects from one audio unit to another, including parameter values." This distinguishes it from siblings like move_effect or duplicate_effect by focusing on the entire effect chain rather than a single effect.
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 concrete use case: "Useful for applying the same vocal chain (EQ → compressor → reverb) to doubled vocal tracks." Also notes the append behavior for the destination unit. Does not explicitly mention when not to use it or name alternative tools, but 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.
mcp_opendaw_clone_trackA
Clone a track — full duplication of notes, regions, and structure.
Creates a new track within the same audio unit (or a new audio unit) with all notes from the source track copied over. Optionally transposed, velocity-scaled, and time-shifted.
Unlike copy_notes_to_track (which copies notes between existing tracks), clone_track creates the destination track from scratch with the correct track type (note/audio), then populates it with a region and all notes from the source.
Essential for:
Doubling: same notes on two instruments for thicker sound
Octave layering: transpose +12 for octave above
Parallel harmony: transpose +7 for fifths, +3 for thirds
Call-and-response: time_offset to shift the copy later
Counterpoint layer: same rhythm, different transposition
Args: unit_index: Source audio unit index track_index: Source track index within the unit name: Optional name for the cloned track (default: same as source) transpose: Semitone transposition applied to cloned notes (-24 to +24, default 0 = same pitch) velocity_scale: Multiply note velocities by this factor (0.1-2.0, default 1.0 = same velocity) time_offset_beats: Shift all notes by this many beats (-16 to +16, default 0.0 = same position) new_unit: If true, create a new audio unit for the clone (requires same instrument type). If false (default), adds a new track to the source audio unit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| new_unit | No | ||
| transpose | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| velocity_scale | No | ||
| time_offset_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency burden. It clearly discloses creation behavior (new track in same or new audio unit), what is copied (notes, regions, structure), and key constraints (new_unit requires same instrument type). However, it does not explicitly state whether the source track remains unmodified or mention undo behavior, which would be valuable for a mutation-like 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 well-structured with a summary, alternative comparison, practical use cases, and parameter list. Every section adds value; the use-case list is concise and illustrative without being verbose. It is front-loaded with the core purpose and keeps parameter descriptions tight.
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 7-parameter cloning tool with no annotations, the description is remarkably complete. It covers what the tool does, when to use it, key behavioral details, and parameter semantics. The output schema exists, so no requirement to describe return values. The only minor omission is error-handling specifics, but overall it is comprehensive.
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 0% description coverage, but the description compensates fully with detailed parameter explanations, including ranges and defaults for transpose (-24 to +24), velocity_scale (0.1-2.0), and time_offset_beats (-16 to +16), plus a clear explanation of new_unit's behavior. This goes well beyond the schema's bare titles 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 opens with 'Clone a track — full duplication of notes, regions, and structure,' which is a specific verb+resource with clear scope. It further differentiates itself from copy_notes_to_track by stating it creates a new track from scratch, making the 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?
Explicitly contrasts with copy_notes_to_track: 'Unlike copy_notes_to_track (which copies notes between existing tracks), clone_track creates the destination track from scratch.' Also provides a list of concrete use cases ('Essential for: Doubling, Octave layering, Parallel harmony...') that tell the agent when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_compact_tracksA
Remove empty tracks from an audio unit (or all AUs).
Calls ProjectApi.compactTracks() — removes tracks with no regions. Useful cleanup after deleting regions or editing.
unit_index: Audio unit index (-1 = all AUs).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It does disclose the destructive action ('Removes tracks with no regions') and the parameter scope (unit_index, -1 for all AUs). However, it does not mention whether the action is reversible/undoable, what happens to related automation/sends, or any side effects beyond track removal. The core behavior is transparent enough for a simple cleanup tool, but lacks deeper 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 brief and well-structured: an opening statement of purpose, a reference to the underlying API method with a definition, a usage tip, and a parameter explanation. Every sentence adds value, with no redundant or unnecessary content.
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 parameter and a clear destructive action, the description covers the essential aspects: what it does, when to use it, and what the parameter means. It does not detail the return value, but an output schema is provided, which likely covers that. Minor ambiguities like 'empty tracks' vs 'tracks with no regions' are immediately clarified, so the description is largely 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 explain parameters. It does so fully: 'unit_index: Audio unit index (-1 = all AUs).' This clarifies the parameter's meaning and the special sentinel value, which is critical for correct invocation. No additional detail is needed for this single-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 clearly states the tool's purpose: 'Remove empty tracks from an audio unit (or all AUs).' It gives a specific verb+resource and clarifies that it 'removes tracks with no regions,' distinguishing it from sibling tools like delete_track or delete_region. The scope (specific AU or all AUs) is also 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?
The description provides a clear usage context: 'Useful cleanup after deleting regions or editing.' This tells the agent when to invoke the tool, though it does not explicitly mention alternatives or when not to use it. Still, the guidance is actionable and relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_compare_to_profileA
Compare your mix against a professional genre reference profile.
Tells you exactly where your mix deviates from genre standards:
LUFS: too loud/quiet for this genre?
Spectrum: which frequency bands are off?
Stereo width: appropriate for genre?
Dynamics: too compressed or too wild?
Spectral centroid: too dark or too bright?
Gives per-dimension deviation + specific recommendations.
filename: WAV file in exports dir, or absolute path. genre: One of: pop, rock, hip_hop, electronic, edm, metal, lo-fi, ambient, cinematic
Returns deviation analysis with severity-ranked suggestions.
Example: compare_to_profile("my_mix.wav", "lo-fi")
→ {lufs_deviation: +3.4, spectral_deviations: [...], suggestions: [...]}
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety/behavior burden; it discloses that the tool 'returns deviation analysis with severity-ranked suggestions' and gives example output, but it does not explicitly state that the operation is read-only or non-destructive, or how invalid filenames/genres are handled.
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 action, uses a scannable bullet list for output dimensions, and then gives parameter details and an example. It is slightly long but every section 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?
The description covers inputs, output style, dimensions, and example; output schema handles return details. It could mention prerequisites (e.g., exported WAV existence) but is otherwise complete for a two-parameter analysis 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 0%, yet the description documents both required parameters: filename (WAV in exports dir or absolute path) and genre (with an explicit list of accepted values). It even provides an example call, going well 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?
The description leads with 'Compare your mix against a professional genre reference profile' and enumerates the exact deviation dimensions (LUFS, spectrum, stereo width, dynamics, spectral centroid), making it distinct from generic analysis tools and the sibling compare_to_reference.
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's use case (genre-standards comparison) and provides a concrete example, but it never explicitly states when to prefer this over sibling tools like compare_to_reference or match_to_reference, nor 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.
mcp_opendaw_compare_to_referenceA
A/B compare your mix against a reference track across all dimensions.
Shows exactly where your mix differs from a professional reference:
LUFS difference (loudness gap)
Spectral curve deviation per band
Stereo width comparison
Dynamic range comparison
Spectral centroid (brightness) comparison
This is how you learn how pros mix your genre. Drop in a reference track you admire and see exactly what's different.
filename: Your mix WAV (exports dir or absolute path). reference: Reference track WAV (exports dir or absolute path).
Returns per-dimension comparison + actionable deltas.
Example: compare_to_reference("my_mix.wav", "pro_reference.wav")
→ {lufs_delta: +2.3, spectral_deltas: [...], suggestions: [...]}
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 what the tool measures (five dimensions), what it returns ('per-dimension comparison + actionable deltas'), and provides an example output. It also specifies WAV file types and path resolution ('exports dir or absolute path') for both parameters, adding behavioral context 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 well-structured with a clear purpose sentence, bullet list of dimensions, parameter notes, and a code example. The motivational phrase 'This is how you learn how pros mix your genre' is slightly redundant but does not harm comprehension. Overall, it is appropriately sized for the tool's complexity.
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 moderate complexity and the presence of an output schema, the description sufficiently covers the tool's function, inputs, and example return. It could mention prerequisites like matching file lengths or sample rates, but the dimension list and path details give enough context for an agent to select and 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?
Schema description coverage is 0%, so the description must compensate, and it does. It dedicates a line to each parameter: 'filename: Your mix WAV (exports dir or absolute path)' and 'reference: Reference track WAV (exports dir or absolute path).' This clarifies file type, path conventions, and roles, fully covering the two required parameters. The example further illustrates usage.
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/B compare your mix against a reference track across all dimensions' with a specific verb and resource. It enumerates five concrete comparison dimensions (LUFS, spectral curve, stereo width, dynamic range, spectral centroid), which distinguishes it from sibling analysis tools like analyze_mix or measure_lufs.
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 for use: 'This is how you learn how pros mix your genre. Drop in a reference track you admire and see exactly what's different.' This implies when to use it, but it does not explicitly mention exclusions or contrast it with alternatives like compare_to_profile or match_to_reference, which are siblings with potentially overlapping purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_connect_modular_modulesA
Connect two modules in a Modular device (create a patch cable).
au_index: Audio unit index. effect_index: Effect index within the AU. source_module_index: Index of the source module. source_output_name: Name of the output connector (e.g. "Output", "Result"). target_module_index: Index of the target module. target_input_name: Name of the input connector (e.g. "Input", "X", "Y").
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| au_index | Yes | ||
| effect_index | Yes | ||
| target_input_name | Yes | ||
| source_output_name | Yes | ||
| source_module_index | Yes | ||
| target_module_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It only states 'Returns success or error', without disclosing details about side effects, whether existing connections are replaced, permissions required, or error conditions. For a mutation tool, this is insufficient.
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 one sentence for the purpose, followed by a clean parameter list, and a closing return statement. All information is relevant and efficiently presented.
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 6-parameter tool with no annotations, this description covers purpose, each parameter's role, and the return value. It lacks behavioral depth (side effects, error scenarios) and usage guidance, but the core essentials are present. The output schema exists, so return values need not be detailed further.
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?
With 0% schema description coverage, the description compensates by listing all six parameters with explanatory text. It adds examples for connector names ('Output', 'Result', 'Input', 'X', 'Y'), which goes beyond the raw schema. Some descriptions (e.g., 'Audio unit index') are terse but still meaningful.
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 'Connect two modules in a Modular device' and clarifies with '(create a patch cable)'. This clearly distinguishes it from sibling tools like list_modular_modules or add_modular_module.
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 implication is clear: use this to connect modules. However, it does not explicitly state when to prefer this over alternatives, nor does it mention exclusions or related tools. The usage context is clear but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_connect_sidechainA
Connect one audio unit's output as sidechain source to a Compressor/Gate on another unit.
source_unit_index: Audio unit whose output triggers the sidechain (e.g. drums). target_unit_index: Audio unit with the Compressor/Gate effect (e.g. bass). effect_index: Effect position on the target unit (must have a sideChain field).
The target effect must be Compressor, Gate, Vocoder, or any effect with Pointers.SideChain.
| Name | Required | Description | Default |
|---|---|---|---|
| effect_index | Yes | ||
| source_unit_index | Yes | ||
| target_unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses a key behavioral requirement: the target effect must have a sideChain field and be of specific types. Does not warn about potential overwriting of existing sidechain connections or errors, but is fairly transparent for a connection 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 concise and well-structured: a one-sentence summary followed by a bulleted parameter list and a constraint note. Every sentence adds value; no 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 the output schema exists and the operation is moderately simple, the description covers the necessary context: what it does, how parameters work, and which effects are supported. It is complete enough for an agent to select and 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?
Schema has zero description coverage, but the description explains all three parameters with examples: source_unit_index (drums), target_unit_index (bass), and effect_index (position on target). This fully compensates for the schema 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 opens with a specific verb+resource: 'Connect one audio unit's output as sidechain source to a Compressor/Gate on another unit.' This clearly distinguishes the tool from siblings like apply_sidechain by emphasizing the connection action and target effect 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?
Provides clear context by naming example units (drums, bass) and constraining the target effect to Compressor, Gate, Vocoder, or any effect with Pointers.SideChain. Lacks an explicit when-not-to-use or alternative recommendation, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_consolidate_clipA
Consolidate a clip's event collection — make it unique (not shared/mirrored).
If a clip shares its event collection with other clips (mirrored), this creates a new independent copy so edits don't affect other clips.
unit_index: AU index. track_index: Track index within the AU. clip_index: Clip index to consolidate.
Returns success, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the primary behavior (creating an independent copy) and mentions return status ('Returns success, or error'). However, it omits potential side effects, reversibility, and details about failure modes, leaving notable 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?
The description is appropriately sized and well-structured, with a clear definition, condition, and parameter list. The final 'Returns success, or error.' is slightly redundant but not harmful. Overall, it is concise and 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?
For a mutation tool with no annotations, no output schema details, and 0% schema coverage, the description lacks important context. It does not explain prerequisites (e.g., clip must exist), the meaning of 'event collection,' or what happens to the original clip after consolidation. It is insufficient for a complete 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?
Schema description coverage is 0%, so the description must compensate. It adds brief semantics for each parameter: 'unit_index: AU index', 'track_index: Track index within the AU', 'clip_index: Clip index to consolidate.' This clarifies the index hierarchy but does not elaborate on indexing conventions or how to obtain these indices.
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: 'Consolidate a clip's event collection — make it unique (not shared/mirrored).' It uses a specific verb+resource and explicitly distinguishes from sibling tools like consolidate_region and consolidate_note by targeting the clip's event collection.
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 condition: 'If a clip shares its event collection with other clips (mirrored), this creates a new independent copy so edits don't affect other clips.' This indicates when to use the tool, though it does not explicitly list alternatives 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.
mcp_opendaw_consolidate_noteA
Consolidate a repeated note (playCount > 1) into individual separate notes.
If a note has playCount > 1, it represents N repeats controlled by playCurve. This expands it into N independent notes, each with playCount=1, positioned according to the curve. The original note is deleted.
unit_index: AU index. track_index: Note track index. region_index: Note region index. note_index: Note index within the region.
Returns the number of notes created, or error if note has playCount=1.
| Name | Required | Description | Default |
|---|---|---|---|
| note_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral disclosure burden. It explicitly discloses that the original note is deleted, that the new notes are created as independent playCount=1 notes positioned according to the curve, and that the return value is the number created or an error when playCount=1. This gives the agent essential side-effect and outcome 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 compact and well-structured. It opens with a clear one-line purpose, follows with a concise explanation of the transformation, lists parameter meanings succinctly, and closes with the return/error behavior. Every sentence carries useful information 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 description fully covers the tool's preconditions, behavior, parameter semantics, and return/error behavior. Although an output schema is indicated, the description also states the return value explicitly. Given the moderate complexity and the zero-coverage input schema, this description is sufficiently complete for an agent to select and 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 provides only parameter names and integer types, with zero description coverage. The description compensates fully by defining each parameter's role: unit_index (AU index), track_index, region_index, and note_index within the region. This adds precise hierarchical 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?
The description clearly identifies the operation: consolidating a repeated note (playCount > 1) into individual separate notes. It uses a specific verb ('consolidate') plus the exact target resource (repeated note), and explicitly distinguishes this from ordinary note operations by describing the playCount condition and the expansion 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 gives clear usage context: apply when a note has playCount > 1 and needs to be expanded into independent notes. It also states an exclusion/error case (playCount=1). However, it does not explicitly name alternatives or discuss when other consolidation tools might be more appropriate, so it falls slightly short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_consolidate_regionA
Consolidate a region's event collection — make it unique (not shared/mirrored).
If a region shares its event collection with other regions (mirrored), this creates a new independent copy so edits don't affect other regions.
unit_index: AU index. track_index: Track index within the AU. region_index: Region index to consolidate.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the key behavior: if the region shares its collection, a new independent copy is created so edits don't affect other regions. It also mentions the return type (success or error). Missing details like reversibility or side effects on the original collection, but the core behavioral trait is disclosed.
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 efficient: a clear opening sentence, a conditional behavior explanation, a structured parameter list, and a return statement. No fluff, all sentences earn their 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 (3 integer parameters, no nested objects) and the presence of an output schema, the description covers the necessary aspects: operation, condition for use, parameter meanings, and return status. It could be improved by clarifying behavior when the region is not shared, but overall it is 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 coverage is 0%, so the description must compensate. It provides concise explanations for each parameter: unit_index, track_index, and region_index, giving domain context that the schema lacks. This adds real meaning beyond the raw integer 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 uses a specific verb-resource pair ('Consolidate a region's event collection') and clearly explains the outcome: making it unique (not shared/mirrored). This distinguishes it from sibling tools like consolidate_clip or duplicate_region by focusing on the mirrored-event-collection context.
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 describes the scenario where this tool is appropriate: when a region's event collection is shared/mirrored with other regions and you want an independent copy. It does not list alternative tools or when-not-to-use cases, but the conditional context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_constrain_note_rangeA
Constrain notes to a pitch range — clamp or octave-wrap out-of-range notes.
After AI generation, transcription, or aggressive transposition, notes can land outside the playable range of an instrument. This tool brings them back inside.
Two modes:
"clamp" — notes below min_pitch are set to min_pitch, notes above max_pitch are set to max_pitch. Preserves the note but loses pitch information. Use when exact range matters (e.g. MIDI 0-127 safety).
"octave_wrap" — notes are shifted by octaves (±12 semitones) until they fall within [min_pitch, max_pitch]. Preserves pitch class and musical relationship. Use for instrument range constraints (violin, guitar, vocal, flute). If a note can't fit even after wrapping (range < 12 semitones), it's clamped.
Common instrument ranges (MIDI note numbers):
Guitar (standard tuning): E2(40) to E6(88)
Bass guitar: E1(28) to G4(67)
Violin: G3(55) to A7(105)
Cello: C2(36) to C6(84)
Flute: C4(60) to D7(98)
Vocal soprano: C4(60) to A5(81)
Vocal bass: E2(40) to E4(64)
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). min_pitch: Minimum allowed MIDI pitch (0-127, default 0 = no lower bound). max_pitch: Maximum allowed MIDI pitch (0-127, default 127 = no upper bound). mode: "clamp" (hard limit) or "octave_wrap" (shift by octaves to fit).
Returns per-track notes adjusted, clamped count, wrapped count.
Example:
Constrain to guitar range with octave wrapping
constrain_note_range(unit_index=0, track_index=2, min_pitch=40, max_pitch=88, mode="octave_wrap")
Safety clamp to MIDI range
constrain_note_range(mode="clamp", min_pitch=0, max_pitch=127)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | clamp | |
| max_pitch | No | ||
| min_pitch | No | ||
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the effect on notes (clamping loses pitch info, wrapping preserves pitch class), the fallback behavior, and the return values (adjusted/clamped/wrapped counts). However, it does not state whether the operation is destructive/in-place or if it can be undone, which is a minor transparency 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?
The description is long but well-organized with clear sections: introduction, mode explanations, common instrument ranges, parameter list, returns, and examples. Every element adds value and there is no fluff 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 tool with 6 parameters, two modes, and no annotations, the description covers all necessary context: what problem it solves, how each mode behaves, parameter semantics, return values, and concrete examples. The added instrument range reference is a thoughtful extra that helps agents choose appropriate min/max values.
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?
With 0% schema description coverage, the description fully compensates by explaining every parameter: unit_index, track_index, region_index with '-1 = all' semantics, min/max_pitch with defaults and bounds, and mode values with explanations. This completely covers what the schema lacks.
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 exactly what the tool does: 'Constrain notes to a pitch range' with two distinct modes (clamp and octave_wrap). It clearly identifies the use case (notes out of playable range after generation/transposition) and distinguishes this from sibling tools like transpose_notes or rotate_notes.
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?
Explicit guidance is given on when to use the tool ('After AI generation, transcription, or aggressive transposition') and when to choose each mode: clamp for exact range safety (e.g., MIDI 0-127), octave_wrap for instrument ranges. The edge case of ranges smaller than 12 semitones is also documented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_convert_audioA
Convert an exported WAV file to MP3 or FLAC using system ffmpeg.
filename: Source WAV filename (without .wav extension, in the export dir). format: 'mp3' or 'flac' (default 'mp3'). bitrate: MP3 bitrate for CBR mode (default '320k'). Ignored for FLAC. quality: MP3 VBR quality 0-9 (0=best, 9=worst). Use -1 for CBR (default).
Requires system ffmpeg (not browser WASM). Falls back gracefully if missing. Returns path to the converted file and size info.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | mp3 | |
| bitrate | No | 320k | |
| quality | No | ||
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 system ffmpeg is required (not browser WASM), that it falls back gracefully if missing, and that it returns the path and size info. It does not detail overwrite behavior or failure modes, but the key operational traits 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 compact and well-structured: a one-sentence summary, a tight parameter list, then dependency and return information. Every line adds value and there is 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 moderate conversion tool, it covers the source location, target formats, parameter defaults, system requirement, fallback behavior, and return value. The fallback statement is a bit vague ('falls back gracefully' without specifying the actual behavior), and it doesn't mention output destination or filename conventions, but the presence of an output schema and the existing detail make it functionally 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?
The schema has zero descriptions for its 4 parameters, but the description documents each one thoroughly: filename (source, without .wav, in export dir), format (mp3/flac, default mp3), bitrate (MP3 CBR, default 320k, ignored for FLAC), and quality (VBR 0-9, -1 for CBR, default). This adds complete 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?
The description opens with a specific verb and resource: 'Convert an exported WAV file to MP3 or FLAC using system ffmpeg.' This clearly distinguishes the tool from siblings like export_mix or download_audio by stating its exact purpose and target formats.
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 context: source is an exported WAV file in the export dir, and it notes the requirement for system ffmpeg with graceful fallback. It does not explicitly name alternatives or exclusion cases, but the scope (WAV to MP3/FLAC) and prerequisites are clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_copy_notes_to_trackA
Copy notes from one track/region to another track — MIDI layering and doubling.
Copies all notes from a source region to a destination track's first region. Optional transpose (semitones), time offset (beats), and velocity scaling.
Use cases:
Layer drums: copy drum track to second track with different instrument
Create harmony: copy melody +12 (octave) or +7 (fifth)
Call-and-response: copy with time_offset to create echo
Doubles: copy to same track position with slight transpose for thickening
source_unit_index: Source AU index. source_track_index: Source note track index. dest_track_index: Destination note track index. source_region_index: Source region (-1 = first region). dest_unit_index: Destination AU index (-1 = same as source). transpose: Semitone offset (-127 to 127, 0 = same pitch). time_offset: Beat offset for copied notes (0 = same position, 2 = two beats later). velocity_scale: Multiply velocity of copied notes (1.0 = same, 0.7 = quieter layer).
Returns count of notes copied.
Example:
Layer drums — copy track 0 to track 2
copy_notes_to_track(0, 0, 2)
Create octave harmony — copy melody +12
copy_notes_to_track(0, 3, 4, transpose=12, velocity_scale=0.7)
Echo effect — copy 2 beats later at half velocity
copy_notes_to_track(0, 0, 1, time_offset=2, velocity_scale=0.5)
| Name | Required | Description | Default |
|---|---|---|---|
| transpose | No | ||
| time_offset | No | ||
| velocity_scale | No | ||
| dest_unit_index | No | ||
| dest_track_index | Yes | ||
| source_unit_index | Yes | ||
| source_track_index | Yes | ||
| source_region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 copies go to the destination track's first region, explains optional transforms, and states the return value. However, it doesn't clarify whether copying adds to or replaces existing notes in the destination region, which is a significant behavioral trait for a music 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 well-structured and front-loaded with the core purpose. It includes a brief summary, use cases, parameter explanations, return value, and examples—all without fluff. Every section earns its place, 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 covers operation purpose, all 8 parameters, return value, and provides examples. It is complete enough for a copy tool with this complexity, though it could mention edge cases like missing regions or whether destination notes are cleared. The presence of an output schema reduces the need to explain return details further.
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. It describes every parameter with meaningful detail, including defaults, ranges, and examples (e.g., 'transpose: Semitone offset (-127 to 127, 0 = same pitch)'). The examples further clarify parameter usage.
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 and resource: 'Copy notes from one track/region to another track — MIDI layering and doubling.' It distinguishes from siblings like copy_region_to_track by specifying notes, not regions, and by highlighting MIDI layering and doubling use cases.
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 concrete use cases (layer drums, harmony, echo, doubles) that tell when to use this tool. It doesn't explicitly mention alternatives or when not to use, but the use cases offer clear context for choosing this tool over similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_copy_playfield_sampleA
Copy a Playfield (drum machine) sample to a new index slot.
Duplicates the sample with all its parameters (mute, solo, pitch, attack, release, sampleStart, sampleEnd, gate, exclude, polyphone) to a new slot.
unit_index: AU index containing the Playfield instrument. sample_index: Source sample slot index. target_index: Destination slot index.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| sample_index | Yes | ||
| target_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the sample is duplicated with a specific list of parameters and that it returns success or error. However, it lacks edge-case behavior such as whether an existing target_index is overwritten or replaced, which is important 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 concise and well-structured: an action sentence, a details paragraph enumerating copied parameters, parameter definitions, and the return type. Every sentence earns its place, and the important verb 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 tool with three simple integer parameters and an output schema, the description covers the operation, parameter meanings, and return value. It is missing minor behavioral details (e.g., target slot overwrite behavior), but overall 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?
The input schema provides only integer types with no descriptions (0% coverage). The description fully compensates by giving clear one-line explanations for each parameter: unit_index (AU index), sample_index (source slot), and target_index (destination slot). This is strong added 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?
The description opens with a specific verb+resource+destination: 'Copy a Playfield (drum machine) sample to a new index slot.' It clearly states the operation and lists the exact parameters that get duplicated, which differentiates it from create_playfield_sample or other sample-related 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 (copying/duplicating rather than creating) but does not explicitly state when to use this tool instead of siblings like create_playfield_sample. No exclusions or alternative tools are mentioned, leaving the usage decision partly to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_copy_region_fadesA
Copy fade in/out settings from one audio region to another.
Copies fadeIn, fadeOut, fadeInSlope, fadeOutSlope from the source region's Fading object to the destination region's Fading object.
src_unit/src_track/src_region: Source region coordinates. dst_unit/dst_track/dst_region: Destination region coordinates.
Returns the copied fade values.
| Name | Required | Description | Default |
|---|---|---|---|
| dst_unit | Yes | ||
| src_unit | Yes | ||
| dst_track | Yes | ||
| src_track | Yes | ||
| dst_region | Yes | ||
| src_region | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the exact behavior (which fade properties are copied from the source Fading object to the destination Fading object) and the return value ('Returns the copied fade values'), making the mutation of the destination explicit. It does not cover error cases or permissions, but the core side effect 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 tightly structured and front-loaded: one purpose sentence, one technical detail sentence, two parameter-grouping lines, and one return statement. There is no filler or repetition; every sentence adds essential 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 six required parameters and no annotations, the description covers the operation, exact affected fields, parameter roles, and return value. It does not describe how to locate region coordinates or handle invalid selections, but the presence of an output schema and the focused scope make it reasonably complete for 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?
Schema coverage is 0%, so the description must compensate. It adds grouping: src_unit/src_track/src_region are source coordinates and dst_unit/dst_track/dst_region are destination coordinates, which is useful. However, it does not explain what a 'unit' represents or how the IDs relate, leaving some ambiguity for an agent that is unfamiliar with the DAW model.
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: 'Copy fade in/out settings from one audio region to another.' It then names the exact fields copied (fadeIn, fadeOut, fadeInSlope, fadeOutSlope), which distinguishes it from related tools like set_audio_region_fade that would modify fades rather than transfer 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?
Clear context is provided: the tool copies fades from a source region to a destination region, with source/destination coordinate triples described. It does not explicitly compare against alternatives such as set_audio_region_fade, but the copy-versus-set distinction is evident from the wording, and there are no exclusion criteria stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_copy_region_to_trackA
Copy a region to a different track (or same track at new position).
Works with note, audio, and automation regions. The copy includes all content — notes, audio content, or automation events.
src_unit/src_track/src_region: Source region coordinates. dst_unit/dst_track: Destination track coordinates. position: New position in PPQN (omit to use source position).
Returns new region position and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| dst_unit | Yes | ||
| position | No | ||
| src_unit | Yes | ||
| dst_track | Yes | ||
| src_track | Yes | ||
| src_region | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses that copies include all content (notes, audio, automation events), works across region types, and returns new position and duration. It doesn't explicitly state that the source remains unchanged, but 'copy' strongly implies non-destructive 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 front-loaded, stating the action immediately. It includes a brief support scope, grouped parameter explanations, and a return note—all in a few sentences with 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?
Covers the core purpose, supported region types, all parameters, and return value—sufficient for an agent to invoke correctly. Missing explicit preconditions (e.g., destination track existence) and edge-case handling (e.g., copying to same position), but overall adequate for a copy operation with 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?
With 0% schema description coverage, the description compensates by explaining source/destination coordinates ('src_unit/src_track/src_region', 'dst_unit/dst_track') and position semantics in PPQN with 'omit to use source position'. This goes beyond the bare parameter titles, though it doesn't define 'unit' or validate required vs optional clearly.
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 clearly states it 'Copy[s] a region to a different track (or same track at new position)', specifying the action, resource, and destination. It distinguishes from siblings like move_region_to_track and duplicate_region by the explicit copy semantics and by listing supported region types (note, audio, automation).
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 clear context on when to use: copying a region between tracks or repositioning on the same track. While it doesn't explicitly name alternatives or state when not to use, the implied differentiation from move/duplicate tools is sufficient for most agents to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_acid_arrangementA
Create an acid house arrangement — TB-303 squelch bassline.
Acid house is a subgenre of house music born in Chicago (1985-87) defined by the Roland TB-303 bass synthesizer with its distinctive squelchy, resonant filter sweeps. Key characteristics:
TB-303 bassline: monophonic, sequenced 16th notes with filter cutoff sweeps (open↔closed), accent and glide (slide) between notes. The signature "squelch" sound.
909 drum machine: 4-on-floor kick, open hat on offbeats, clap on 2&4, ride cymbal
125 BPM, 4/4 time
Minimal, hypnotic, repetitive structure with gradual evolution
Often in minor key with chromatic bassline movement
Creates 3 tracks:
Drums (track_index): 909-style — kick on every beat, clap on 2&4, open hat on offbeats, closed hat on 16ths, ride on quarter notes
Bass (track_index+1): TB-303-style 16th note pattern with chromatic movement, octave jumps, and accent patterns. Notes have varied velocity to simulate filter envelope.
Lead (track_index+2): Sparse, hypnotic stab on beat 1 of every 4 bars, minor key pad-like sustained note
Default key: A minor (classic acid key).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | A | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses substantial behavior: creates 3 tracks at track_index, track_index+1, track_index+2, with detailed drum patterns, bassline velocity variations, and lead placement. It stops short of stating side effects like overwriting existing tracks or preconditions, but the creation behavior is well specified.
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 well-organized: a clear opening summary, a background section on acid house, and a numbered list of track details. Every sentence serves a purpose, and the structure makes it easy to scan while providing rich context.
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 7 parameters and no annotations, but the description covers core creation behavior, style, and track specifics, and an output schema exists. It lacks parameter-level detail for several fields and side-effect disclaimers, but for a genre-specific arrangement generator, it is largely 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 track_index (via track layout), bpm (125 BPM default), and key_root (A minor). However, bars, velocity, start_beat, and unit_index are not described, leaving several parameters 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 states clearly: 'Create an acid house arrangement — TB-303 squelch bassline.' It specifies the verb, resource, and genre, and differentiates from sibling tools by detailing the exact track structure (drums, bass, lead) and musical characteristics. This makes the tool's purpose 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?
Provides strong contextual cues: genre definition, characteristic elements (TB-303, 909, 125 BPM), and track composition. This helps an agent identify when this tool is appropriate, but it does not explicitly mention alternatives or exclusion scenarios, so it misses clear 'when-not-to-use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_additive_rhythmA
Create an additive rhythm — unequal groupings within a bar.
The defining technique of Messiaen, Stravinsky, Bartok, Ligeti, and modern math rock / prog metal. Instead of dividing a bar into equal parts (eighth-eighth-eighth-eighth), the bar is divided into unequal groups (3+2+2 = 7 eighths, 2+3+2 = shifting accent, 5+3 = 8 eighths).
The resulting accent pattern creates a sense of irregular meter within a nominal time signature — the pulse "turns" inside the bar.
Examples: create_additive_rhythm("3+2+2", "eighth") -> 7 eighth notes grouped as 3-2-2, accents on notes 1, 4, 6 (Bartok "Bulgarian Rhythm", Math rock 7/8 feel) create_additive_rhythm("2+3+2", "eighth", repeats=4) -> shifting accent pattern, 4 bars create_additive_rhythm("5+3", "eighth", pitch="scale_up") -> 8 eighths in 5+3 grouping, ascending scale create_additive_rhythm("3+2+2", "sixteenth", repeats=2, decay=0.1) -> 7 sixteenths per bar, velocity decay within groups
Args: grouping: Plus-separated group sizes (e.g. "3+2+2", "5+3", "2+1+2"). Each number = count of notes in that group. Sum = total notes per bar. 2-6 groups, 2-16 notes total. unit: Note value — "eighth", "quarter", "sixteenth", "thirty_second". repeats: Number of bars (1-16). pitch: Pitch mode — "root" (same note), "scale_up" (ascending scale), "scale_down" (descending), "alternating" (up/down per note), "octave_bounce" (root->octave->root). scale: Scale for pitch modes (minor, major, dorian, phrygian, etc.). root: Root note (C, C#, D, ...). octave: Base octave (1-6). accent_mode: Where to place accents — "group_start" (first note of each group gets accent), "group_end" (last note), "every_note" (all same velocity). accent_velocity: Velocity for accented notes (0-1). normal_velocity: Velocity for non-accented notes (0-1). decay: Velocity decay within each group (0-0.3). Each subsequent note in a group gets slightly softer. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, grouping structure, accent pattern, and bar layout.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| unit | No | eighth | |
| decay | No | ||
| pitch | No | root | |
| scale | No | minor | |
| octave | No | ||
| repeats | No | ||
| grouping | Yes | ||
| start_beat | No | ||
| unit_index | No | ||
| accent_mode | No | group_start | |
| track_index | No | ||
| accent_velocity | No | ||
| normal_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the accent pattern behavior (e.g., 'accents on notes 1, 4, 6'), what parameters affect the output, and states the return value ('Returns notes created, grouping structure, accent pattern, and bar layout'). It doesn't disclose whether existing notes at start_beat are overwritten or merged, which would be useful, but overall it 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?
The description is long but well-structured: a concise definition, multiple illustrative examples, then a comprehensive Args list. Each section earns its place, and the front-loaded concept plus examples quickly orient the user. The formatting with line breaks and code-style examples improves readability.
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 (14 parameters, musical concept), the description covers all necessary facets: what it does, how to use it, parameter details, and return values. The presence of an output schema reduces the need to detail returns, but the description still provides an overview. Combined with excellent parameter documentation, it is 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 fully compensates. Every parameter is documented with allowed values, defaults, and examples (e.g., grouping, unit, accent_mode, decay). The examples show how parameters combine to generate specific rhythmic patterns, which goes far 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?
The description opens with 'Create an additive rhythm — unequal groupings within a bar,' which clearly states the verb, resource, and core concept. It further distinguishes the tool from other rhythm generators by explaining the specific technique (3+2+2, 5+3) with musical context and examples.
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 rich context on when this tool is appropriate (Messiaen, Stravinsky, math rock, Balkan rhythms) and provides multiple examples showing varying parameters. However, it does not explicitly mention alternatives like create_polyrhythm or create_hemiola, nor does it state exclusion criteria, 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.
mcp_opendaw_create_afrobeat_arrangementA
Create a full afrobeat arrangement — polyrhythmic drums + bass + horns + guitar across 4 tracks.
Fela Kuti-style afrobeat with all elements locked in polyrhythmic interlock:
Track 0: Drums — layered polyrhythm: kick pattern, shaker pattern, clave-like accents. The foundation is 12/8 feel in 4/4 time — triplets over straight beats, the African polyrhythmic heartbeat.
Track 1: Bass — repetitive ostinato bassline, rooted in the key, driving and hypnotic. Afrobeat bass doesn't rest — it's the engine alongside the drums, locking with the kick.
Track 2: Horns — brass section stabs and sustained chords. Call-and-response between horn hits and space. Minor key, soulful.
Track 3: Guitar — rhythmic chord stabs on the off-beats, the "chanka" pattern that defines the groove. Two-note voicings, percussive and tight.
At 120 BPM (default), this creates the classic afrobeat feel — not too fast, not too slow, with room for polyrhythmic layering. The 4-track arrangement (first non-electronic genre) is the key difference: horns and guitar add organic texture that electronic arrangements don't have.
bpm: Tempo (100-130, default 120 = classic afrobeat). bars: Arrangement length (8-32, default 8). Afrobeat needs long forms. root: Root note (F is the classic afrobeat key — Fela's preference). octave: MIDI octave for bass (2 = C2=36, audible low end). unit_index: AU index with note tracks. drum_track / bass_track / horn_track / guitar_track: Track indices.
Returns notes created per track and total.
Example: create_afrobeat_arrangement(bpm=120, root="F", bars=8) create_afrobeat_arrangement(bpm=110, root="Ab", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| horn_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| guitar_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does reveal the behavioral output: notes created per track, total, the four track roles, and default tempo/bars/root. However, it does not state whether existing notes on the target tracks are overwritten or appended, nor does it mention required preconditions like the engine being running or tracks needing to exist. This leaves some important side-effect ambiguity for a create/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 front-loaded with a clear overview and uses a structured bullet list for tracks. The example block is useful. That said, it is somewhat verbose with repeated stylistic flourishes (e.g., 'polyrhythmic heartbeat,' 'Fela's preference') and could be tightened without losing the essential genre context.
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 high-complexity tool with 11 parameters and no annotations, the description is above average but not complete. It covers most parameters and includes an output summary, but it omits velocity and start_beat semantics, and does not clarify whether the tool adds to or replaces existing notes on the target tracks. More explicit preconditions would make it fully self-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 description coverage is 0%, so the description must compensate. It documents 9 of 11 parameters with helpful musical meaning: bpm range (100-130, default 120), bars (8-32), root (F as Fela's key), octave (C2=36), unit_index, and track indices. It also provides a usage example. However, it omits 'velocity' and 'start_beat', which are left entirely to the schema's bare 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 first sentence is explicit: 'Create a full afrobeat arrangement — polyrhythmic drums + bass + horns + guitar across 4 tracks.' This identifies the verb ('create'), the resource ('afrobeat arrangement'), and its core components. It also distinguishes itself from sibling genre-arrangement tools by emphasizing the non-electronic, 4-track organic texture.
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 strong context for when this tool is appropriate: Fela Kuti-style afrobeat, 120 BPM, 12/8 feel, and the contrast with electronic arrangements ('horns and guitar add organic texture that electronic arrangements don't have'). It lacks explicit exclusions or direct alternatives, but the genre context is clear enough for selection among many arrangement siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ambient_arrangementA
Create an ambient arrangement — 70 BPM atmospheric soundscape.
Ambient music (Brian Eno, Stars of the Lid, Aphex Twin Selected Ambient Works) focuses on atmosphere, texture, and sustained sound over rhythm and melody. Key characteristics:
60-80 BPM (or no clear pulse), 4/4 time
Long sustained pad notes with slow evolution
Sparse, minimal percussion (or none)
Drifting melodic fragments, no clear phrase structure
Reverb-drenched, wide stereo, cinematic
Modal harmony (sustained chords, slow changes)
Creates 4 tracks:
Pad (track_index): Long sustained chord notes (8 bars each), mode-based (major/minor/dorian/lydian), very slow harmonic rhythm. Root, fifth, octave — open voicings.
Melody (track_index+1): Sparse, drifting melodic fragments — long notes (2-4 bars), wide intervals, lots of space. Starts after 8 bars.
Drums (track_index+2): Extremely sparse — single kick on bar 1 of every 8 bars, occasional shaker. Almost subliminal pulse.
Bass (track_index+3): Sustained sub-bass drone, root note only, changes with pad harmony. Very low octave.
Default key: C major (most common ambient key). Default 32 bars for proper ambient evolution length.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | C | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency burden. It richly describes what will be created (4 tracks with specific roles, lengths, and harmonic content), but does not disclose potential side effects such as overwriting existing tracks or how it interacts with existing project content.
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 well-structured with a summary up front followed by bullet points, but it includes extraneous artist references and lengthy stylistic background that could be trimmed. It is front-loaded and organized, though longer than 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?
Given the tool's complexity (7 parameters, 4-track generation) and the lack of annotations, the description is thorough about musical characteristics and defaults, but it omits operational behaviors (e.g., what happens with existing tracks, handling of unit_index) and does not differentiate from sibling tools beyond the genre name.
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 explicitly mentions bpm, bars, key_root, and track_index, but does not explain start_beat, velocity, or unit_index. It adds meaning for some parameters but leaves others 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 opens with 'Create an ambient arrangement — 70 BPM atmospheric soundscape,' using a specific verb and resource. It further details the four tracks and musical characteristics, clearly distinguishing it from other genre arrangement 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 use when an ambient, atmospheric soundscape is desired and provides musical context, but it does not explicitly mention when not to use it or recommend alternatives. With many sibling arrangement tools, the lack of explicit differentiation guidance is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_appoggiaturaA
Create an appoggiatura — leaning grace note that resolves to the main note.
The appoggiatura is the fourth and final essential baroque ornament (trill, mordent, turn, appoggiatura). Unlike a mordent (quick flick), the appoggiatura is expressive: it plays a neighbor note FIRST (usually longer), then resolves into the main note. The approach note creates harmonic tension that the main note releases. Think Bach cello suites, Mozart operas, Chopin nocturnes.
An appoggiatura above approaches from higher (e.g. D → C). An appoggiatura below approaches from lower (e.g. B → C). The approach note typically takes 2/3 of the total duration, leaving 1/3 for the resolution — but this is adjustable.
main_pitch: The resolution note (default 60 = C4). This is where tension releases. approach_pitch: The grace note played first (default 62 = D4). Can be above or below main. duration_beats: Total length of both notes combined (0.5-8, default 1.0 = quarter). appoggiatura_ratio: Fraction of duration for the approach note (0.5-0.9, default 0.67 = 2/3). Higher = more tension (longer grace, shorter resolution). 0.5 = equal split. velocity: Base velocity 0-1 (default 0.85). Approach note is slightly accented. unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the appoggiatura begins.
Returns notes created, pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| velocity | No | ||
| main_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| approach_pitch | No | ||
| duration_beats | No | ||
| appoggiatura_ratio | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains the tool's behavior: plays a neighbor note first, resolves to the main note, defaults to a 2/3–1/3 duration split, accents the approach note, and supports above/below approaches. It also discloses the return value ('Returns notes created, pitches used'). Missing are edge-case behaviors like what happens if no AU with note tracks is found or whether existing notes are affected, but the core behavior is well documented.
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 moderately long but well-structured: an opening definition, a comparative explanation, interval-direction examples, a duration-ratio explanation, and then a parameter list. Each sentence adds value, though the stylistic references ('Think Bach cello suites, Mozart operas, Chopin nocturnes') are somewhat tangential. The front-loaded purpose ensures the agent immediately knows what the tool does before diving into details.
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, empty schema descriptions, no annotations, no output schema details), the description is remarkably complete. It covers the musical concept, the pitch relationship (above/below), the rhythmic behavior (ratio and defaults), velocity characteristics, and the target selection (unit_index/track_index). The output is mentioned, and the parameter semantics are fully explained. The only minor omission is explicit error behavior, but for a creation tool this is acceptable given the level of detail 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 description coverage is 0%, so the description must compensate — and it does, comprehensively. Every parameter is explained: main_pitch and approach_pitch with defaults and pitch class (60=C4, 62=D4), duration_beats with a range (0.5-8), appoggiatura_ratio with a range and musical meaning (0.5-0.9, higher = more tension), velocity with accent behavior, unit_index and track_index with targeting semantics, and start_beat. This goes well beyond the bare schema and gives the agent actionable meaning for each 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 opens with a specific verb+resource: 'Create an appoggiatura — leaning grace note that resolves to the main note.' It clearly defines the tool's purpose and distinguishes it from the sibling tool mordent by contrasting the expressive, resolving appoggiatura with the quick-flick mordent. It also places it within the baroque ornament family (trill, mordent, turn, appoggiatura), making its scope 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 provides clear usage context by explaining when an appoggiatura is appropriate (expressive, tension-and-release) and explicitly contrasts it with the mordent ('Unlike a mordent (quick flick)...'). This gives the agent a decision rule for at least one alternative. However, it does not discuss when not to use the tool for other ornament types (trill, turn) or mention any preconditions such as needing an existing note track, so it falls short of fully comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_arabic_percussionA
Create an Arabic/Middle Eastern percussion ensemble — darbuka, daf, and zills.
Middle Eastern percussion is built on the interplay between the darbuka (tabla, goblet drum) playing the core rhythm with dum (low) and tek/ka (high) strokes, the daf (frame drum) providing sustained resonance and rolls, and zills (sagat, finger cymbals) adding shimmering accents. The rhythms are cyclical with distinctive asymmetry — maqsum has a characteristic gap between dum strokes that creates tension.
The stroke vocabulary: DUM — Low, resonant center stroke on darbuka (bass register) TEK — High, ringing rim stroke (right hand, accented) KA — High, snapping rim stroke (left hand, lighter) SLAP — Sharp, accented stroke (mid register)
rhythms: "maqsum" — The most common Arabic rhythm: D-T- -T-D- -T-. 4/4, 8 beats. Dum on 1 and 4.5, tek on 2, 3, 5.5, 7. The "mother of all Arabic rhythms". Used in almost all Arabic pop, classical, and folk music. "baladi" — Urban Egyptian version of maqsum: D-D- -T-D- -T-. Dum on 1 and 1.5 (double dum), tek on 3, 5.5, 7. Heavier, more driving. The "baladi groove" of Cairo. "saidi" — Upper Egyptian rhythm: D-T- -T-D-D- -T-. 4/4. Dum on 1, 4.5, and 5 (double dum). Tek on 2, 3, 6.5, 7. From the Said region. Used in Saidi dance and music. "ayoub" — 2/4 cyclical rhythm: D- -T- -D-D-. 4 beats. Dum on 1, 3, 3.5. Tek on 2. Used in Sufi trance, zar ceremonies, and religious processions. "malfouf" — 2/4 fast rhythm: D- -T- -T-. 3 beats. Dum on 1, tek on 2, 2.5. Used in fast entrances, processions, and folk dances. "Running" feel. "chiftetelli" — 8/4 slow rhythm: D- -T- -T- -D- -T-. 8 beats. Dum on 1 and 5.5, tek on 2.5, 3.5, 7.5. Used in Turkish and Greek music, belly dance slow sections.
Args: bars: Pattern length in bars (2-16, even). rhythm: Rhythm name (maqsum, baladi, saidi, ayoub, malfouf, chiftetelli). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. darbuka_pitch: Darbuka MIDI pitch (36 = C1). daf_pitch: Daf (frame drum) MIDI pitch (42 = F#1). zills_pitch: Zills (finger cymbals) MIDI pitch (50 = D2).
Returns notes created, instrument breakdown, stroke types, and rhythm info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| rhythm | No | maqsum | |
| velocity | No | ||
| daf_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| zills_pitch | No | ||
| darbuka_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does convey that the tool creates an ensemble and returns notes/instrument breakdown, but it omits side effects such as whether it appends to an existing region or replaces notes, and any prerequisites. There is no contradiction with annotations (none provided).
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 well-structured with headings for strokes, rhythms, and args, and it front-loads the purpose. However, it is lengthy with extensive educational detail on each rhythm pattern; while informative, this detail could be trimmed to a more concise summary without losing invocation-critical 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 the tool's cultural specificity and 9-parameter schema, the description covers the musical context, rhythm definitions, stroke vocabulary, and return values. The output schema (not shown in text) likely covers exact return fields, and the description provides a high-level of that. It would benefit from explicit mention of what the tool does not alter or how it interacts with existing tracks, but overall it is complete enough for an agent to select and invoke.
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's Args section is essential. It adds ranges ('bars: 2-16, even'), valid values for rhythm, velocity range, and pitch meanings with MIDI equivalents. It leaves unit_index and track_index slightly ambiguous ('AU index', 'Note track index') but still adds substantial value 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?
The description opens with a specific verb and resource: 'Create an Arabic/Middle Eastern percussion ensemble — darbuka, daf, and zills.' This clearly states the tool's function and distinguishes it from sibling percussion tools (e.g., create_djembe_ensemble, create_reggae_percussion) by naming the specific instruments and cultural context.
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 by stating this is for Arabic/Middle Eastern percussion, and the rhythm names (maqsum, baladi, saidi, etc.) make the use case explicit. However, it does not explicitly mention when not to use it or name alternative tools for other percussion styles, stopping 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.
mcp_opendaw_create_arpeggiated_progressionA
Create an arpeggiated chord progression — synthwave/trance arp engine.
Takes a chord progression string (same format as create_chord_pads: "Am-F-C-G") and generates arpeggiated notes cycling through chord tones. This is the synthwave arpeggiated bass, the trance supersaw arp, the house plucked chord stab — all from a simple progression string.
Unlike create_arpeggio (which takes a single chord), this cycles through a full progression, changing chord tones every bars_per_chord bars.
progression: Hyphen-separated chords (same as create_chord_pads). "Am-F-C-G" = i-VI-III-VII in A minor. "C-G-Am-F" = I-V-vi-IV in C major (pop).
pattern: Arpeggio pattern: "up" — root, third, fifth, root(oct) — classic synthwave "down" — oct root, fifth, third, root — descending "updown" — root, third, fifth, oct, fifth, third — full cycle "random" — random chord tones — dreamy, unpredictable "bass" — root only, 8th notes — driving bass arp (synthwave bass)
bars_per_chord: Bars per chord (default 4). octave: MIDI octave (3 = bass arp, 4 = mid arp, 5 = lead arp). velocity: Note velocity (0-1). step_duration: Note length in beats (0.25 = 16th, 0.5 = 8th, 0.125 = 32nd). track_index: Track for arp notes (typically melody track = 3).
Returns chords arpeggiated, total notes, pattern used.
Example:
Synthwave bass arp (16th notes, octave 2)
create_arpeggiated_progression("Am-F-C-G", pattern="bass", octave=2, step_duration=0.25, track_index=1)
Trance supersaw arp (16th up, octave 4)
create_arpeggiated_progression("Fm-Db-Ab-Eb", pattern="up", octave=4, step_duration=0.25, track_index=3)
Pop arp (8th updown, octave 5)
create_arpeggiated_progression("C-G-Am-F", pattern="updown", octave=5, step_duration=0.5, track_index=3)
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| pattern | No | up | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| step_duration | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the internal arpeggiation behavior (cycling through chord tones, pattern types, bars_per_chord switching) and what is returned, but it does not mention side effects like whether existing notes on the target track are overwritten, added to, or whether a track/region must pre-exist. It also does not explain the meaning of start_beat or unit_index, leaving some behavioral ambiguity for a creation tool with no safety 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?
The description is longer than two sentences, but it is well-structured with clear sections for introduction, parameter meanings, returns, and examples. Each parameter gets its own line, and the examples are concrete and relevant. There is minor redundancy (e.g., 'synthwave/trance arp engine' followed by listing the same genres elsewhere), but overall it is efficient and front-loaded with 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?
For a 9-parameter tool with no annotations but an output schema, the description is quite thorough: it explains the core parameters, provides return value hints, and gives three usage examples. Gaps include no mention of start_beat and unit_index, no explicit side-effect/prerequisite discussion, and no detailed output-schema match. These are minor compared to the richness already provided, so it earns a solid 4.
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?
Despite 0% schema description coverage, the description compensates well for most of the 9 parameters. It details all five pattern values with note sequences and musical context, explains bars_per_chord, octave ranges, velocity range, step_duration durations, and typical track_index. However, it omits any explanation of start_beat and unit_index, which are less self-explanatory and appear in the schema without 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 opens with a specific verb-resource pair: 'Create an arpeggiated chord progression' and repeatedly calls it an arpeggio engine. It explicitly distinguishes itself from the sibling create_arpeggio by stating 'Unlike create_arpeggio (which takes a single chord), this cycles through a full progression.' This clearly communicates the tool's scope and unique value.
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 when to use this tool versus create_arpeggio: 'Unlike create_arpeggio (which takes a single chord), this cycles through a full progression.' It also references the same progression format as create_chord_pads and gives genre-specific examples (synthwave, trance, house) with concrete parameter choices, which serve as usage patterns. This is explicit alternative and when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_arpeggioA
Create an arpeggio from a chord name — one call instead of 8-32 create_note calls.
chord: Chord name in format RootType, e.g. "Cmin7", "F#maj", "Abmin7", "Ddim". Root: C, C#, D, D#, E, F, F#, G, G#, A, A#, B (or flats Db, Eb, Gb, Ab, Bb). Type: maj, min, dom7, maj7, min7, sus2, sus4, add9, dim, aug. pattern: Arpeggio direction/pattern:
"up" — bottom to top, repeat
"down" — top to bottom, repeat
"updown" — up then down (includes top and bottom twice)
"downup" — down then up
"random" — random chord tones
"chord" — play full chord on each step (block chords) rate: Note rate: "32" (32nd), "16" (16th), "8" (8th), "4" (quarter), "16t" (16th triplet). octave: MIDI octave for the chord root (4 = C4=60). steps: Number of arpeggio steps (default 16 = one bar of 16th notes). unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the arpeggio starts (0 = bar 1). velocity: Note velocity 0-1 (default 0.65 for arpeggios).
Returns the total notes created and pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | 16 | |
| chord | Yes | ||
| steps | No | ||
| octave | No | ||
| pattern | No | up | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the return value, default velocity, and pattern edge cases (e.g., updown includes top and bottom twice), but it does not state whether notes are appended to or replace existing notes, whether a valid note track must already exist, or how note durations are derived from rate.
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 opens with a one-line purpose and then uses a clean parameter-by-parameter format that makes the 9 parameters easy to scan. Every sentence provides concrete value (values, defaults, or examples) and no content is wasted.
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 complexity, the description is largely complete: it covers all parameters, defaults, patterns, and return value. It lacks only a few contextual details such as whether the arpeggio is additive to existing notes and whether the target track must be pre-created, which would make it fully self-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 description coverage is 0%, but the description documents all 9 parameters in plain language, including explicit chord root/type lists, pattern options, rate values, defaults, and units. This fully compensates for the bare schema and adds meaning well beyond the property titles.
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 opening sentence states a specific action ('Create an arpeggio from a chord name') and distinguishes it from the primary alternative by noting it replaces 8-32 create_note calls. This makes the tool's purpose immediately clear and differentiates it from sibling note-creation 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 clearly tells the agent to use this instead of multiple create_note calls, which is an explicit usage context. It does not, however, discuss when to prefer related siblings like create_arpeggiated_progression or create_ostinato, so it falls slightly short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_arrangement_variationA
Create a musically varied section — not a repeat, a real variation.
Unlike create_genre_sections (which repeats the same loop at different velocities), this tool applies actual musical transformations to each track independently:
Drums: density control (0.3 = sparse, 1.0 = full, 1.5 = busy with ghosts)
Bass: octave shift (bass_octave_shift = +1/-1/-2)
Melody: inversion, transposition, retrograde, or fragment
Track inclusion: skip drums/bass/harmony/melody independently
This lets you build a song where each section has real musical variation, not just energy changes. The drop has full drums, the breakdown has inverted melody + no bass, the bridge has sparse drums + octave-up bass.
genre: Any of the 14 arrangement genres (dnb/house/trap/techno/dubstep/ synthwave/trance/disco/afrobeat/rock/jazz/pop/funk/reggae). section_name: Label for this section (e.g. "verse2", "bridge", "drop2"). bpm: Override tempo (None = genre default). root: Override key (None = genre default). bars: Section length in bars (4-32, default 8). start_beat: Where this section starts in the timeline. velocity: Base velocity 0-1. drum_density: 0.3 = sparse (half notes removed), 1.0 = normal, 1.5 = busy (extra ghost notes between hits). bass_octave_shift: 0 = normal, +1 = octave up, -1 = octave down, -2 = sub. melody_transform: "none", "invert", "transpose:5", "transpose:-7", "reverse", "fragment", "octave_up", "octave_down". include_drums/include_bass/include_harmony/include_melody: Set False to skip that track (e.g. breakdown = no drums, no bass).
Returns notes per track and transformations applied.
Example:
Breakdown section: sparse drums, no bass, inverted melody
create_arrangement_variation("dnb", section_name="breakdown", drum_density=0.3, include_bass=False, melody_transform="invert", velocity=0.6)
Bridge: octave-up bass, retrograde melody
create_arrangement_variation("house", section_name="bridge", bass_octave_shift=1, melody_transform="reverse", start_beat=64, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | ||
| genre | Yes | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| drum_density | No | ||
| include_bass | No | ||
| melody_track | No | ||
| section_name | No | variation | |
| harmony_track | No | ||
| include_drums | No | ||
| include_melody | No | ||
| include_harmony | No | ||
| melody_transform | No | none | |
| bass_octave_shift | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 details drum density ranges, bass octave shifts, melody transforms, and track inclusion flags. It also states the return value ('notes per track and transformations applied'). However, it does not disclose side effects like whether existing regions are overwritten or new ones created.
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?
Long but well-structured: lead statement, contrast, parameter list, return note, and two examples. Each section earns its place, and the formatting makes it 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?
Given the tool's complexity (19 parameters, no annotations), the description is thorough: covers musical behavior, parameter semantics, and examples. The missing track parameter explanations are a notable gap, but the overall context 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?
Schema description coverage is 0%, so the description must compensate. It explains most parameters with values and examples (drum_density, bass_octave_shift, melody_transform, include_*). Yet it omits five parameters (bass_track, drum_track, melody_track, harmony_track, unit_index), leaving them 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?
Description opens with a specific verb and resource: 'Create a musically varied section — not a repeat, a real variation.' It explicitly contrasts with create_genre_sections and enumerates track transformations, making the purpose unmistakable and differentiating 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?
Provides an explicit alternative: 'Unlike create_genre_sections (which repeats the same loop at different velocities), this tool applies actual musical transformations.' Concrete scenarios (drop, breakdown, bridge) and two examples illustrate when to use it, effectively guiding the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_audio_busB
Create a new audio bus (aux bus) with its own audio unit and track.
Follows the upstream AudioBusFactory.createAudioBus pattern: creates AudioUnitBox (Aux) + AudioBusBox + TrackBox, wires them together. Uses separate editing.modify() blocks — pointer refer() inside box constructor fails due to deferred pointer update resolution.
name: Bus label.
Returns the new bus index.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses internal behavior: creates AudioUnitBox, AudioBusBox, TrackBox, wires them together, and returns the new bus index. The implementation caveat about separate editing.modify() blocks and pointer refer() failure is useful, but it doesn't mention permissions, reversibility, or potential 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?
The description is compact and front-loaded with the core purpose. The implementation detail and parameter definition each add value, and there is no redundant filler. The structure clearly separates purpose, technical caveat, parameter, and return 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?
For a one-parameter creation tool with an output schema present, the description provides enough context: what it creates, how it wires internal objects, what the name parameter means, and what it returns. It lacks comparison to sibling bus/send tools, but given the simple scope 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?
Schema has one parameter (name) with no description, and the description explicitly says 'name: Bus label.' This adds meaning beyond the schema. It also clarifies the return value, which helps the agent understand the result. No constraints or format details are given, but for a single simple parameter the coverage is adequate.
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: 'Create a new audio bus (aux bus) with its own audio unit and track.' This clearly identifies the verb and resource, and the added detail about audio unit/track wiring gives concrete scope. It doesn't explicitly name sibling tools to distinguish from, but the core purpose is 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?
No guidance on when to use this tool versus alternatives like create_send, list_audio_buses, or create_audio_track. The description provides no exclusions, prerequisites, or recommended use cases. It simply states what the tool does rather than when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_audio_clipA
Create an audio clip in the session view (clip launcher).
Audio clips are the session-view counterpart to audio regions. They appear in the clip launcher and can be triggered independently.
sample_id: The ID returned by mcp_opendaw_load_audio. unit_index: Audio unit index (default 0). clip_index: Slot index in the clip launcher (0, 1, 2, ...). track_index: Track index within the audio unit (default 0). bpm: Source BPM of the sample (for warp marker calculation).
Returns clip UUID and index.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| sample_id | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency burden. It reveals that clips appear in the clip launcher, are independently triggerable, take sample_id from load_audio, and return a UUID and index. It does not address overwriting behavior or permissions, but provides some useful 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 well-structured with an intro, parameter list, and return note. Each sentence contributes either conceptual context or parameter clarification, with 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?
The tool has 5 required params, no annotations, and the description covers purpose, all parameters, and return value. It omits edge behaviors like slot overwriting or prerequisites beyond sample_id, but is largely complete for a creation 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%, and the description compensates fully by explaining every parameter: sample_id's source, unit_index default, clip_index slot semantics, track_index default, and bpm's purpose for warp markers. This is strong added value 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 uses a specific verb ('Create'), names the resource ('audio clip'), and locates it in the session view / clip launcher. It further contrasts with audio regions, distinguishing it from related tools like place_audio_region.
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 that clips are session-view counterparts to audio regions, implying when to use this over arrangement-view region tools. However, it does not explicitly name alternative tools or exclusion conditions, so it stops at clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_audio_trackB
Create a new audio track on the primary audio unit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It only states the action and location, omitting side effects such as whether the new track becomes the active track, whether it affects existing tracks, or what 'primary audio unit' implies. Minimal behavioral context for a 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?
A single concise sentence that states the action, resource, and target location. No filler or redundant wording. It is appropriately sized for a tool with no parameters.
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 an output schema and no parameters, the description covers the essential action. However, it does not explain the ambiguous 'primary audio unit,' and among many similar track-creation tools, additional context about what constitutes an audio track versus other track types would improve completeness. It is minimally adequate but not rich.
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?
With zero parameters, the schema already fully covers parameter expectations. The description correctly avoids inventing parameters. The baseline for zero params is 4, and nothing in the description contradicts or adds unnecessary 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 and resource: 'Create a new audio track' and specifies 'on the primary audio unit.' This clearly distinguishes it from sibling tools like create_synth_track, create_note_track, and create_instrument_track, though it does not explicitly 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?
No guidance on when to use this tool versus the many other create_*_track siblings. The description doesn't explain what an 'audio track' is in this context or when it should be preferred over creating a synth, instrument, or note track.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_automation_eventA
Create a single automation event at a specific position on a value track.
Adds a point to the automation curve with the given interpolation type. If an event already exists at the same position, its value is updated.
unit_index: AU index. track_index: Value (automation) track index. position_beats: Position in beats (float). value: Normalized value 0.0-1.0. interpolation: "none" (step), "linear" (ramp), or "curve" (custom slope). curve_slope: Slope for curve interpolation (0.0-1.0, 0.5 = linear). Only used if interpolation="curve".
Returns the created/updated event info, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| unit_index | Yes | ||
| curve_slope | No | ||
| track_index | Yes | ||
| interpolation | No | linear | |
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently covers the create-or-update semantics, the interpolation options ('none', 'linear', 'curve'), the curve_slope dependency on interpolation, and the return behavior ('Returns the created/updated event info, or error'). It does not mention error conditions or permissions, but the key behavioral traits are well disclosed.
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 organized with a brief introduction followed by a parameter list. It is slightly longer than necessary because it interleaves the parameter explanations into the description, but every sentence adds value (e.g., interpolation meanings, curve_slope usage). The structure is readable and front-loaded with 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 tool has an output schema, so the description does not need to detail return values. It covers the primary behavior, parameter semantics, and the upsert condition. It lacks information about prerequisites (e.g., the track must be a value track) and failure scenarios, but overall it is sufficiently complete for an agent to invoke the tool correctly in most 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?
Schema description coverage is 0%, so the description must fully compensate—and it does. Every parameter is explained: unit_index (AU index), track_index (Value track index), position_beats (Position in beats, float), value (Normalized 0.0-1.0), interpolation (allowed values and meaning), and curve_slope (range, default, and only used when interpolation='curve'). This exceeds the minimal requirement and provides actionable 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?
The description clearly states the tool's function: 'Create a single automation event at a specific position on a value track.' It also specifies the upsert behavior ('If an event already exists at the same position, its value is updated'), which distinguishes it from sibling tools like update_automation_event, delete_automation_event, and move_automation_event.
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 context by explaining the single-event creation/update behavior and detailing the interpolation types and value normalization. However, it does not explicitly mention when to prefer this over the dedicated update_automation_event tool, nor does it state any exclusions (e.g., for bulk automation operations). The context is clear but lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_balkan_meterA
Create a Balkan additive meter pattern — asymmetric time signatures with unequal beat groupings.
Balkan music uses "additive" meters: time signatures like 7/8, 9/8, 11/8, 13/8 where the measure is divided into unequal groups of 8th notes. Unlike Western "odd time" (which counts uniformly), Balkan music groups beats into patterns like 2+2+3 (7/8), 2+2+2+3 (9/8), 2+2+3+2+2 (11/8). Each group has a distinct accent pattern, creating the characteristic "limping" feel.
The tapan (large frame drum, similar to daire/def) plays the bass pattern: a low hit at the start of each group, high hits on the internal beats. The accent structure is the defining feature — the groups are not equal, so the listener perceives a lopsided, driving rhythm.
meters: "7_8" — 7/8: groups 2+2+3. The most common Balkan meter. Found in Macedonian, Bulgarian, Greek folk music. Accents on 1, 3, 5. "9_8" — 9/8: groups 2+2+2+3. Used in Bulgarian horo, Greek kalamatianos. Accents on 1, 3, 5, 7. Longer "limp" at the end. "11_16" — 11/16: groups 2+2+3+2+2. Bulgarian krivo horo. Very asymmetric. "13_8" — 13/8: groups 2+2+3+2+2+2. Bulgarian elenino horo. Longest common additive meter. "7_8_sand" — 7/8: groups 3+2+2 (reversed). Sandansko oro, Macedonian. Different accent placement, "backwards" feel. "9_8_ska" — 9/8: groups 2+3+2+2. Deviationska variant.
variations: "classic" — Traditional tapan pattern. Kick on group starts, snare on internal beats, hi-hat on all 8ths. "modern" — Modern Balkan fusion (Shantel, Balkan Beat Box). Kick patterns more syncopated, added ghost snares. "wedding" — Wedding band style. Denser hi-hat, more snare fills, tapan rolls at cycle end.
Args: meter: Meter name (7_8, 9_8, 11_16, 13_8, 7_8_sand, 9_8_ska). cycles: Number of measure cycles (1-32). variation: Pattern variation (classic, modern, wedding). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. kick_pitch: Kick/tapan low MIDI pitch (36 = C1). snare_pitch: Snare/tapan high MIDI pitch (40 = E1). hh_pitch: Hi-hat MIDI pitch (42 = F#1). tapan_pitch: Tapan roll MIDI pitch (45 = A1).
Returns notes created, meter grouping, accent positions, and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| meter | No | 7_8 | |
| cycles | No | ||
| hh_pitch | No | ||
| velocity | No | ||
| variation | No | classic | |
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| snare_pitch | No | ||
| tapan_pitch | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral details: the tapan pattern, accent placements, and variation styles. It also states the return value ('notes created, meter grouping, accent positions, and pattern info'). It doesn't address side effects like clearing existing notes, but this is a creative tool where such behaviors are less critical.
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 long but well-structured: introductory context, meter list, variations, and Args. The musical background, while verbose, adds value for an AI agent making stylistic choices. It is front-loaded with the purpose and avoids redundancy, though some paragraphs could be tightened.
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 11 parameters, no annotations, and 0% schema coverage, the description is remarkably complete. It covers meter options, variations, parameter semantics, and return values. The presence of an output schema further reduces ambiguity. There are no major gaps that would prevent correct tool selection or 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 coverage is 0%, but the Args section comprehensively describes all 11 parameters with valid values, defaults, ranges (cycles 1-32, velocity 0-1), and MIDI pitch examples. This fully compensates for the lack of schema descriptions, enabling correct invocation.
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 'Create a Balkan additive meter pattern' and elaborates with specific time signatures and cultural context. It distinguishes itself from sibling tools like create_tala or create_euclidean_rhythm by focusing on Balkan additive meters with unique grouping patterns.
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 rich context on when Balkan meters are used (Macedonian, Bulgarian, Greek folk music) and explains the musical intent. However, it does not explicitly mention when not to use this tool or compare it with alternative rhythm-generation tools, lacking explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_bariolageA
Create a bariolage — rapid alternation between a fixed pedal pitch and moving notes.
Bariolage is a Baroque string technique (Bach, Vivaldi, Handel) where a fixed note (typically an open string) rapidly alternates with moving notes that ascend, descend, or follow a melodic pattern. This creates a layered, cross-register texture — two streams of sound perceived simultaneously.
Unlike arpeggiator (cycles chord tones) or montuno (syncopated chord stabs), bariolage creates a two-voice illusion from a single voice: the pedal pitch acts as a drone/anchor while the moving notes create melodic interest above or below it.
Moving patterns: scale_asc — ascending scale notes scale_desc — descending scale notes scale_wave — alternating ascending/descending arpeggio — chord tones rotating chromatic — chromatic approach notes
Subdivisions: 8th, 16th, 32nd — determines speed of alternation
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, mixolydian, harmonic_minor). bars: Number of bars (1-8). octave: Starting MIDI octave (2-6). pedal_pitch: MIDI pitch for the fixed pedal note. If -1, uses root at the specified octave (e.g., G4 = 67). moving_pattern: Pattern for moving notes (scale_asc, scale_desc, scale_wave, arpeggio, chromatic). subdivision: Note subdivision (8th, 16th, 32nd). velocity: Base velocity for moving notes 0-1. pedal_velocity: Velocity for pedal notes 0-1 (usually louder). accent_pedal: If True, pedal notes get accent (slightly louder). unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, pedal/moving note counts, and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | G | |
| scale | No | major | |
| octave | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| pedal_pitch | No | ||
| subdivision | No | 16th | |
| track_index | No | ||
| accent_pedal | No | ||
| moving_pattern | No | scale_asc | |
| pedal_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses some behaviors (like pedal_pitch defaulting to root when -1, accent_pedal adding accent, and return values), but it does not state whether notes are added or appended, whether existing notes are overwritten, or any prerequisites like valid track/unit indices. This leaves the mutation semantics 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 lengthy but well-structured: definition, historical context, contrast with alternatives, pattern/subdivision lists, args, and return value. It is front-loaded with the core definition and all content serves a purpose, though some historical background could be trimmed for an agent-focused 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 13-parameter tool with no schema descriptions and no annotations, this description is remarkably complete: it explains the musical concept, all parameters, pattern options, subdivisions, and return value. It also names alternatives, making it easy for an agent to decide when to use 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?
With 0% schema description coverage, the description fully compensates by listing all 13 parameters with meaningful explanations, including value ranges (bars 1-8, octave 2-6, velocity 0-1), pattern enums, and the special -1 behavior for pedal_pitch. This is the primary source of parameter understanding.
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 'Create a bariolage — rapid alternation between a fixed pedal pitch and moving notes,' which clearly states the verb, resource, and core behavior. It also explicitly distinguishes bariolage from arpeggiator and montuno, making it easy to differentiate from 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 explicitly contrasts bariolage with arpeggiator and montuno, explaining that arpeggiator cycles chord tones and montuno does syncopated chord stabs, while bariolage creates a two-voice illusion. This gives the agent clear when-to-use vs. when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_bass_dropA
Create a bass drop — descending pitch sweep into sustained sub bass.
Generates a pitched sweep downward (the "wub" or "fall") followed by a sustained low note. The quintessential dubstep/bass music drop. Also works for EDM build-and-drop, trap bass falls, and impact transitions.
The tool creates two phases:
Sweep phase: notes descend from start_pitch to end_pitch over sweep_beats
Hold phase: a single sustained note at end_pitch for hold_beats
start_pitch: Starting MIDI pitch for the sweep (default 48 = C3). end_pitch: Landing pitch for the sustained bass (default 24 = C1, sub bass). sweep_beats: Duration of the descending sweep in beats (0.5-8, default 2). hold_beats: Duration of the sustained bass after landing (0-16, default 4). sweep_curve: Pitch curve — "linear" (even), "exp" (fast start, slow landing), "log" (slow start, fast landing). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the drop begins. velocity: Base velocity (0-1, default 1.0 = maximum impact).
Returns notes created, sweep/hold details.
| Name | Required | Description | Default |
|---|---|---|---|
| velocity | No | ||
| end_pitch | No | ||
| hold_beats | No | ||
| start_beat | No | ||
| unit_index | No | ||
| start_pitch | No | ||
| sweep_beats | No | ||
| sweep_curve | No | exp | |
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the internal two-phase behavior (sweep and hold), parameter meanings, defaults, and even the curve types ('linear', 'exp', 'log'). It also mentions the return value ('Returns notes created, sweep/hold details'). While it doesn't cover error cases or whether it modifies existing notes, it gives a robust picture of the tool's 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 relatively long but structured logically: it opens with a one-sentence summary, then explains the two phases, then lists each parameter with its meaning. The structure makes it easy to scan, and the length is justified given the lack of schema descriptions. Only minor redundancy exists (e.g., repeating the default values already in schema), 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 9-parameter tool with no annotations and no schema descriptions, the description is remarkably complete. It covers the musical purpose, the two-phase algorithm, all parameter semantics, and the return value. Given the output schema exists, the brief return description is sufficient. There are no significant gaps that would hinder an agent's ability 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 schema has 0% description coverage, but the description fully compensates by explaining every parameter in plain language: start_pitch, end_pitch, sweep_beats, hold_beats, sweep_curve, unit_index, track_index, start_beat, and velocity, including defaults and value ranges. This exceeds the schema's bare titles and provides essential semantics for correct invocation.
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: 'Create a bass drop — descending pitch sweep into sustained sub bass.' It uses a specific verb ('create') and resource ('bass drop'), and distinguishes from sibling tools by describing the 'wub' or 'fall' characteristics and musical genres (dubstep, EDM, trap), setting it apart from similar generative tools like create_riser or create_buildup.
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 contextual guidance by stating it is 'The quintessential dubstep/bass music drop' and 'Also works for EDM build-and-drop, trap bass falls, and impact transitions.' This implies when to use it, though it does not explicitly name alternative tools or exclusions. It offers enough context for an agent to select this tool over related ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_bass_from_progressionA
Create a bass line from a chord progression string.
The harmonic trio: create_chord_pads (sustained harmony) + create_arpeggiated_progression (melodic movement) + THIS (bass foundation). All three take the same "Am-F-C-G" string.
pattern: Bass pattern: "root" — root notes on beat 1 + 3, quarter notes (universal) "root_fifth" — root on 1, fifth on 3 (rock, pop) "walking" — 4 quarter notes per bar: root → passing → chord tone → approach to next root (jazz) "pedal" — one sustained root per chord (techno, house sub-bass) "octave" — root + octave in 8th notes (disco, funk) "root_octave" — root on 1, octave up on 3 (pop, rock power)
bars_per_chord: Bars per chord (default 4). octave: MIDI octave for bass (2 = C2=36, typical bass range). velocity: Note velocity (0-1, default 0.9 = strong bass). track_index: Track for bass (typically bass track = 1).
Example:
Jazz walking bass from ii-V-I-vi
create_bass_from_progression("Dm7-G7-Cmaj7-Am7", pattern="walking", octave=2)
Rock root-fifth from I-IV-V
create_bass_from_progression("A-D-E", pattern="root_fifth", octave=2, velocity=0.95)
House pedal sub-bass
create_bass_from_progression("Fm-Fm-Db-Ab", pattern="pedal", octave=1, bars_per_chord=4)
Disco octave bass
create_bass_from_progression("C-Am-F-G", pattern="octave", octave=2, velocity=0.9)
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| pattern | No | root | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 richly describes pattern behaviors (root, walking, pedal, etc.), default values, velocity range, octave mapping, and track index. However, it does not explicitly state side effects like whether it overwrites existing notes on the target track or if it appends to a region. Minor gap, but the level of detail is strong.
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 well-structured with a clear intro, a pattern list, parameter notes, and multiple examples. It is long but each element adds value. The examples are slightly redundant but effectively demonstrate pattern usage. Front-loaded with 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?
Given the tool's complexity (8 params, no annotations), the description covers the main purpose, pattern options, parameter semantics, and integration with two sibling tools. It omits start_beat and unit_index, and doesn't state side effects, but output schema exists so return values need not be explained. The examples further round out the picture.
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 thoroughly explains pattern (with enum-like descriptions), bars_per_chord, octave, velocity, and track_index, and examples clarify the progression parameter. However, start_beat and unit_index are completely undocumented, leaving two of eight parameters 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 clear verb+resource: 'Create a bass line from a chord progression string.' It also names its role within the harmonic trio (chord pads, arpeggiated progression, bass foundation), which distinguishes it from sibling tools. This is specific and actionable.
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 context that this tool is the bass foundation alongside create_chord_pads and create_arpeggiated_progression, and that all three take the same chord string. Genre examples for each pattern give implicit guidance. However, it does not explicitly exclude or compare against other bass-related tools like create_bassline or create_walking_bass, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_basslineA
Create a bassline from root note + rhythmic pattern — one call instead of 8-20 create_note calls.
Basslines use low octaves (default octave 2 = C2=36) and high velocity (default 0.9).
root: Root note name (C, C#, D, D#, E, F, F#, G, G#, A, A#, B or flats Db, Eb, Gb, Ab, Bb). pattern: Rhythmic pattern using scale degrees and special chars. Each step = one 16th note:
Numbers 1-7 = scale degree (1 = root, 5 = fifth, etc.)
0 = rest
'-' = sustain previous note (tie)
'+' = octave up for next note
'_' = octave down for next note
Example: "1 - - - 5 - - - 1 - - - 4 - - -" = root-fifth-root-fourth bassline
Example: "1 0 1 0 5 0 5 0 1 0 1 0 3 0 3 0" = syncopated bass unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the bassline starts (0 = bar 1). octave: MIDI octave for the root (2 = C2=36, typical bass range). velocity: Note velocity 0-1 (default 0.9 for strong bass). scale: Scale type for degree mapping (default "minor"). Same scales as create_melody.
Returns the total notes created and pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| scale | No | minor | |
| octave | No | ||
| pattern | Yes | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does explain defaults (octave 2, velocity 0.9), pattern semantics, and return value. But it doesn't disclose whether it overwrites existing notes, requires an empty track, or what happens on invalid input, which is a significant 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?
The description is reasonably concise despite its length, front-loading the core purpose and defaults before diving into detailed pattern syntax. Each sentence contributes, and the use of examples is effective.
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 an 8-parameter tool with no annotations, the description covers all parameters, includes examples, and states the return value. It could additionally discuss error handling or prerequisites, but it's largely 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 input schema has 0% parameter description coverage, so the description fully compensates by explaining root note names, pattern syntax with special characters and examples, and providing details for all 8 parameters including defaults and ranges.
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 'Create a bassline from root note + rhythmic pattern' with a specific verb and resource. It distinguishes from create_note by noting it replaces 8-20 calls, but doesn't differentiate from other bassline tools like create_walking_bass or create_electronic_bass.
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 context on when to use this tool (creating a bassline with a root and pattern) and contrasts with create_note calls. However, it doesn't explicitly state when NOT to use it vs. other bass-generation siblings, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_binary_formA
Create binary form — two contrasting sections (A|B) with optional repeats.
Binary form is the simplest structural form in Western music: two self-contained sections, each typically repeated. The A section establishes the tonic, the B section departs and returns. Found in Baroque dance suites (Bach, Handel), folk tunes, early jazz, and many pop structures.
Modulation types (how B section relates to A):
dominant: B section in the dominant key (V). Classical approach — Bach two-part inventions, Baroque dance movements.
relative: B section in the relative minor/major. Romantic and folk approach — gentler contrast.
subdominant: B section in the subdominant (IV). Church hymns, modal folk tunes.
parallel: B section stays in same key but uses contrasting melodic material. Minimalist/folk approach.
no_modulation: B section identical key, same harmonic center.
With repeat=True, each section is played twice (AABB structure), matching the traditional binary form with repeat marks.
A section: stepwise melody around tonic, I-V-I harmony. B section: contrasting melody in modulated key, wider intervals, returns to tonic at end.
Creates melody on track_index, bass on track_index+1.
| Name | Required | Description | Default |
|---|---|---|---|
| repeat | No | ||
| key_root | No | G | |
| velocity | No | ||
| modulation | No | dominant | |
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| bars_per_section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently discloses the generated output structure (A/B sections, repeat behavior), the side effect of creating melody on track_index and bass on track_index+1, and musical behavior details like modulation types. It does not address operational consequences such as overwriting existing notes or error conditions, but the disclosed behavioral traits go well beyond a minimal 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 long but well-structured, with a clear front-loaded purpose, a section on modulation types, and a line about repeat behavior. The music theory background is useful but somewhat verbose; each sentence earns its place for a creative tool, though it could be tightened.
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 musical concept, modulation options, and track targeting adequately. With an output schema present, return values need not be described. However, operational details such as how bars_per_section, start_beat, and unit_index affect the generation, and what happens to existing notes, are missing. This leaves the description sufficient for basic invocation but incomplete for nuanced 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 0%, so the description must compensate. It explains three parameters indirectly: modulation (via the modulation types list), repeat (via 'With repeat=True'), and track_index (via the track assignment note). However, it leaves key_root, scale_name, start_beat, unit_index, bars_per_section, and velocity unexplained, which is a significant gap for an agent choosing parameter 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 first sentence — 'Create binary form — two contrasting sections (A|B) with optional repeats' — uses a specific verb and resource, clearly distinguishing this tool from siblings like create_ternary_form or create_sonata_form. The rest of the description reinforces the formal structure with musical context.
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 situating binary form in specific musical genres (Baroque dance suites, folk, early jazz, pop), which implies when this tool is appropriate. However, it does not explicitly mention alternatives or state when NOT to use it, leaving some room for ambiguity against sibling form-creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_blues_arrangementA
Create a full blues arrangement — shuffle drums + walking bass + dominant 7th chords + blues scale lead.
Classic 12-bar blues — the foundation of American popular music:
Track 0: Drums — shuffle/blues groove: kick on 1 and 3, snare on 2 and 4, shuffled hi-hats (triplet feel). The blues shuffle is the heartbeat — not straight 8ths, not full triplets, but the in-between "swing" that makes blues feel like blues.
Track 1: Bass — walking bass: quarter notes outlining the chord changes. I-I-I-I | IV-IV-I-I | V-IV-I-V. Each beat walks to the next chord tone — the jazz/blues lineage.
Track 2: Chords — dominant 7th voicings (I7, IV7, V7). The blues doesn't use triads — every chord is a 7th. Stab pattern on beats 1 and 3, with shuffle feel.
Track 3: Lead — blues scale (root, b3, 4, b5, 5, b7) with blue notes. Bends, slides, long held notes. The "crying guitar" quality — pentatonic minor with the flat 5 blue note for tension.
At 120 BPM (default), this is the classic Chicago blues tempo. At 90 BPM, it's a slow blues (B.B. King). At 140, it's a fast shuffle (Stevie Ray Vaughan).
The 12-bar form: I-I-I-I-IV-IV-I-I-V-IV-I-V. This is the most important chord progression in popular music — the DNA of rock, jazz, soul, and R&B.
bpm: Tempo (70-160, default 120 = classic Chicago blues). bars: Arrangement length (must be multiple of 12 for full blues form. 12 = one chorus, 24 = two choruses, default 12). root: Root note (A is the most common blues key — guitar-friendly). octave: MIDI octave for bass (2 = A2=45, standard blues bass register). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_blues_arrangement(bpm=120, root="A", bars=12) create_blues_arrangement(bpm=90, root="E", bars=24) # slow blues, 2 choruses
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | A | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions that notes are created and returns the count, but it does not disclose whether the tool overwrites existing notes on the specified tracks, whether tracks must pre-exist, or whether it is additive. This is a notable 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?
The description is heavily padded with music-theory background—shuffle feel, blue notes, 12-bar history—that is educational but not strictly necessary for tool invocation. While well-structured with headings and parameter list, the extra prose makes it longer than needed; a more concise version would be equally effective.
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 an 11-parameter tool with no annotations and no visible output schema, the description covers the core parameters, defaults, and return value. However, it is incomplete on operational expectations: it doesn't state prerequisites like whether tracks already exist, how existing notes on those tracks are handled, or what happens if track indices are invalid. Given the complexity, these gaps prevent a higher score.
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 parameter descriptions (0% coverage), so the description compensates by explaining most parameters: bpm, bars, root, octave, unit_index, and track indices. It adds crucial meaning like 'bars must be multiple of 12' and 'bpm 70-160', but omits velocity and start_beat entirely, leaving those two parameters 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 opens with 'Create a full blues arrangement' and enumerates concrete components (shuffle drums, walking bass, dominant 7th chords, blues scale lead), making the tool's purpose unmistakable. It also distinguishes itself from sibling genre-arrangement tools by explicitly naming blues-specific elements.
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 (creating blues arrangements) and includes examples for different tempos and roots, showing usage flexibility. However, it does not explicitly state when not to use it or name alternatives, such as other genre-arrangement tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_boom_bapA
Create a boom-bap hip-hop drum pattern — the foundational beat of hip-hop.
Boom-bap: "boom" = kick drum, "bap" = snare. The pattern places kicks on beats 1 and 3, snares on beats 2 and 4 — the backbone of hip-hop from Run-DMC to Nas to Kendrick Lamar. Hi-hats fill the 8th or 16th notes between. The feel comes from swing/groove and kick placement variations.
boom_bap_type: "classic" — 90s boom-bap: kick on 1 and 3, snare on 2 and 4, hats on every 8th. The "Untitled" / Nas "Illmatic" feel. 2-bar cycle with kick variation on bar 2. "old_school" — 80s old school: simpler, kick strictly on 1 and 3, snare on 2 and 4, hats on quarter notes. Run-DMC / LL Cool J style. Less syncopation. "trap" — Trap: rolling hi-hats (16ths with occasional triplets), kick on 1 and "and of 2" and 3.5, snare on 4 only. Faster hats. Migos / Future style. "lofi" — Lo-fi hip-hop: laid-back, kick slightly behind beat (0.95 and 2.95), snare on 2 and 4, hats on 8ths with subtle swing. J Dilla / Nujabes feel. "drill" — UK drill: sliding bass kicks, snare on 3 only, chaotic hi-hat patterns with rolls. Headie One / Central Cee style. More aggressive kick patterns.
bars: Pattern length (2-16, 2 = one boom-bap cycle). kick_pitch: MIDI pitch for kick (36 = C1). snare_pitch: MIDI pitch for snare (38 = D1, acoustic snare). hat_pitch: MIDI pitch for hi-hats (42 = F#1, closed hat). velocity: Base velocity 0-1. Ghost hats -0.2, snares -0.05.
Returns notes created, boom-bap type, and stroke breakdown.
Example: create_boom_bap(boom_bap_type="classic", track_index=0) create_boom_bap(boom_bap_type="lofi", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| hat_pitch | No | ||
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| snare_pitch | No | ||
| track_index | No | ||
| boom_bap_type | No | classic |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the internal pattern logic (kick on 1 & 3, snare on 2 & 4), velocity offsets for ghost hats and snares, and the return value ('notes created, boom-bap type, stroke breakdown'). It does not mention whether the tool overwrites existing notes on the target track, but overall it provides substantial 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 long but well-structured, with clear sections for boom-bap explanation, type definitions, parameter details, returns, and examples. The historical references add flavor but are not strictly necessary. It is front-loaded with the core purpose and remains readable despite the 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 complex 9-parameter tool with no schema descriptions, this description is remarkably thorough. It covers the musical styles, primary parameter semantics, output details, and usage examples. The only gaps are the three unmentioned positional parameters and the lack of clarity on interaction with existing notes, but the output schema helps fill in 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?
Schema description coverage is 0%, and the description compensates for most parameters: boom_bap_type is thoroughly explained with five style variants, bars has a range, pitches include MIDI note examples, and velocity includes base and offset behavior. However, start_beat, unit_index, and track_index are not described at all, leaving a meaningful gap for those 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 a specific action: 'Create a boom-bap hip-hop drum pattern.' It defines boom-bap and describes multiple subtypes, distinguishing it from generic drum-pattern tools among siblings. This gives a precise verb+resource+scope that leaves no ambiguity.
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 it clear when to use this tool: when a boom-bap hip-hop drum pattern is needed. It provides detailed guidance for choosing among boom_bap_type styles, but it does not explicitly mention alternatives or when-not-to-use cases relative to sibling tools. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_bordunA
Create a bordun — continuously sustained drone chord as a textural layer.
A bordun (bourdon) is a continuously sounding tone or chord that provides a harmonic foundation beneath changing melody. Unlike pedal_point (which is a single repeated/anchored note), the bordun is a sustained textural layer — often an open fifth, octave, or drone chord. Found in Scottish bagpipes, Indian tanpura, hurdy-gurdy, ambient drone music, and folk.
root: Root note name (e.g. "C", "Ab", "F#"). octave: Octave for the bordun (1-6, default 3 = low register). intervals: Comma-separated semitone intervals from root (e.g. "0,7" = open fifth, "0,7,12" = octave+fifth, "0,3,7" = minor triad drone, "0,5" = open fourth). bars: Total length in bars (1-16, default 4). beats_per_bar: Time signature beats (3/4=3, 4/4=4, 6/8=6, default 4). velocity: Velocity of bordun notes (0-1, default 0.55 — softer than melody). retrigger_bars: If >0, re-triggers the bordun every N bars (e.g. 2 = retrigger every 2 bars). If 0, one continuous sustained note for entire duration. unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the bordun begins.
Returns notes created, pitches, total duration.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| intervals | No | 0,7 | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| beats_per_bar | No | ||
| retrigger_bars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains key behaviors: sustained vs. retriggered (retrigger_bars), softer default velocity, and the return of created notes. Without annotations, it makes reasonable effort to disclose what the tool does, though it doesn't state whether existing notes on the target track are cleared or appended.
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?
Structured with a one-line summary, a contextual definition paragraph, and per-parameter bullet lines, all of which add semantic value without 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?
Covers purpose, usage, all parameters, and return value ('Returns notes created, pitches, total duration'), providing enough context given the tool's complexity and the lack of annotations or schema descriptions.
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?
All 10 parameters receive detailed explanations with examples (intervals '0,7' = open fifth), defaults, and ranges (octave 1-6, bars 1-16), fully compensating 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 opening sentence defines the tool precisely: 'Create a bordun — continuously sustained drone chord as a textural layer.' It further contrasts with pedal_point, making the purpose unambiguous and distinct from the sibling tool.
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 differentiates from pedal_point: 'Unlike pedal_point (which is a single repeated/anchored note), the bordun is a *sustained textural layer*.' This provides clear when-to-use guidance and names the primary alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_breakA
Create a classic drum break — the foundation of jungle, DnB, hip-hop, breakbeat.
Generates iconic drum break patterns from presets, with optional variation and swing. Each preset is a 1-bar pattern that can be repeated for multiple bars.
break_type: Classic break pattern preset.
"amen" — Amen Break (The Winstons, 1969). The most sampled break in history. Kick on 1 and 3, snare on 2 and 4, with syncopated ghost.
"think" — Think Break (Lyn Collins, 1972). Kick on 1, 1.75, 3.25 — distinctive off-beat kick pattern.
"ashanti" — Ashanti Roosevelt break. Kick on 1, 2, 3.25 — funky displaced kicks.
"funky_drummer" — Clyde Stubblefield break (James Brown). Straight kicks, dense 16th hi-hats.
"when_the_levee" — When the Levee Breaks (Led Zeppelin). Heavy kick/snare, sparse hi-hat. The boom-bap template.
"synthetic" — Electronic breakbeat. Off-beat hi-hats, four-on-the-floor kick. bars: Number of bars to generate (1-8, default 1). Each bar is a repeat with optional variation. variation: Per-bar variation mode.
"none" — exact repeat
"fill" — last bar gets a fill (denser snare/hihat)
"humanize" — subtle timing/velocity variation per bar
"drop" — last bar drops the kick (tension before drop) unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the break starts. swing: Swing amount (0.0-0.65, 0 = straight, 0.58 = classic hip-hop swing).
Returns notes created, break type, and bars.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| swing | No | ||
| variation | No | none | |
| break_type | No | amen | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses generative behavior ('Generates...'), explains 1-bar repetition, variation modes (fill, humanize, drop), and swing effect. However, it doesn't address whether existing notes are overwritten or how missing AUs are handled, leaving some ambiguity about DAW state 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 well-structured with an introductory sentence followed by a clean parameter list. Each line serves a purpose—no filler. The length is justified by the need to document 7 parameters and multiple preset options without omitting essential details.
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?
Covers all parameters with rich detail, states return values ('notes created, break type, and bars'), and benefits from an existing output schema. No critical information is missing for an agent to invoke the tool correctly, even with 0% schema descriptions and no annotations.
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 0% description coverage, so the description compensates fully. Every parameter is documented: break_type lists all presets with musical details, bars includes range and default, variation enumerates modes, unit_index/track_index explain targeting, start_beat and swing give units and ranges. This far exceeds 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?
The description clearly states the action ('Create a classic drum break') and specifies the resource and context ('foundation of jungle, DnB, hip-hop, breakbeat'). It distinguishes from siblings by emphasizing 'presets' and listing iconic breaks (Amen, Think, etc.), setting it apart from generic pattern tools like create_drum_pattern or create_breakbeat.
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 clear context for when to use (classic drum break genres, presets) and explains variation options, but does not explicitly name alternative tools or state when not to use this tool. The genre focus and preset list imply usage scenarios, but exclusionary guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_breakbeatA
Create a breakbeat pattern — the syncopated skeleton of jungle, DnB, big beat, and breakbeat hardcore.
Breakbeats are "broken" drum patterns where the snare and kick don't sit on clean quarter notes. Instead they syncopate, stutter, and displace — creating the forward-leaning momentum that powered hip-hop's early years (Amen break), then jungle/DnB (160-180 BPM chopped breaks), big beat (Fatboy Slim, Prodigy), and UK garage/2-step.
breakbeat_type: "amen" — The Amen break: G.C. Coleman's performance in The Winstons "Amen, Brother" (1969). The most sampled 6-second loop in history. Kick at 0, 2.66; snare at 1, 3; ghost snare at 2.66. Hats on 8ths. The DNA of jungle and DnB. "dnb" — Drum & bass: chopped Amen-style at DnB tempo. Kick on 0 and 2.5, snare on 1 and 3, rapid 16th hats, ghost snares on the "e" and "a". Rolling, driving. Andy C / Noisia style. "big_beat" — Big beat: mid-tempo (120-130) fat breaks. Kick on 0 and 2.66, snare on 1 and 3, with a kick+snare syncopation on beat 2. Big, swaggering. Fatboy Slim / Prodigy "Firestarter". "2_step" — UK garage 2-step: kick on 1 and 3, snare on 2 and 4, but the second kick is shifted to 2.66 and there's a ghost snare on 3.5. Swung 16ths. The "skipping" feel. MJ Cole / Disclosure style. "funky_drummer" — Clyde Stubblefield's break from James Brown "Funky Drummer" (1970). Kick at 0, 2, 2.66; snare at 1, 3; hats throughout with ghost notes. The most funk-sampled break. Public Enemy, NWA, LL Cool J all built on this.
bars: Pattern length (2-16, 2 = one breakbeat cycle). kick_pitch: MIDI pitch for kick (36 = C1). snare_pitch: MIDI pitch for snare (38 = D1). hat_pitch: MIDI pitch for hi-hats (42 = F#1). ghost_pitch: MIDI pitch for ghost snares (37 = F#1, side-stick). velocity: Base velocity 0-1. Snares -0.05, hats -0.15, ghosts -0.3.
Returns notes created, breakbeat type, and stroke breakdown.
Example: create_breakbeat(breakbeat_type="amen", track_index=0) create_breakbeat(breakbeat_type="dnb", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| hat_pitch | No | ||
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| ghost_pitch | No | ||
| snare_pitch | No | ||
| track_index | No | ||
| breakbeat_type | No | amen |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently discloses the musical behavior, including per-subtype note placements and velocity adjustments. However, it is silent on placement mechanics (track_index, start_beat) and whether existing notes are overwritten or added, leaving uncertainty about 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?
The description is well-structured with a clear lead, bullet-like breakbeat_type details, parameter explanations, and an example. It is long but each section serves a purpose; the historical context, while informative, could be trimmed slightly. Overall, it is a high-value description that earns its 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 core creation behavior and musical content are thoroughly covered, and the output schema covers return values. However, key parameters like start_beat and unit_index are not explained, and there is no mention of how the pattern integrates into an existing project (e.g., whether it overwrites a region). These gaps make the description incomplete for a tool with 10 parameters and no annotation support.
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?
Since the schema has 0% description coverage, the description compensates well for most parameters: breakbeat_type values are exhaustively detailed, and bars, pitches, and velocity are explained with defaults. However, start_beat and unit_index are entirely undocumented, and track_index only appears in the example without semantic explanation, leaving some parameters 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 clearly states the tool's purpose: 'Create a breakbeat pattern' and elaborates on specific subtypes (amen, dnb, big_beat, etc.). However, it does not explicitly distinguish itself from sibling tools like create_drum_fill or create_break, so it falls short of the highest score for 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 gives strong contextual guidance on when each breakbeat_type is appropriate, linking them to genres and artists (e.g., 'The DNA of jungle and DnB'). It does not provide explicit exclusions or alternatives, but the context is clear enough for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_buildupA
Create a complete build-up — riser + snare roll in one call.
Combines two transition elements for a full build-up before a drop/chorus:
Pitch riser (ascending notes with velocity ramp)
Snare roll (increasing density + velocity crescendo)
style: Build-up character:
"edm" — 1/4 snare → 1/8 → 1/16 → 32nd roll, exp riser C2→C6
"trap" — 1/4 snare → triplets → 32nd roll, exp riser C1→C5
"techno" — ride cymbal buildup + open hat crescendo, exp riser C2→C4
"rock" — tom roll buildup, linear riser C2→C4
"minimal" — just riser, no snare roll (subtle build)
unit_index: AU index (-1 = find first AU with note tracks). track_index: Note track index for riser. start_beat: Where the build-up begins. length_beats: Total build-up length (default 8 = 2 bars). velocity: Base velocity (0-1, ramped up during build).
Returns notes created for riser and snare roll.
Example:
8-beat EDM build-up before a drop
create_buildup(start_beat=0, length_beats=8, style="edm")
Then drop
create_impact(start_beat=8, impact_type="sub_boom")
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | edm | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| length_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 notes are created for riser and snare roll, explains the velocity ramp and density increase, and details unit_index default behavior. It does not mention failure modes or whether existing notes are overwritten, but it is quite transparent for a creative generator.
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 well-structured with a summary, component breakdown, style presets, parameter explanations, return value, and a practical example. Every sentence adds value; the style list is necessary detail rather than 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 covers purpose, usage, parameters, return value, and provides an example. It lacks explicit details on where the snare roll is placed relative to the riser track, and error conditions for missing note tracks, but overall it gives enough guidance for an AI agent 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?
Schema description coverage is 0%, so the description must compensate – and it does thoroughly. Every parameter is explained with additional context: style presets include exact note patterns, velocity has a 0-1 range and ramp behavior, unit_index explains the -1 behavior, and length_beats defaults to 8 = 2 bars.
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 'Create a complete build-up — riser + snare roll in one call,' which clearly states the verb, resource, and scope. It explicitly distinguishes from the sibling create_riser by emphasizing the combination of two elements.
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 says the tool is for 'a full build-up before a drop/chorus' and the example shows it used before create_impact, giving clear context. It does not explicitly state alternatives or when not to use it, but the genre-specific style options imply usage across different musical contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_cadenzaA
Create a cadenza — an unmeasured virtuosic solo passage with rubato.
A cadenza is a solo passage where the performer has rhythmic freedom. Unlike all other tools that use quantized beat grids, cadenzas use irregular, speech-like rhythm — accelerando, rallentando, fermatas, and dramatic pauses. The notes follow a virtuosic contour: rapid runs, wide leaps, trills, and dramatic peaks.
Styles: classical — Mozart/Beethoven style: balanced phrases, cadential trills romantic — Liszt/Chopin style: dramatic octaves, cascading runs jazz — Coltrane/Parker style: bebop lines, chromatic turns modern — Ligeti/Berio style: extreme registers, clusters
The cadenza is built from segments, each with its own tempo character:
Flourish: rapid ascending/descending run
Leap: dramatic wide interval jump
Trill: alternating two pitches rapidly
Fermata: held note with pause after
Cascade: descending arpeggio pattern
Climb: gradual ascending with crescendo
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, harmonic_minor, etc.). duration_beats: Approximate total duration in beats (4-64). octave: Starting MIDI octave (2-6). style: Cadenza style (classical, romantic, jazz, modern). virtuosic: If True, more rapid passages and wider leaps. breath_marks: Comma-separated beat positions for pauses/breaths. velocity: Base velocity 0-1 (cadenzas have wide dynamic range). unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, segment breakdown, and cadenza statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | minor | |
| style | No | classical | |
| octave | No | ||
| velocity | No | ||
| virtuosic | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| breath_marks | No | ||
| duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 cadenza's irregular rhythm, virtuosic contour, segment-based construction, and tempo characteristics, and states that it returns notes created, segment breakdown, and cadenza statistics. It does not detail potential side effects like overwriting existing notes or requiring an existing track, but the core generative 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 well-structured with clear sections for definition, styles, segment types, and argument descriptions. It is longer than average, but the architectural detail is relevant and helps the agent make informed choices. A few conceptual points are somewhat redundant, but overall the structure is efficient and 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 the tool's complexity (11 parameters, no annotations, no schema descriptions), the description provides a comprehensive overview: what a cadenza is, how rhythm differs from other tools, available styles and segments, parameter meanings, and return values. It stops short of describing operational preconditions like track/unit validation or exact note-placement behavior, but it is sufficient for initial selection and 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's Args section fully compensates by documenting all 11 parameters with meaningful one-line explanations. It adds semantics beyond the bare schema, such as 'duration_beats: Approximate total duration in beats (4-64)' and 'breath_marks: Comma-separated beat positions for pauses/breaths,' which are essential for correct invocation.
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 defines the tool as 'Create a cadenza — an unmeasured virtuosic solo passage with rubato,' providing a specific verb and resource. It explicitly distinguishes itself from siblings by stating 'Unlike all other tools that use quantized beat grids, cadenzas use irregular, speech-like rhythm,' making its unique purpose 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?
The description gives strong contextual guidance by explaining that cadenzas use unmeasured, speech-like rhythm as opposed to the quantized beat grids of other tools, implying when this tool is appropriate. It also provides style and segment options to help shape usage, though it doesn't name specific alternative tools or state explicit prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_call_and_responseB
Create call-and-response — two phrases in musical dialogue.
Call-and-response is the most fundamental musical conversation: a leader phrase (call) followed by a response phrase. Root of blues, gospel, African music, jazz, work songs, and hip-hop.
Response types:
echo: exact repeat of the call (African tradition, gospel)
transpose: repeat transposed by response_interval semitones (blues, jazz — response at IV or V)
variation: same pitches, varied rhythm (jazz, bebop)
complementary: contrasting phrase using scale degrees (gospel, soul — response "answers" the call)
fill: shorter response — last note only, or 2-note fill (blues turnaround, funk fills)
Call pattern: space-separated scale degrees (0=root, 2=2nd, etc.). Call rhythm: space-separated durations in beats. Response interval: for transpose type, semitones to shift (5 = perfect 4th up, 7 = perfect 5th up, -5 = 4th down). Pairs: number of call-response pairs. Gap beats: silence between call and response.
Creates call on track_index, response on track_index+1.
| Name | Required | Description | Default |
|---|---|---|---|
| pairs | No | ||
| key_root | No | C | |
| velocity | No | ||
| gap_beats | No | ||
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| call_rhythm | No | 0.5 0.5 0.5 1.0 0.5 0.5 | |
| track_index | No | ||
| call_pattern | No | 0 2 4 7 4 2 | |
| response_type | No | echo | |
| response_interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses a key side effect (creates call on track_index and response on track_index+1) and explains response generation behavior via response types. However, it does not state whether existing notes are overwritten, if tracks must exist, or other side effects, leaving uncertainty.
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 well-structured with an intro, context paragraph, bulleted response types, and parameter explanations. It is longer than necessary but every section contributes useful information. The opening sentence front-loads the 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's complexity (12 parameters, 5 response types), the description covers core concepts and several parameters but omits key parameters and preconditions. Output schema exists, so return values are not needed, but the description still leaves gaps in usage 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 schema has 0% description coverage, so the description must explain parameters. It explains call_pattern, call_rhythm, response_interval, pairs, gap_beats, and response_type with examples. However, it omits key_root, scale_name, velocity, start_beat, and unit_index, leaving about half the parameters without semantic 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 tool creates a call-and-response pattern with specific verb and resource. It explains the musical concept and response types, making the purpose unambiguous. However, it does not differentiate from the closely named sibling mcp_opendaw_create_call_response, which seems functionally similar.
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 in genres like blues, gospel, jazz, African music, work songs, and hip-hop by citing these traditions, but it does not explicitly state when to use this tool vs alternatives or provide exclusions. It gives context but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_call_responseA
Create a call-and-response pattern — antecedent/consequent phrase structure.
The call (antecedent) poses a musical question, the response (consequent) answers it. This is the foundation of blues, jazz, hip-hop, electronic, and folk music. The pattern alternates: call → response → call → response, with the response starting after the call ends.
scale: Scale type (major, minor, blues, dorian, etc. — 14 types from music_theory). root: Root note name (C, C#, D, ... B). call_pattern: Scale degrees for the call phrase, space-separated (1-7, 0=rest, -=sustain). Example: "1 3 5 3" — rising and falling 4-note motif response_pattern: Scale degrees for the response phrase, space-separated. Example: "5 4 3 2" — descending answer repeats: Number of call+response pairs (1-8). 2 = call-response-call-response. octave: Starting octave (1-7, default 4). velocity: Note velocity 0-1. step_duration: Duration of each step in beats (0.25 = 16th, 0.125 = 8th triplet).
Returns total notes created and phrase structure.
Example: create_call_response(scale="blues", root="A", call_pattern="1 3 5 3", response_pattern="5 4 3 2", repeats=4)
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| scale | Yes | ||
| octave | No | ||
| repeats | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| call_pattern | Yes | ||
| step_duration | No | ||
| response_pattern | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It explains the behavioral pattern (call→response→call→response) and parameter effects, but it doesn't disclose side effects like where notes are placed (track/unit) or whether it mutates existing project state. This is a partial disclosure, not a full one.
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 well-structured: it leads with a clear purpose, provides musical context, lists parameters with examples, states return values, and gives a usage example. It is slightly verbose with genre enumeration, but each 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 covers core musical semantics, return values, and provides a concrete example, which is good for a generation tool. However, it misses placement-related parameters (track_index, unit_index, start_beat) and doesn't specify which scale types are included beyond a vague reference to music_theory. These gaps matter for a tool with 11 parameters and no annotations.
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 compensates well by explaining 8 of 11 parameters, including scales, root, patterns, repeats, octave, velocity, and step_duration, with examples and ranges. However, it omits start_beat, unit_index, and track_index, which are present in the schema and important for placement.
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 creates a call-and-response pattern with antecedent/consequent phrasing, which is specific and actionable. However, it doesn't differentiate from the sibling tool `create_call_and_response`, which appears to serve the same purpose, so it loses a point for sibling 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?
The description provides clear context on when to use the tool (e.g., for blues, jazz, hip-hop, electronic, and folk music) and explains the pattern alternation. It doesn't explicitly mention when not to use it or name alternatives, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_canonA
Create a canon — strict melodic imitation with delayed voice entries.
The foundation of contrapuntal music: a single melody is repeated in multiple voices, each entering after a delay, optionally transposed. Think Pachelbel's Canon, "Row Row Row Your Boat", Bach's fugue subjects, or modern call-and-response layers in film scores. Unlike create_counterpoint (which generates a new line), a canon copies the SAME melody into each voice — just shifted in time and pitch.
melody: Comma-separated MIDI pitches of the lead voice (e.g. "60,62,64,67").
voices: Number of imitating voices (2-6, default 3). Voice 1 enters first.
entry_delay_beats: Beats between each voice entry (1-16, default 4 = one bar in 4/4).
transposition: Comma-separated semitone offsets per voice (e.g. "0,7,12" = unison, fifth, octave).
Must have exactly voices values. "0,0,0" = all at same pitch (round/canon).
velocity_decay: Velocity reduction per voice (0-0.3, default 0.15). Later voices are quieter,
simulating natural ensemble hierarchy.
direction: Voice entry order — "up" (low to high) or "down" (high to low).
unit_index: AU index with note track (-1 = find first AU with note tracks).
track_index: Note track index within the AU.
start_beat: Position in beats where the first voice begins.
velocity: Base velocity for the first voice (0-1, default 0.85).
Returns notes created, voice count, total length, transpositions used.
| Name | Required | Description | Default |
|---|---|---|---|
| melody | No | 60,62,64,67,64,62,60,57 | |
| voices | No | ||
| velocity | No | ||
| direction | No | up | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| transposition | No | 0,7,12 | |
| velocity_decay | No | ||
| entry_delay_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It explains the core behavior (same melody copied into voices, time-delayed entries, optional transposition, velocity decay) and lists return values (notes created, voice count, total length, transpositions). It does not state whether the operation is additive or destructive to existing notes, or mention prerequisites for the target track, which would have made it 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 long but well-structured: a definition, musical context, and one-line parameter definitions. Every sentence adds value, especially given the lack of schema descriptions. It is slightly verbose in the conceptual opening but not wasteful.
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 complexity of 10 parameters, no annotations, and 0% schema description coverage, the description is remarkably complete. It covers all parameters, returns, examples, and a sibling differentiation. The presence of an output schema means return values need not be fully enumerated, but the description still summarizes them.
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 does so thoroughly: all 10 parameters are explained with concrete examples, ranges, and defaults (e.g., transposition '0,7,12', voices 2-6, entry_delay_beats 1-16). This is exemplary compensation for missing 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 opens with a clear, specific verb and resource: 'Create a canon — strict melodic imitation with delayed voice entries.' It explicitly contrasts with the sibling create_counterpoint ('which generates a new line'), clearly distinguishing what this tool does and making the purpose 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?
It provides strong usage context with musical examples (Pachelbel, Row Row Row Your Boat) and an explicit alternative comparison to create_counterpoint. However, it doesn't enumerate exclusions for other close siblings like create_fugue or create_chorale, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_cascaraA
Create an Afro-Cuban cáscara pattern — the timbale shell rhythm that fills space around the clave.
Cáscara ("shell") is played on the sides of the timbale drums. It weaves between the clave and tumbao, filling the rhythmic gaps with a flowing, continuous feel. Together with clave and tumbao, it forms the three pillars of the Afro-Cuban rhythm section. The pattern uses two stroke heights: high (rim/edge, accented) and low (shell body, unaccented), creating a call-and-response within the pattern.
cascara_type: "son_3_2" — Son cáscara, 3-2 direction (forward clave). Bar 1: &2 high, 3 low, &3 high, &4 low Bar 2: &2 high, 3 low, &3 high, 4 low "son_2_3" — Son cáscara, 2-3 direction (reverse clave). Bar 1: &2 high, 3 low, &3 high, 4 low Bar 2: &2 high, 3 low, &3 high, &4 low "guaguanco" — Rumba guaguancó cáscara. Adds ghost strokes on beat 1 and &1 of each bar for a denser, more driving feel. "mambo" — Mambo cáscara. Adds syncopated accents on &4 of bar 2 and a fill on beat 4 of bar 2. Brighter, more showy.
bars: Pattern length (2 = one cáscara cycle, repeat for longer). high_pitch: MIDI pitch for high strokes (rim/edge of timbale, 76 = high wood block). low_pitch: MIDI pitch for low strokes (shell body, 60 = mid tom). velocity: Base velocity 0-1. High strokes +0.1, low strokes -0.05.
Returns notes created, cáscara type, direction, and stroke breakdown.
Example: create_cascara(cascara_type="son_3_2", track_index=0) create_cascara(cascara_type="guaguanco", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| low_pitch | No | ||
| high_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| cascara_type | No | son_3_2 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosing behavior, and it does so extensively. It explains the two stroke heights (high/unaccented vs. low/accented), the detailed rhythmic structure for each cascara_type, velocity offsets (high +0.1, low -0.05), and the return value (notes created, type, direction, stroke breakdown). It does not mention potential side effects like whether existing notes are replaced or whether the pattern is added to a specific region, but the additive nature is implied by 'Create' and 'Returns notes created.'
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 long but well-structured. It front-loads the purpose, provides musical context that is relevant to usage, and then systematically breaks down each cascara_type with a compact notation. The parameter descriptions are concise and the examples at the end are useful. While slightly verbose, every major section earns its place, and the formatting aids readability.
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?
As a rhythmic pattern generator with 8 parameters, the description is quite complete: it defines the pattern variants, stroke semantics, velocity behavior, bar-length guidance, and examples. It does not explain three placement-related parameters (start_beat, unit_index, track_index) or describe edge cases like quantization or interaction with existing notes, but the output schema exists to cover return details, and the musical content is thorough. The gap on placement parameters prevents a perfect score.
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 thoroughly documents 5 of 8 parameters: cascara_type (with per-type notations), bars, high_pitch, low_pitch, and velocity. However, it leaves start_beat, unit_index, and track_index completely undocumented, relying on parameter names and examples alone. Since these are crucial for placement within the DAW, the description only partially compensates for the total absence 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 opens with a specific verb and resource: 'Create an Afro-Cuban cáscara pattern — the timbale shell rhythm that fills space around the clave.' It clearly distinguishes this from sibling tools like create_clave and create_tumbao by explaining the cáscara's complementary role as one of the three pillars, and it details specific pattern types (son_3_2, son_2_3, guaguanco, mambo). This avoids ambiguity and anchors the tool's identity 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 gives clear context about when this tool is appropriate: it is used for creating a cáscara pattern that interweaves with clave and tumbao in Afro-Cuban music. It also implies the complementary relationship ('Together with clave and tumbao...'), which helps an agent decide between this and related pattern tools. However, it does not explicitly state when NOT to use it or name alternatives, so it stops short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_chaconneA
Create a chaconne — repeating bass + chord progression + developing variations.
A chaconne is a set of variations over a repeating bass line and harmonic progression. Unlike ground bass (bass only) or passacaglia (bass + variations), a chaconne explicitly repeats both the bass AND the chord progression, building variations on top of this fixed harmonic framework.
Bass pattern: space-separated note names (e.g. "C2 G2 A2 E2"). Bass rhythm: space-separated durations in beats (e.g. "1 1 1 1"). Chord pattern: comma-separated chord names aligned with bass notes (e.g. "C,Em,Am,G"). Supports major, minor, dim, aug, maj7, m7, 7. Variation styles:
baroque: descending stepwise lines with suspensions, ornaments accumulate
romantic: wide intervals, expressive phrases, rubato-like timing
jazz: syncopated, chromatic passing tones, swing-like rhythm
minimalist: repeating cells with gradual phase shift
contemporary: dissonant clusters, intervallic leaps, pointillistic
Creates bass on track_index, chord pads on track_index+1, variation on track_index+2.
| Name | Required | Description | Default |
|---|---|---|---|
| repeats | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| bass_rhythm | No | 1 1 1 1 | |
| track_index | No | ||
| bass_pattern | No | C2 G2 A2 E2 | |
| chord_pattern | No | C,Em,Am,G | |
| variation_style | No | baroque |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It reveals concrete side effects: 'Creates bass on track_index, chord pads on track_index+1, variation on track_index+2.' It also documents variation style behavior. However, it does not state whether existing notes are overwritten or if tracks must pre-exist, leaving some side-effect ambiguity.
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 efficiently structured and front-loaded with the core definition. Each subsequent section (bass pattern, bass rhythm, chord pattern, variation styles, track placement) adds necessary usage detail without fluff. It is longer than average but earns its length given the tool's complexity.
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 (9 optional parameters, compositional form, multiple styles) and zero schema descriptions, the description is fairly complete: it covers form definition, differentiation, parameter formats, style meanings, and output track placement. It falls short only on a few parameter semantics (repeats, velocity, start_beat, unit_index) and does not mention prerequisites about existing tracks, but overall it provides enough 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?
Schema description coverage is 0%, so the description must compensate. It explains bass_pattern format ('space-separated note names'), bass_rhythm ('space-separated durations in beats'), chord_pattern ('comma-separated chord names', supported chord types), variation_style options with brief descriptors, and track_index placement behavior. However, repeats, velocity, start_beat, and unit_index are not described, leaving gaps for 4 of 9 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 opens with a specific verb and resource: 'Create a chaconne — repeating bass + chord progression + developing variations.' It clearly defines what a chaconne is and explicitly differentiates it from ground bass and passacaglia, which are sibling tools. This resolves ambiguity among similarly named compositional generators.
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 contrasts chaconne with ground bass ('bass only') and passacaglia ('bass + variations'), stating that chaconne repeats both bass AND chord progression. This gives direct when-to-use guidance relative to named alternatives, satisfying the 5-level criterion of explicit when/when-not/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_chopA
Create a chop — slice source pitches into segments and rearrange them.
The quintessential hip-hop/EDM sampling technique: take a sequence of pitches, cut it into equal segments, then rearrange (reverse, stutter, shuffle, ping-pong). Think Dilla chops, Madlib sample flips, Virtual Riot bass chops, or glitch-hop stutter effects. Each segment becomes a self-contained musical cell.
pitches: Comma-separated MIDI pitches to use as source material (e.g. "60,62,64,67"). chop_mode: How to rearrange segments — "reverse" (play segments backwards), "stutter" (repeat each segment N times — glitch/stutter effect), "shuffle" (random segment order, seeded), "ping-pong" (forward then backward — ABBA pattern), "gate" (silence every other segment — chopped break feel). segment_beats: Duration of each segment in beats (0.25-4, default 0.5 = 8th note). stutter_count: For stutter mode, times to repeat each segment (2-8, default 2). octave_shift: Shift all pitches by N octaves (default 0). -1 = down an octave for bass chops. velocity_variation: Vary velocity between segments (0-0.5, default 0.2). Adds human feel. reverse_pitch_in_segment: If true, reverse pitch order within each segment (inner chop). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the chop begins. velocity: Base velocity (0-1, default 0.9). seed: Random seed for reproducibility.
Returns notes created, segment count, mode used.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| pitches | No | 60,62,64,67,60,64,62,60 | |
| velocity | No | ||
| chop_mode | No | reverse | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| octave_shift | No | ||
| segment_beats | No | ||
| stutter_count | No | ||
| velocity_variation | No | ||
| reverse_pitch_in_segment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It describes the operation, parameter effects, and return values ('Returns notes created, segment count, mode used'), but does not disclose potential side effects like overwriting existing notes or prerequisites beyond implied track/unit indices.
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 long but every sentence earns its place: a crisp purpose statement, musical context, per-parameter explanations, and return summary. The use of line breaks per parameter improves scannability without 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 12 parameters, no annotations, and an output schema (existence noted), the description covers all parameter semantics, usage context, and return information. Missing only explicit side-effect warnings, but for a 'create' operation this is a minor gap, not a critical deficiency.
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%, but the description compensates fully by explaining every parameter with defaults, ranges, and examples (e.g., stutter_count 2-8, octave_shift -1 for bass chops, velocity_variation 0-0.5). This is far beyond what the schema 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 opens with a specific verb and resource: 'Create a chop — slice source pitches into segments and rearrange them.' It clearly differentiates from sibling tools like create_stutter by presenting chop as the umbrella technique with multiple rearrangement modes, including stutter as one of 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?
Provides strong musical context ('quintessential hip-hop/EDM sampling technique', Dilla chops, glitch-hop) that implies when to use this tool. However, it does not explicitly name alternative tools (e.g., create_stutter) or specify when not to use it, leaving some room for interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_choraleA
Create a 4-voice SATB chorale with voice-leading rules.
Generates soprano, alto, tenor, and bass voices from a chord progression with proper voice leading: common tones preserved, smooth voice movement (no unnecessary leaps), no parallel fifths or octaves between adjacent chords, and voices stay within their ranges (S: 60-81, A: 55-74, T: 48-67, B: 36-62). The soprano voice gets the melody line (chord roots or nearest chord tones). Classic Bach chorale style — foundational for vocal harmonies, string arrangements, synth pad layering.
chord_pattern: Comma-separated chord names (e.g. "C,Am,F,G"). Supports: maj, min, m7, maj7, dom7, sus2, sus4, dim, aug. beats_per_chord: Duration of each chord in beats (default 4 = 1 bar in 4/4). beats_per_bar: Time signature beats (3/4=3, 4/4=4, 6/8=6, default 4). key_root: Key root note for voice-leading context (e.g. "C", "F#", "Bb"). key_mode: Key mode — "major" or "minor" (affects voice assignment). soprano_velocity: Velocity of soprano voice (0-1, default 0.7). alto_velocity: Velocity of alto voice (0-1, default 0.6). tenor_velocity: Velocity of tenor voice (0-1, default 0.6). bass_velocity: Velocity of bass voice (0-1, default 0.65). note_duration: Note duration as fraction of chord length (0-1, default 0.9). voice_spread: Extra spacing between voices in semitones (0-12, default 0). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the chorale begins.
Returns notes created, chord count, voice ranges, voice-leading info.
| Name | Required | Description | Default |
|---|---|---|---|
| key_mode | No | major | |
| key_root | No | C | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| voice_spread | No | ||
| alto_velocity | No | ||
| bass_velocity | No | ||
| beats_per_bar | No | ||
| chord_pattern | No | C,Am,F,G | |
| note_duration | No | ||
| tenor_velocity | No | ||
| beats_per_chord | No | ||
| soprano_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains generation mechanics: common tones preserved, smooth voice movement, no parallel fifths/octaves, range limits for each voice, and soprano receives the melody. It also lists returned data. This goes well beyond a basic summary, though it doesn't address potential side effects like overwriting existing notes.
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 efficiently structured: opening summary, behavioral detail, then a clear parameter list and returns line. Each sentence serves a purpose—voice ranges, chord types, defaults, and output behavior are all packed in without fluff. It is long out of necessity given the 14 parameters, but nothing feels redundant.
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 14 parameters and no schema descriptions, yet the description covers every parameter, explains voice-leading logic, gives range constraints, and notes the output structure. The presence of an output schema reduces the need to detail return values, but the description still mentions them. For a generation tool with this complexity, the description is remarkably 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 input schema has no descriptions for any parameter (0% coverage). The tool description compensates by documenting all 14 parameters, including defaults, ranges, and examples (e.g., 'chord_pattern: Comma-separated chord names (e.g. "C,Am,F,G")'). This fully resolves the schema gap and provides actionable meaning beyond the stamped types 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 opens with a specific action: 'Create a 4-voice SATB chorale with voice-leading rules.' It clearly distinguishes this tool from sibling tools like create_harmony or create_voice_led_progression by specifying SATB voicing, voice-leading constraints, and Bach chorale style. This is a concrete verb+resource pairing with immediate 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 provides clear context for when to use this tool: 'Classic Bach chorale style — foundational for vocal harmonies, string arrangements, synth pad layering.' It implies suitability for traditional SATB writing but does not name alternative tools or explicitly state when not to use it, so it stays at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_chord_padsB
Create chord pads from a human-readable progression string.
Unlike create_chord_progression (which takes JSON arrays), this takes a simple hyphen-separated string like "Am-F-C-G" — much easier for agents and humans to write. Generates sustained chord pads with configurable octave, velocity, and bars per chord.
progression: Hyphen-separated chords. Each chord is root+type: "Am" = A minor, "F" = F major, "Cmaj7" = C major seventh, "G7" = G dominant 7, "Dm7" = D minor 7, "Esus4" = E suspended 4. Supported types: maj, min, dom7, maj7, min7, sus2, sus4, add9, dim, aug. Default "Am-F-C-G" = i-VI-III-VII in A minor (synthwave/trance). "C-Am-F-G" = I-vi-IV-V in C major (pop). "Dm7-G7-Cmaj7-Am7" = ii-V-I-vi in C (jazz).
bars_per_chord: How many bars each chord lasts (default 4 = one chord per 4-bar phrase). 2 = faster changes, 8 = slow pads.
octave: MIDI octave for chord voicing (3 = C3=48, typical pad range). velocity: Note velocity (0-1, default 0.65 = soft pad). unit_index: AU index with note tracks. track_index: Track for chord pads (typically harmony track = 2). start_beat: Where the progression starts. note_duration: Note length in beats (default 3.8 = almost full bar with small gap for articulation).
Returns chords created, pitches per chord, total notes.
Example:
i-VI-III-VII in A minor (synthwave pads)
create_chord_progression("Am-F-C-G", bars_per_chord=4, octave=3)
ii-V-I-vi in C (jazz comping under)
create_chord_progression("Dm7-G7-Cmaj7-Am7", bars_per_chord=2, octave=3)
I-V-vi-IV in C (pop progression)
create_chord_progression("C-G-Am-F", bars_per_chord=4, octave=4, track_index=2, velocity=0.6)
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| note_duration | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a lot: generates sustained pads, configurable parameters, supported chord types, defaults, and return values. However, the internal contradiction (says this tool uses strings, then shows examples calling the JSON-array tool with strings) reduces trust in the behavioral description. Without annotations, this inconsistency is a notable transparency 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 well-structured but overly long, with three examples that mostly repeat the same progression format. The most critical flaw is that every example uses the wrong tool name (create_chord_progression), which is misleading and should have been caught. The verbosity is partially justified by the need to document chord syntax and defaults, but the errors make it less concise in practice.
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 chord syntax, defaults, return values, and provides genre context. However, the pervasive use of create_chord_progression in examples makes the invocation details incorrect, so an agent cannot rely on the examples. It also lacks explicit prerequisites (e.g., must have a note track at track_index) and doesn't clarify whether existing notes are overwritten. The output schema exists but the description's inaccuracies prevent full completeness.
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 nearly all 8 parameters in detail: progression format and supported chord types, bars_per_chord, octave, velocity, note_duration, and some context for unit_index and track_index. start_beat is only minimally described as 'where the progression starts' without specifying units. Given 0% schema coverage, this compensation is strong but not perfect.
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 opening sentence clearly defines the tool as creating chord pads from a human-readable string, and it distinguishes itself from create_chord_progression by string vs JSON arrays. However, all usage examples call create_chord_progression instead of the actual tool name, which creates significant confusion about which tool does what.
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 contrasts with create_chord_progression and provides genre-specific progression examples, which is helpful. But the examples incorrectly invoke create_chord_progression, undermining the guidance and potentially causing an agent to call the wrong sibling tool. The distinction between string and JSON is clear, but the execution is flawed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_chord_progressionA
Create a chord progression from chord names — one call instead of 15-50 note creations.
chords: JSON array of chord specs. Each chord is [root_note_name, chord_type]. Root names: C, C#, D, D#, E, F, F#, G, G#, A, A#, B (or flats: Db, Eb, Gb, Ab, Bb) Chord types: maj, min, dom7, maj7, min7, sus2, sus4, add9, dim, aug
Example: '[["C","min"],["F","min"],["G","dom7"],["C","min"]]'
unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the progression starts (0 = bar 1). chord_duration: Length of each chord in beats (4 = one bar at 4/4).
Returns the total notes created and chord voicings used.
| Name | Required | Description | Default |
|---|---|---|---|
| chords | Yes | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| chord_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It clearly states the tool creates a chord progression, explains how parameters affect placement (unit_index, track_index, start_beat, chord_duration), and notes the return value. It doesn't specify side effects on existing notes or permissions, but the provided context is substantially 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 moderately sized but every sentence adds value: purpose, chord spec format, root names, chord types, example, parameter meanings, and return value. It is well-structured and avoids 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 covers all five parameters, provides an example, and explains the return value. No annotations exist, but the tool's complexity is fully addressed given the parameter explanations and output 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?
Schema description coverage is 0%, but the description fully compensates by documenting every parameter in plain language. It gives allowed root names, chord types, a JSON example, and explains each parameter's meaning, including defaults (start_beat=0, chord_duration=4) with musical 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 opens with a specific action ('Create a chord progression from chord names') and contrasts it with creating 15-50 individual notes, making the tool's purpose unmistakable. It also lists the exact chord root names and types, which differentiates it from other progression tools that may work from keys or styles.
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 says 'one call instead of 15-50 note creations,' which tells the agent to prefer this tool when the user wants to place chord progressions efficiently rather than building them note-by-note. However, it does not explicitly differentiate from sibling tools like create_progression_from_key or reharmonize_progression, 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.
mcp_opendaw_create_claveA
Create an Afro-Cuban clave pattern — the 5-note rhythmic skeleton that defines the feel.
The clave is not a drum pattern — it's a timeline pattern that all other rhythms align to. Every Afro-Cuban rhythm has a clave direction (3-2 or 2-3) that determines where the downbeats fall relative to the clave strokes.
clave_type: "son_3_2" — Son clave, 3-side first (forward clave). Beats: 0, 0.5, 1, 2.5, 3 "son_2_3" — Son clave, 2-side first (reverse clave). Beats: 0, 1.5, 3, 3.5, 4 "rumba_3_2" — Rumba clave, 3-side first. Last stroke shifted to 3.5 (and 2.5→2.66) "rumba_2_3" — Rumba clave, 2-side first. "bossa_nova" — Bossa nova clave. Beats: 0, 2.5, 3, 4.5, 5 (over 2 bars) "6_8" — 6/8 Afro-Cuban clave. 5 strokes across 2 bars of 6/8.
bars: Pattern length in bars (2 for son/rumba, 2 for bossa, 2 for 6/8). pitch: MIDI pitch for clave strokes (76 = high wood block). velocity: Velocity 0-1. duration: Note duration in beats.
Returns notes created, clave type, and direction (3-2 or 2-3).
Example: create_clave(clave_type="son_3_2", track_index=0) create_clave(clave_type="bossa_nova", track_index=1)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| pitch | No | ||
| duration | No | ||
| velocity | No | ||
| clave_type | No | son_3_2 | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of transparency and delivers detailed behavioral information: exact beat positions for each clave type, return values, and parameter meanings. However, it does not disclose potential side effects like whether existing notes are overwritten or how the pattern interacts with the target 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 well-structured, front-loaded with a clear purpose, and uses bullet lists and examples effectively. It is somewhat long and includes minor redundancy (e.g., all bars defaults are 2), but every section 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 description covers the core concept and most parameters, and the output schema handles return values. However, it misses start_beat and unit_index semantics, and does not explain how the pattern is placed in the project or whether it clears existing notes, which is a notable gap for a complex 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 richly explains clave_type with beat mappings for all six variants, and gives meaning to bars, pitch, velocity, and duration. However, start_beat and unit_index are not described, and track_index only appears in examples, leaving a few parameters without semantic 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 it creates an Afro-Cuban clave pattern and explains it is a timeline pattern, not a drum pattern. This gives a specific verb+resource, but it does not explicitly distinguish itself from sibling tools like create_tumbao or create_drum_pattern beyond the 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 provides strong musical context, explaining that the clave is the rhythmic skeleton all other rhythms align to and that every Afro-Cuban rhythm has a direction. This implies when to use the tool, but it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_colotomicA
Create a colotomic structure — interlocking gong layers marking cyclic time.
Gamelan music uses colotomic instruments (gongs of different sizes) to mark the cyclic structure of a piece. Each gong level has its own periodicity, creating an interlocking temporal grid. The largest gong (gong ageng) marks the end of a full cycle, while smaller gongs subdivide it into sections. The melodic instruments (saron, bonang) fill in between the gong strikes.
Unlike polyrhythm (simultaneous conflicting meters) or additive rhythm (unequal groupings), colotomic structure is hierarchical: each layer subdivides the cycle at a different level, creating a nested temporal hierarchy. This is the foundation of Indonesian gamelan, Javanese klenengan, and Balinese ritual music.
Structures: slendro — 8-beat gong cycle (gongan): gong at beat 8, kenong at 4, kempul at 2+6, kethuk at every odd beat. Slendro scale. pelog — 16-beat gong cycle: gong at 16, kenong at 8+12, kempul at 4+12, kethuk at every 2 beats. Pelog-inspired. lancaran — 8-beat with doubled kethuk (faster surface rhythm) ketawang — 16-beat with half-speed gong (longer cycle feel)
Tempo density: sparse — gong layers only, no melodic fill medium — gong layers + basic saron (elaboration) dense — gong layers + saron + bonang (full interlock)
Args: root: Root note name (C, C#, D, ...). scale: Scale name (pentatonic_minor, pentatonic_major, major, minor). Default pentatonic_minor for slendro-like feel. cycles: Number of gongan cycles (1-8). octave: Starting MIDI octave (2-5). structure: Structure type (slendro, pelog, lancaran, ketawang). tempo_density: Density level (sparse, medium, dense). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, gong layer breakdown, and cycle info.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | pentatonic_minor | |
| cycles | No | ||
| octave | No | ||
| velocity | No | ||
| structure | No | slendro | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| tempo_density | No | medium |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states it creates notes and returns notes created, gong layer breakdown, and cycle info, and lists parameters like unit_index, track_index, and start_beat, implying it places notes in a DAW. However, it does not disclose side effects such as whether it overwrites existing notes, requires a pre-existing track, or modifies existing regions—important 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 long but well-organized, front-loading the purpose, then providing musical context, differentiation, structure/tempo lists, args, and returns. Some educational content (e.g., the role of melodic instruments) could be trimmed without loss, but the length is largely justified given the complexity of 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?
For a tool with 10 parameters, no schema descriptions, and no annotations, the description is quite complete: it explains the musical concept, all parameter options, structure specifics, and return value. It lacks explicit info on how output relates to the output schema and some behavioral edge cases, but it is sufficiently rich for an agent to select and 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?
Schema description coverage is 0%, so the description must compensate, and it does with an 'Args' section that explains all 10 parameters, including allowed structures, tempo densities, ranges for cycles/octave, and the meaning of unit_index/track_index. It omits some specifics (e.g., root note format beyond examples, whether values are case-sensitive), but overall it adds significantly 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 opens with a specific verb+resource: 'Create a colotomic structure — interlocking gong layers marking cyclic time.' It clearly differentiates from siblings by contrasting with polyrhythm and additive rhythm, making the tool's unique purpose 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?
The description provides strong contextual guidance by explaining when colotomic structure is appropriate ('foundation of Indonesian gamelan, Javanese klenengan, and Balinese ritual music') and explicitly distinguishes it from polyrhythm and additive rhythm. However, it does not explicitly name alternative tools or state 'use this instead of X', 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.
mcp_opendaw_create_comparsaA
Create Cuban comparsa — carnival procession percussion.
Comparsa is the percussion ensemble that accompanies Cuban carnival street processions (conga line). Rooted in Afro-Cuban tradition, it is the ancestor of salsa and modern Latin pop. The driving energy comes from layered conga drums with interlocking patterns.
Instruments (GM percussion mapping):
Conga low (54) — tumbadora, bass tone
Conga high (63) — quinto, slap tone
Conga open (64) — conga open tone
Clave (75) — wooden claves, the timeline
Cowbell (56) — cencerro, driving pulse
Maracas (70) — shaker
Guiro (73) — scraped gourd
Styles:
habanera: Classic Havana carnival. Conga pattern with clave 3-2, cowbell steady 8ths, maracas on offbeats. The street procession feel. 90-110 BPM.
santiago: Eastern Cuba, rumba-influenced. More syncopated conga patterns, guiro scrapes, claves 2-3. Looser feel.
matanzas: Rumba columbia roots. Quinto improvisation feel, open conga tones, sparse cowbell. Afro-Cuban spiritual energy.
conga_line: Street procession — marching feel. Steady bass conga on every beat, quinto syncopation, cowbell accent pattern. Designed for dancing in a line.
comparsa_moderna: Modern carnival — faster, denser, 16th-note maracas, driving cowbell, layered congas. Salsa-influenced energy.
Creates notes on track_index using GM percussion.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | habanera | |
| velocity | No | ||
| tempo_bpm | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does state, 'Creates notes on track_index using GM percussion', which clarifies the core side effect (note creation on a target track). It also lists the exact GM instruments that will be used, adding useful detail. However, it does not disclose whether existing notes are overwritten, whether any project setup is required, or any other side effects, leaving some ambiguity.
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 long but well-organized into clear sections: definition, instrument mapping, and style variants. Every bullet point adds useful context for a culturally-specific tool. The opening sentence is front-loaded with the primary action. While it could be trimmed by removing background history, the detail is justified for a style-specific generator and maintains readability.
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 (7 parameters, 5 styles, multiple percussion instruments) and that an output schema exists, the description is quite complete. It explains the cultural origin, maps each GM instrument to its role, details each style variant, and explicitly states the track-writing behavior. Minor gaps remain around project requirements (e.g., track must be a GM drum track) or interaction with existing notes, but overall it covers the essential 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 description coverage is 0%, so the description must compensate. It provides explicit value semantics for the 'style' parameter (listing all five styles with descriptions) and clarifies 'track_index' by saying notes are created there. Other parameters like bars, velocity, tempo_bpm, and start_beat are self-explanatory by name, but 'unit_index' remains undocumented. The addition of style and track_index is valuable but only partially compensates for the complete lack of schema-level 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 opens with 'Create Cuban comparsa — carnival procession percussion', which clearly states the tool's function: generating a specific Cuban carnival percussion pattern. It distinguishes itself from the many sibling creation tools by explicitly naming its unique cultural/musical niche and providing detailed genre-specific content.
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 cultural context and enumerates style variants, implying it should be used when a Cuban comparsa percussion groove is desired. However, it never explicitly states when to use this tool over alternatives like create_clave or create_tumbao, nor does it mention any exclusions or prerequisites, so 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.
mcp_opendaw_create_compingA
Create comping — rhythmic chordal accompaniment.
The most common accompaniment style in modern music: play chords in a rhythmic pattern rather than sustained blocks. Jazz piano comping, funk guitar chops, reggae skanks, country boom-chick, Neo-soul chords. Unlike create_chord_progression (sustained blocks) or create_stab (house stabs), comping gives each chord a rhythmic identity — the chord follows the groove.
chords: JSON array of chord specs, same as create_chord_progression. Each chord is [root_note_name, chord_type]. Root names: C, C#, D, D#, E, F, F#, G, G#, A, A#, B (or flats: Db, Eb, Gb, Ab, Bb) Chord types: maj, min, dom7, maj7, min7, sus2, sus4, add9, dim, aug Example: '[["C","min7"],["F","min7"],["G","dom7"],["C","min7"]]' rhythm: Rhythmic pattern string. Each char = one step of note_spacing beats: 'x' = play chord, '-' = rest, '.' = ghost (quiet chord) Default "x-x-x-x-" = off-beat eighths (classic jazz comping) "x--x--x-" = syncopated funk "x...x..." = boom-chick (country) "x-x-x-x-x-x-x-x" = reggae skank (every off-beat 16th) unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Where comping starts. chord_octave: MIDI octave for chord root (4 = C4=60). velocity: Base velocity (0-1, default 0.7). note_spacing: Duration of each rhythm step in beats (0.25=16th, 0.5=8th, default 0.5). syncopation: Probability of pushing a note slightly off-grid (0-0.5, default 0). Adds human feel — 0.1 = subtle, 0.3 = pronounced.
Returns notes created, chords played, rhythm pattern used.
| Name | Required | Description | Default |
|---|---|---|---|
| chords | Yes | ||
| rhythm | No | x-x-x-x- | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| syncopation | No | ||
| track_index | No | ||
| chord_octave | No | ||
| note_spacing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains rhythmic behavior, ghost notes, syncopation, and the return values (notes, chords, rhythm pattern). It does not mention potential side effects on existing notes, but for a creation tool this is a minor omission. The behavior is well-articulated.
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 long but efficiently structured: clear intro, differentiation, then a parameter list with examples. It is front-loaded with the purpose, and every sentence provides useful information (defaults, examples, semantics) without 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 9-parameter tool with one required param and an output schema, the description covers all parameters, return values, usage context, and examples. It also clarifies sibling relationships, making it fully complete for selection and 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 coverage is 0%, yet the description documents every parameter with detailed semantics: chords format and example, rhythm pattern characters and examples, note_spacing, syncopation, and defaults. This fully compensates for the bare schema and adds substantial 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?
The description clearly states 'Create comping — rhythmic chordal accompaniment' and differentiates from sibling tools by explicitly contrasting with create_chord_progression (sustained blocks) and create_stab (house stabs). The verb and resource are specific, and the unique rhythmic identity is highlighted.
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 explicit guidance on when to use this tool versus alternatives: 'Unlike create_chord_progression (sustained blocks) or create_stab (house stabs), comping gives each chord a rhythmic identity.' It also lists genre examples (jazz, funk, reggae, country) to illustrate appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_counter_melody_from_progressionA
Create a counter-melody (second melodic line) from a chord progression.
A counter-melody is a secondary melodic line that plays alongside the primary melody. It provides harmonic depth and contrapuntal interest without competing for the listener's attention.
This completes the harmonic quintet: chord_pads + arpeggiated_progression + bass_from_progression + melody_from_progression + THIS (counter-melody). Place on track 4 (default) to avoid clashing with melody (track 3).
pattern: Contrapuntal pattern: "contrary" — moves opposite to chord root motion (if root goes up, counter goes down). Classic species-1 counterpoint feel. "oblique" — one note sustained across the chord, changes only when the harmony forces it. Minimalist, drone-like. "parallel_third" — parallels the chord tones a third above. Sweet, consonant, pop/folk counter-melody. "parallel_sixth" — parallels the chord tones a sixth above. Open, spacious, cinematic. More independent than parallel third. "call_response" — answers after the melody would play: rests on beats 1-2, plays on beats 3-4. Antiphonal, gospel/soul feel.
bars_per_chord: Bars per chord (default 4). octave: MIDI octave (default 4 = below typical melody at 5). velocity: Lower than melody (0-1, default 0.6 = supportive, not competing). track_index: Track for counter-melody (default 4, above melody track 3).
Example:
Counter-melody below the lead
create_counter_melody_from_progression("Am-F-C-G", pattern="contrary", octave=4, velocity=0.6)
Cinematic parallel sixths
create_counter_melody_from_progression("Dm-G-C-Am", pattern="parallel_sixth", octave=4, velocity=0.55)
Gospel call-and-response
create_counter_melody_from_progression("C-Am-Dm-G", pattern="call_response", octave=5, velocity=0.65)
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| pattern | No | contrary | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the pattern options (contrary, oblique, parallel_third, parallel_sixth, call_response) and default values for octave, velocity, and track_index, which gives insight into the generated output. However, it does not mention side effects such as whether existing notes on the target track are overwritten, what exactly is created (e.g., a MIDI region), or any prerequisites beyond having a progression. This is adequate 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 well-structured: a definition, context about the harmonic quintet, a bulleted list of pattern options, a parameter list, and three examples. It is longer than the minimum but every section adds value—the pattern explanations are particularly useful. It could be slightly trimmed (e.g., the example code block is long), but it remains efficient and front-loaded with 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?
For a tool with 8 parameters and moderate complexity, the description covers most key aspects: purpose, patterns, defaults, track placement, and examples. It is incomplete regarding start_beat and unit_index, and it does not specify the expected format of the progression string beyond the example 'Am-F-C-G'. Since an output schema exists, the lack of return-value documentation is acceptable. Overall, it is a thorough description with minor 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?
The input schema has no parameter descriptions (0% coverage), so the description must compensate. It explains pattern, bars_per_chord, octave, velocity, and track_index, including detailed sub-values for pattern. The examples also demonstrate parameter usage. However, two parameters—start_beat and unit_index—are not mentioned at all, leaving them unexplained. This is a significant but not total gap, so a 4 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 opens with 'Create a counter-melody (second melodic line) from a chord progression,' which clearly names the verb and resource. It further distinguishes this tool from the related melody_from_progression by emphasizing it is the secondary line, and explicitly places it in the harmonic quintet alongside chord_pads, arpeggiated_progression, bass_from_progression, and melody_from_progression.
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: it should be used to add a second melodic line over an existing progression/melody, and it is the final piece of the harmonic quintet. It also advises placing it on track 4 to avoid clashing with the melody on track 3. However, it does not explicitly name alternative tools or say when not to use it, 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.
mcp_opendaw_create_counterpointA
Generate a counter-melody in contrary motion to existing notes.
Reads notes from a melody and creates a counterpoint that moves in the opposite direction: when the melody goes up, the counterpoint goes down, and vice versa. Each note is offset by a fixed interval from the melody's midpoint pitch, then mirrored.
unit_index: Source AU index. track_index: Source note track index. region_index: Source region index. interval: Base interval in semitones between melody and counterpoint (default 7 = fifth). The counterpoint is placed interval semitones below the melody's average pitch, then each note is mirrored around that center. new_unit_index: Target AU index (-1 = create new synth track). new_track_index: Target note track index on the target AU. velocity: Velocity for counterpoint notes (default 0.6, quieter than melody).
Returns source notes read and counterpoint notes created.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | ||
| velocity | No | ||
| unit_index | Yes | ||
| track_index | No | ||
| region_index | No | ||
| new_unit_index | No | ||
| new_track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the algorithm (reads notes, offsets by interval, mirrors around midpoint), the effect of default parameters, and the return value. It also notes that velocity is quieter than melody. It lacks explicit statements about whether source notes are modified, but 'reads notes' implies non-destructive 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 well-structured and appropriately sized for a 7-parameter tool. It leads with a clear summary of the tool's function, follows with an algorithmic explanation, and then lists parameters with concise semantic annotations. No wasted words or redundant 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?
The description provides enough information for an agent to invoke the tool correctly, including all parameter semantics and the return value. It covers the main behavioral aspects (contrary motion, interval offset, target placement). It does not describe edge cases (e.g., empty region) or detailed output structure, but the presence of an output schema suggests those are handled elsewhere.
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 fully compensates by explaining every parameter: unit_index, track_index, region_index, interval (with default and meaning as a fifth), new_unit_index (with -1 meaning new synth track), new_track_index, and velocity (with default and quieter-than-melody). This adds substantial semantic value 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?
The description clearly states the tool generates a counter-melody in contrary motion to existing notes, using specific terminology like 'counter-melody', 'contrary motion', and 'mirrored'. It distinguishes from siblings such as create_counter_melody_from_progression or create_harmony by specifying the algorithm (opposite direction, fixed interval).
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 use: to generate a counter-melody from an existing melody with contrary motion. It explains the source and target parameters, implying when to use it. However, it does not explicitly mention alternatives or when not to use it, 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.
mcp_opendaw_create_country_arrangementA
Create a full country arrangement — boom-chick guitar + root-five bass + major pentatonic fiddle lead.
Classic country/Americana — the foundation of American roots music:
Track 0: Drums — straight 8th backbeat: kick on 1 and 3, snare on 2 and 4, steady 8th hi-hats. Country drums are straight, not shuffled like blues — the groove comes from the guitar, not the drums.
Track 1: Bass — root-five pattern: root on beat 1, fifth on beat 3. The classic country bass — simple, steady, and unmistakable.
Track 2: Chords — boom-chick guitar: alternating bass note (beat 1) + chord strum (beat 2), bass note (beat 3) + chord strum (beat 4). Triads, not 7ths — country harmony is cleaner than blues. The boom-chick is the Carter Family/Johnny Cash pattern.
Track 3: Lead — major pentatonic (root, 2, 3, 5, 6) with occasional blue notes (b3, b7). Fiddle-style: long sustained notes, fast scale runs, and bends. The crying fiddle quality.
At 120 BPM (default), this is a classic country two-step tempo. At 90 BPM, it's a country ballad. At 140, it's a fast bluegrass breakdown feel.
The I-IV-V progression: I-I-IV-I-V-I-IV-I (8 bars). Simple, direct, and the backbone of country, folk, and Americana.
bpm: Tempo (80-160, default 120 = classic country two-step). bars: Arrangement length (must be multiple of 8, default 8). root: Root note (G is the most common country key — guitar/capo friendly). octave: MIDI octave for bass (2 = G2=43, standard country bass register). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_country_arrangement(bpm=120, root="G", bars=8) create_country_arrangement(bpm=90, root="D", bars=16) # ballad, 2 verses
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | G | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It transparently describes the musical behavior of each track, including patterns, scales, and stylistic distinctions. It also mentions return value ('Returns notes created per track and total'). However, it does not disclose whether existing notes on target tracks are overwritten or if specific track prerequisites must 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?
The description is long but well-structured with a summary, per-track bullets, tempo guidance, parameter explanations, and examples. Every sentence adds value—musical rationale, constraints, or usage. It is appropriately sized for a complex 11-parameter tool and is front-loaded with 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?
Given the complexity and lack of annotations, the description covers musical patterns, parameter constraints, examples, and return behavior. The output schema exists, so return values need not be detailed. The main gap is not stating whether the tool assumes existing tracks or creates them, and not clarifying behavior with pre-existing notes.
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%, but the description compensates by explaining 9 of 11 parameters, including defaults and constraints (e.g., bars must be multiple of 8, octave meaning with a concrete example). It omits velocity and start_beat, which are two undocumented parameters in the schema. Overall, it adds significant value 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 it creates a full country arrangement with specific track roles (drums, bass, chords, lead). It distinguishes this from other genre tools by detailing the musical pattern (boom-chick, root-five bass, major pentatonic lead) and contrasting with blues ('not shuffled like blues'). It goes far beyond a generic 'create arrangement' statement.
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 (classic country/Americana) and gives tempo guidance for different sub-styles (two-step, ballad, bluegrass). However, it does not explicitly name alternative tools or state when not to use it, though the sibling list and genre-specific detail imply the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_crescendoA
Apply a crescendo or decrescendo to existing notes in a region.
Gradually changes note velocities from start_velocity to end_velocity across all notes in the region. Useful for building tension or fading out.
unit_index: AU index. track_index: Track index. region_index: Region index (-1 = first region). start_velocity: Starting velocity 0-1 (low = quiet beginning). end_velocity: Ending velocity 0-1 (high = loud end). curve: "linear", "exp" (exponential, starts slow), "log" (logarithmic, starts fast).
Returns number of notes modified and velocity range applied.
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | linear | |
| unit_index | Yes | ||
| track_index | Yes | ||
| end_velocity | No | ||
| region_index | No | ||
| start_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains that note velocities are gradually changed from start to end across all notes in the region, and it describes the curve options ('linear', 'exp', 'log'). It also discloses the return value (number of notes modified and velocity range), which is valuable 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 well-structured and concise: a one-sentence purpose, a brief behavioral summary, a usage hint, a parameter list, and a return-value statement. Every sentence adds value with no redundancy or fluff, and the information is front-loaded with the main verb and resource.
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 6 parameters, no annotations, and a description that covers all behaviors and return values. It does not mention error conditions or prerequisites (e.g., that the region must exist), but for a note-velocity editing tool this is a minor gap. Overall, the description is sufficiently complete for an agent 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?
Schema description coverage is 0%, but the description fully compensates by explaining every parameter: unit_index, track_index, region_index (with default -1 meaning first region), start_velocity, end_velocity, and curve (including detailed curve semantics). This goes beyond what the schema provides, making it easy for an agent to select correct 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 tool applies a crescendo or decrescendo to existing notes in a region, using a specific verb and resource. It distinguishes itself from velocity-related sibling tools by focusing on gradual velocity transitions across a region. The scope is explicit 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 provides clear context: 'Useful for building tension or fading out' indicates when to apply the tool. It does not explicitly name alternatives or exclusions, but the context is sufficient to understand its intended use. The mention of 'existing notes' implies it is not for creating new content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_cross_rhythmA
Create a cross-rhythm — multiple voices with independent period lengths creating shifting alignment.
Unlike polyrhythm (which divides one bar into n and m equal parts), cross-rhythm gives each voice its own period length in beats. The voices cycle independently, creating continuously shifting alignment patterns that only realign after the LCM of all periods.
African cross-rhythms, Steve Reich, Talking Heads, minimalism.
voices: Comma-separated period lengths per voice. E.g., "5,7,3" creates 3 voices with period 5, 7, and 3 beats respectively. 2-6 voices supported. bars: Total length in bars (1-16). The pattern cycles until bars×4 beats is filled. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. duration: Note duration in beats. base_velocity: Base velocity 0-1. Each voice gets slightly attenuated (voice 0 = full).
Returns total notes created, voice periods, and alignment interval (LCM).
Common cross-rhythms: "5,7" — 5-beat vs 7-beat (African, shifts every 35 beats) "3,4,5" — triple cross-rhythm (minimalism) "4,5,6" — dense shifting pattern "3,5,7" — prime cross-rhythm (longest alignment cycle = 105 beats)
Example: create_cross_rhythm(voices="5,7", bars=8, track_index=0)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| voices | Yes | ||
| duration | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| base_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key behaviors: independent voice cycling, LCM alignment, bars×4 beat fill, voice attenuation, constraints (2-6 voices, bars 1-16), and return values. However, it does not mention whether existing notes are overwritten or appended, which is a potential side effect for a creation 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 appropriately sized for a complex tool. It is well-organized with sections for definition, contrast, context, parameters, return values, common patterns, and an example. Every sentence adds value, and the first sentence front-loads 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?
Despite 7 parameters and no annotations, the description covers purpose, parameter semantics, usage context, constraints, return values, and examples. The output schema further reduces the need to explain return structure, but the description also covers it. This is 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 coverage is 0%, but the description fully compensates by explaining every parameter: voices format with example, bars range, unit_index, track_index, start_beat, duration, and base_velocity with attenuation behavior. This goes beyond the schema's type/default info, making the tool usable without external knowledge.
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+resource statement: 'Create a cross-rhythm — multiple voices with independent period lengths creating shifting alignment.' It clearly defines what the tool does and explicitly contrasts it with polyrhythm, distinguishing it from sibling tools like mcp_opendaw_create_polyrhythm.
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 'Unlike polyrhythm...' and explains the difference, providing when-not guidance. It gives musical context (African cross-rhythms, Steve Reich, Talking Heads, minimalism) and common pattern examples, helping the agent decide when to use this tool instead of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_dembowA
Create a dembow rhythm — the foundational beat of reggaeton and Latin dancehall.
The dembow is a 3-3-2 syncopated pattern that drives virtually all reggaeton and Latin dancehall music. It derives from the "Dembow" riddim by Bobby Dixon (1990, Jamaica) and was popularized in Puerto Rico. The pattern creates a distinctive galloping feel through its uneven grouping of 3+3+2 within a 4/4 bar. Every reggaeton track from Daddy Yankee's "Gasolina" to Bad Bunny's "Tití Me Preguntó" is built on this rhythm.
dembow_type: "classic" — Classic reggaeton dembow. Kick on 1 and 3, snare on 3.5, 4.5, 5.5 (the 3-3-2 gallop). 1-bar cycle. "dancehall" — Dancehall variant. Sparser, kick on 1 and 3, snare on 3.5 and 4.5. Less gallop, more pulse. "trap_latino" — Latin trap variant. Kick on 1, 3.5, and 4.75 (syncopated), snare on 2.5 and 4.5. More modern, less rigid. "perreo" — Perreo (old-school reggaeton). Denser snare pattern with ghost hits on 2.75 and 6.75. Rougher, underground feel. "urbano" — Urbano latino (modern fusion). Kick on 1, 3, 4.75, snare on 3.5, 4.5, 5.5. Blends reggaeton with trap.
bars: Pattern length (1-16, 1 = one bar cycle). kick_pitch: MIDI pitch for kick (36 = C1, acoustic bass drum). snare_pitch: MIDI pitch for snare (40 = E1, electronic snare). velocity: Base velocity 0-1. Ghost hits -0.2, main hits +0.05.
Returns notes created, dembow type, and stroke breakdown.
Example: create_dembow(dembow_type="classic", track_index=0) create_dembow(dembow_type="trap_latino", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| dembow_type | No | classic | |
| snare_pitch | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explaining behavior. It discloses the pattern structure for each dembow variant, the velocity adjustments, and that the tool returns notes created, dembow type, and stroke breakdown. However, it does not mention potential side effects like whether existing notes on the target track are overwritten or how it interacts with the current 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 relatively long but well-organized with a clear opening, a musical background, enumerated variants, and parameter details. Each section earns its place, and the examples add practical value without excessive 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 the tool's complexity (8 parameters, no annotations), the description is quite complete: it defines dembow, lists variants with exact beat positions, explains pitch and velocity defaults, and provides examples. Missing details on start_beat and unit_index prevent a perfect score, but the overall context is sufficient for most use 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?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains dembow_type, velocity, bars, kick_pitch, and snare_pitch, and shows track_index in examples. However, start_beat and unit_index are left entirely undocumented, leaving a significant gap for two of the eight 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 tool's purpose: 'Create a dembow rhythm — the foundational beat of reggaeton and Latin dancehall.' It uses a specific verb and resource, and the detailed explanation of what a dembow is and its variants (classic, dancehall, trap_latino, etc.) distinguishes it from the many other rhythm-creation tools in the sibling list.
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 should be used when a dembow rhythm is needed, providing context on the pattern's musical role and examples of usage. However, it does not explicitly state when not to use it or contrast it with alternative tools like create_clave or create_boom_bap, so it stops short of a full usage guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_disco_arrangementA
Create a full disco arrangement — four-on-floor + octave bass + string sustains + wah guitar across 4 tracks.
Classic 70s disco with the signature groove — fundamentally different from house (its descendant):
Track 0: Drums — four-on-floor with 16th OPEN hats (not closed 8ths like house). Kick on every quarter, clap on 2 & 4. The 16th-note open hi-hat pattern is the disco signature — busier and more open than house's closed 8th hats. The groove that launched dance music.
Track 1: Bass — SYNCOPATED OCTAVE bass: the "good times" bass line. Root on beat 1, then syncopated octave jumps on the "and" of beats 2 and 4. Not off-beat 8ths like house, not arpeggiated like synthwave — it's a melodic bass line with octave leaps. The bass IS the hook in disco.
Track 2: Strings — sustained chord pads with octave doubling. Full bar sustain, lush and smooth. The orchestral element that separates disco from house — house uses stabs, disco uses sustained strings. Minor or major triad depending on chord.
Track 3: Guitar — wah-wah chops: 16th-note rhythmic scratching with accent pattern. Root + minor seventh voicing (funk-influenced). The "chukka-chukka" that drives the groove. Different from reggae skank (off-beat only) — disco guitar plays ALL 16ths with accents.
Uses I-vi-IV-V progression (G-Em-C-D in G major) — the classic disco four-chord loop. Different from house (minor vamp), pop (I-V-vi-IV), rock (I-IV-V). Disco's progression is major-key and optimistic — the "feel good" sound of the 70s.
At 120 BPM (default), this creates the classic disco groove — the tempo that defined the genre. The syncopated octave bass and 16th open hats are the fundamental differences from all 13 other arrangements: house has off-beat bass stabs with closed 8th hats, disco has melodic octave bass with 16th open hats.
bpm: Tempo (110-130, default 120 = classic disco). bars: Arrangement length (4-16, default 8). Must be multiple of 4. root: Root note (G is a classic disco key — G major). octave: MIDI octave for bass (2 = G2=43, standard disco bass register). unit_index: AU index with note tracks. drum_track / bass_track / string_track / guitar_track: Track indices.
Returns notes created per track and total.
Example: create_disco_arrangement(bpm=120, root="G", bars=8) create_disco_arrangement(bpm=115, root="C", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | G | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| guitar_track | No | ||
| string_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 for operational behavior. It describes the musical content in detail and says 'Returns notes created per track and total,' but it never discloses whether existing notes on the target tracks are overwritten or cleared, and it assumes a unit with note tracks exists without stating that prerequisite. For a mutating tool, this is a notable 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 long but well-organized: a one-sentence summary, then track-by-track breakdown, progression, tempo, parameter list, return note, and examples. The detail helps distinguish it from the many sibling genre arrangements, but some of the genre-history comparisons could be trimmed without losing needed guidance.
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 (4 tracks, 11 parameters, genre-specific behavior), the description is quite complete: it specifies musical content, progression, rhythms, parameter constraints, and the return value. It is missing only operational behavior around overwriting and prerequisites, which prevents a perfect score.
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 does so well: bpm range and default, bars must be multiple of 4, root note context, octave meaning, unit_index, and all four track indices are explained with musical rationale plus example calls. However, velocity and start_beat are not mentioned, so coverage is not total.
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: 'Create a full disco arrangement' and details exactly what it produces across four tracks. It strongly distinguishes itself from siblings by repeatedly contrasting disco with house and other genres ('fundamentally different from house', 'the fundamental differences from all 13 other arrangements').
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 it clear this is the disco tool through genre comparisons and names the track roles, but it never explicitly states 'use this when you want a disco arrangement' or lists when not to use it. Context is clear, yet no formal exclusions or alternative tool names are given, 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.
mcp_opendaw_create_djembe_ensembleA
Create a West African djembe/dunun ensemble — cyclical ostinato with call-and-response.
West African drumming (Mali, Guinea, Senegal) is built on layered cyclical patterns. Three bass drums (dununs) play interlocking ostinato patterns that define the rhythmic foundation. The kenkeni (highest) plays the fastest cycle, the sangban (middle) plays the core pulse, and the dundunba (lowest) plays the slow anchor. A bell (kenken) plays the timeline — the reference pattern all drummers orient to. Two djembes play lead and accompaniment parts: djembe 1 improvises calls and echauffements (heating-up sections), djembe 2 plays a fixed accompaniment (accompagnement) that interlocks with the dununs.
Unlike samba (parade ensemble) or songo (drum kit), West African drumming is cyclical: the accompaniment loops indefinitely while the lead djembe improvises on top. The structure is call-and-response: the lead plays a signal (appel) and the ensemble responds, then the groove continues.
styles (traditional rhythms): "danza" — Malian welcoming rhythm. Kenkeni steady 8ths, sangban pulse on 1+3, dundunba on 2+4. Bell timeline E(3,2,3). Djembe 2 accompagnement: slap-tone-slap-bass. "kuku" — Guinean celebration rhythm. Kenkeni offbeat pattern, sangban syncopated, dundunba sparse. Bell E(7,12). Djembe 2: rolling 16th tone-slaps. "djole" — Sierra Leonean rhythm (originally on sikko drums). Kenkeni 16ths, sangban 3-3-2, dundunba on 1. Bell E(3,2,3). Djembe 2: spaced bass-slap pattern. "doundounba" — The "dance of the strong men" (Guinea). Sangban drives with a dense 16th pattern, dundunba on downbeats, kenkeni sparse. Bell E(3,2,3). Aggressive djembe 2.
bars: Pattern length (4-16, even). style: Rhythm name (danza, kuku, djole, doundounba). velocity: Base velocity (0-1). kenkeni_pitch: Kenkeni (high dunun) MIDI pitch (35 = B0). sangban_pitch: Sangban (mid dunun) MIDI pitch (36 = C1). dundunba_pitch: Dundunba (low dunun) MIDI pitch (38 = D1). djembe1_pitch: Lead djembe MIDI pitch (42 = F#1). djembe2_pitch: Accompaniment djembe MIDI pitch (46 = A#1). bell_pitch: Bell (kenken) timeline MIDI pitch (50 = D2).
Args: bars: Pattern length in bars (4-16, even). style: Rhythm style (danza, kuku, djole, doundounba). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. kenkeni_pitch: Kenkeni MIDI pitch. sangban_pitch: Sangban MIDI pitch. dundunba_pitch: Dundunba MIDI pitch. djembe1_pitch: Lead djembe MIDI pitch. djembe2_pitch: Accompaniment djembe MIDI pitch. bell_pitch: Bell timeline MIDI pitch.
Returns notes created, instrument breakdown, and rhythm info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | danza | |
| velocity | No | ||
| bell_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| djembe1_pitch | No | ||
| djembe2_pitch | No | ||
| kenkeni_pitch | No | ||
| sangban_pitch | No | ||
| dundunba_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains the musical behavior (layering, instruments, pattern structures, returns notes/breakdown/rhythm info), which is valuable. However, it does not disclose important operational effects such as whether existing notes on the target track are cleared, whether it appends to or replaces content, or what unit_index/track_index concretely control beyond 'AU index' and 'Note track index'.
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 long but well-structured: purpose, genre context, style details, then explicit Args list. It is front-loaded with the core purpose. Some repetition exists (e.g., kenkeni is described twice), and the cultural context, while useful, could be trimmed. Overall it is dense and organized, though not maximally 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?
This is a complex tool with 12 parameters, no annotations, and a declared output schema that isn't shown. The description covers the musical domain richly and explains the return value generally. However, it leaves out crucial operational context: does it create a new track or use the supplied track_index? Does it replace existing notes? How does start_beat interact with the cyclical patterns? Without this, the agent cannot predict the full result of 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?
Schema description coverage is 0%, so the description must fully compensate for 12 parameters. It does: each parameter is described in the Args section, pitch parameters include MIDI note numbers and note names, style parameters are explained in detail with rhythmic descriptions, and even unit_index/track_index receive minimal but functional definitions. This is strong compensation for a schema void.
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 begins with a clear, specific verb phrase: 'Create a West African djembe/dunun ensemble — cyclical ostinato with call-and-response.' It immediately identifies the resource (djembe/dunun ensemble) and the musical style, and it distinguishes this tool from related siblings like samba or songo by explicitly contrasting the cyclical, call-and-response structure.
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 when to use this tool by contrasting it with samba and songo ('Unlike samba (parade ensemble) or songo (drum kit), West African drumming is cyclical...'). It also enumerates four traditional styles with their musical characteristics, giving the agent clear criteria for choosing style values. This is explicit 'when to use vs alternatives' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_dnb_arrangementA
Create a full drum & bass arrangement — drums + bass + pad across 3 tracks in one call.
This is the first multi-track genre arrangement tool. Instead of creating individual patterns, it generates a complete DnB section with all elements locked together:
Track 0: Drums — chopped Amen-style breakbeat with kick, snare, hats, ghost notes
Track 1: Bass — Reese-style bassline with sustained notes and syncopated stabs
Track 2: Pad — sustained minor chord pad that creates harmonic foundation
The arrangement is tempo-aware: at 174 BPM (default), the patterns are optimized for the classic 170-180 DnB feel. The bass and drums lock rhythmically — bass sustains when drums break, stabs when drums roll.
bpm: Tempo (160-185, default 174 = classic DnB). bars: Arrangement length (4-32, default 8 = typical section). root: Root note for bass and pad. octave: MIDI octave for bass (2 = C2=36). unit_index: AU index with note tracks. drum_track: Track index for drums. bass_track: Track index for bass. pad_track: Track index for pad. velocity: Base velocity 0-1.
Returns notes created per track and total.
Example: create_dnb_arrangement(bpm=174, root="A", bars=8) create_dnb_arrangement(bpm=170, root="F#", bars=16, drum_track=2, bass_track=3, pad_track=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | A | |
| octave | No | ||
| velocity | No | ||
| pad_track | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key behavioral traits: it creates three tracks, is tempo-aware (optimized for 170-180 BPM), locks bass and drums rhythmically, and returns 'notes created per track and total.' It lacks explicit warnings about overwriting existing notes or requiring specific track setups, but overall it gives a solid picture of what happens.
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 well-structured and appropriately sized. It opens with the main purpose, uses bullet points for track details, then lists parameters concisely, and ends with practical examples. Every section earns its place without excessive 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?
This is a complex tool with 10 parameters and multiple musical elements. The description covers its purpose, behavior, parameter semantics, and examples. It mentions the return value and has an output schema, so detailed return structure isn't needed. The only minor gaps are the undocumented 'start_beat' parameter and some ambiguity about 'AU index', but overall it is sufficiently complete for an agent to 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 schema has no parameter descriptions (0% coverage), so the description must compensate. It provides meaningful explanations for 9 of 10 parameters, including ranges and defaults (e.g., 'bpm: Tempo (160-185, default 174 = classic DnB)'). It omits 'start_beat', which is a small gap, but overall it adds significant context beyond the schema's titles.
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 exactly what the tool does: 'Create a full drum & bass arrangement — drums + bass + pad across 3 tracks in one call.' It identifies the specific genre (DnB) and differentiates it from other genre arrangement tools by detailing the three-track structure (drums, bass, pad) and the musical content of each.
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 this tool: when you need a complete multi-track DnB section rather than individual patterns. It says 'Instead of creating individual patterns, it generates a complete DnB section.' However, it does not explicitly name alternative tools or provide exclusion criteria, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_downtempo_arrangementB
Create a downtempo/trip-hop arrangement — 85 BPM Bristol sound.
Downtempo/trip-hop emerged from Bristol, UK (early 1990s) — a fusion of hip-hop breaks, dub bass, atmospheric samples, and melancholic vocals. Key characteristics:
80-90 BPM, laid-back, heavy groove
Boom-bap drums with swing, vinyl crackle aesthetic
Deep, melodic sub-bass with long notes
Minor key, dark/jazzy harmony (m7, m9, half-diminished)
Atmospheric pads, Rhodes piano, sparse melodies
Sample-based, cinematic, nocturnal mood
Creates 5 tracks:
Drums (track_index): Boom-bap pattern — kick on 1 & 3, snare on 2 & 4, swung hats, ghost notes, occasional fills
Bass (track_index+1): Deep sub-bass with long sustained notes, melodic movement, octave drops
Chords (track_index+2): Minor 7th/9th Rhodes-style chords, sparse, on beat 1 of every 2 bars
Melody (track_index+3): Sparse, melancholic minor key melody with wide intervals and long rests
Atmosphere (track_index+4): Sustained pad notes, root and fifth, very low velocity, cinematic texture
Default key: D minor (classic trip-hop key — Portishead, Massive Attack).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | D | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It transparently details the 5 tracks created and their musical patterns, plus defaults for BPM and key. However, it doesn't state whether the tool mutates the existing project, overwrites tracks, requires prior setup, or how it interacts with existing content. It also omits behavior around parameters like start_beat and unit_index, leaving gaps in the side-effect 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 front-loaded with a clear purpose statement, but it then spends several lines on the historical origins of trip-hop in Bristol and a genre characteristics list that, while musically informative, is not essential for invoking the tool. Overall, it is longer than necessary but well-structured with paragraphs and track enumeration.
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 presence of an output schema reduces the need to explain return values. The description provides a rich musical brief (tracks, patterns, key, BPM) and clearly summarizes the creative result. However, critical operational details are missing: parameter semantics for several parameters, explicit use cases, and non-destructive behavior. The tool is complex enough that these gaps make the description only partially complete for an agent to select and invoke it 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%, so the description must compensate for parameter explanation. It explicitly mentions bpm and key_root (defaults) and uses track_index to define track numbering, but provides no explanation for bars, velocity, start_beat, or unit_index. This leaves 4 of 7 parameters entirely undocumented, which is insufficient for a tool with zero 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 opening sentence, 'Create a downtempo/trip-hop arrangement — 85 BPM Bristol sound,' uses a specific verb and resource, immediately identifying the tool's function. It clearly distinguishes this from sibling genre-arrangement tools (e.g., create_afrobeat_arrangement, create_lofi_arrangement) by naming the genre and key characteristics.
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 use for downtempo/trip-hop creation through detailed genre characteristics and track breakdown, but it never explicitly states when to use this tool over alternatives, nor does it offer exclusions or refer to other tools. No when-to-use guidance is provided beyond the genre itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_drum_fillA
Create a drum fill or transition pattern — one call replaces 10-30 note creations.
Generates rhythmic fills between song sections with increasing/decreasing density. Useful for transitions: verse→chorus, breakdown→drop, outro buildup.
fill_type: Type of fill:
"build" — density increases toward end (leading into a drop/chorus)
"break" — density decreases (winding down after a section)
"roll" — sustained snare/tom roll with accents
"crash" — crash + sparse hits for impact
"tom" — descending tom pattern
bars: Length in bars (1-4). Each bar = 4 beats = 16 sixteenth steps. start_beat: Position in beats where the fill begins. density: Note density — "sparse", "medium", "dense".
unit_index: AU index with a note track (-1 = find first AU with note tracks).
Returns notes created per lane and total.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| density | No | medium | |
| fill_type | No | build | |
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the operation (creates notes), the return value ('Returns notes created per lane and total'), and the unit_index prerequisite. However, it does not mention potential side effects, whether any existing notes are overwritten, what happens if no AU with a note track exists, or any error conditions. The description is informative but not fully transparent about behavioral traits.
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 well-structured: it opens with the high-level purpose, then usage guidance, then a clear parameter reference with bullet points. It is longer than the minimal examples but every sentence earns its place by explaining a parameter or use case. It is not overly verbose, though the parameter details could be considered slightly lengthy — still, they are all relevant.
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 moderate complexity (5 params, no enums in schema, but detailed explanatory descriptions), the description covers all necessary aspects: what it does, when to use it, parameter semantics, and return value. It does not explain prerequisites like needing an existing drum track or what happens if no matching AU is found, but it is largely complete for an agent to select and invoke 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?
Schema description coverage is 0%, so the description must compensate, and it does excellently. Every parameter is explained: fill_type has all five enumerated values with definitions, bars has a range and time interpretation, start_beat is defined, density lists its options, and unit_index is clarified with the -1 fallback. This adds substantial 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?
The description clearly states it 'Create a drum fill or transition pattern' and elaborates that it 'Generates rhythmic fills between song sections with increasing/decreasing density.' This is a specific verb+resource with a clear scope. However, it doesn't explicitly name or contrast with sibling tools like create_drum_pattern or create_break, so it doesn't fully distinguish itself from 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 provides explicit usage context: 'Useful for transitions: verse→chorus, breakdown→drop, outro buildup.' This tells the agent when to use it. It also mentions the efficiency benefit ('one call replaces 10-30 note creations'), giving a rationale. It does not mention when not to use it or name alternatives, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_drum_patternA
Create a drum beat from compact step-sequencer notation — one call replaces 10-20 note creations.
pattern: JSON object with drum lanes, each lane is a string where each char is a 16th-note step:
'x' = hit (velocity 0.9)
'o' = soft hit (velocity 0.5)
'.' = rest
'X' = accent (velocity 1.0)
Lanes: kick, snare, hihat, clap, perc (each optional).
Example (4/4 house beat): '{"kick":"x...x...x...x...","snare":"....x.......x...","hihat":"....o...o...o..."}'
unit_index: AU index with a note track (-1 = find first AU with note tracks).
Returns the number of notes created per lane.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It explains velocities, unit_index default behavior, and the return value. However, it does not state whether existing notes on the target unit are overwritten or deleted, nor does it describe error handling for invalid patterns or missing units. Some behavioral transparency is present, but key side effects are omitted.
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 a clear one-line purpose, followed by a structured breakdown of the pattern format, lanes, example, and parameter explanation. Each section contributes value; the example is somewhat long but enhances understanding. Well-organized and concise 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?
For a two-parameter tool with a complex input format, the description provides enough to construct a valid call: complete pattern syntax, target unit selection, and return value. It does not cover edge cases or failure modes, but the core usage is fully addressed given the output schema exists and the description mentions the return value.
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, and the description fully compensates. It defines the pattern JSON format in detail, including allowed step characters, velocity values, lane names, and provides an example. It also explains unit_index semantics with its -1 default. No ambiguity remains for either 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 opens with a specific verb and resource: 'Create a drum beat from compact step-sequencer notation.' It further distinguishes itself by noting 'one call replaces 10-20 note creations,' making it clear this tool is for efficient drum pattern creation rather than individual note placement or other rhythmic 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 explains how to use the tool with pattern syntax and unit_index, and includes an example, but it does not explicitly state when to prefer this tool over alternatives like create_drum_fill or create_euclidean_rhythm. Usage context is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_drum_soloA
Create a genre-specific drum solo with rudimental vocabulary.
Generates a complete drum solo using vocabulary appropriate to the chosen style. Unlike create_drum_fill (short transition), this tool creates a full multi-bar solo with phrasing, build-ups, climax, and genre-specific rudimental patterns:
rock: Thunderous 16th-note double kick patterns, crash accents, tom fills, snare ghost notes, building intensity. John Bonham, Neil Peart, Danny Carey.
jazz: Brushes + sticks, comping patterns, ride bell, press rolls, polyrhythmic phrasing, trading 4s feel. Max Roach, Elvin Jones, Tony Williams.
funk: Ghost-note heavy 16th-note grooves, hi-hat splashes, pocket fills, James Brown/Bootsy aesthetic. Clyde Stubblefield, Jabo Starks, Bernard Purdie.
latin: Cascara, mambo bell, timbale fills, clave-based phrasing, 6/8 feel options. Tito Puente, Mongo Santamaria.
marching: Rudimental solo — paradiddles, flams, drags, roll building, double-stroke open rolls. DCI, snare line vocabulary.
solo_type: rock | jazz | funk | latin | marching bars: Solo length (2-16, default 4) velocity: Base velocity 0-1 (drum solos are loud, default 0.9) seed: PRNG seed for reproducibility
Returns notes created and solo characteristics.
Example: create_drum_solo(solo_type="rock", bars=4) create_drum_solo(solo_type="jazz", bars=8) create_drum_solo(solo_type="marching", bars=4, seed=100)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| seed | No | ||
| velocity | No | ||
| solo_type | No | rock | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the tool generates a structured solo with 'phrasing, build-ups, climax' and genre-specific patterns, and notes return values. However, it does not clarify whether the solo is inserted, appended, or overwrites existing notes, nor does it mention side effects on the current project state or which track/unit is targeted.
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 long but well-structured: a concise lead, an explicit contrast with create_drum_fill, a detailed genre breakdown with clear formatting, and concrete usage examples. The genre details are contextually valuable and not redundant. It could be slightly tightened, but the length is justified by the tool's genre-dependent complexity.
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 concept, genre vocabulary, key parameters, and return value, with examples. However, the omission of three placement-related parameters (start_beat, unit_index, track_index) and the lack of detail about insertion behavior mean it is not fully complete for a 7-parameter tool with no annotations. The presence of an output schema mitigates the return-value gap, but side effects remain undisclosed.
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 valuable semantic detail for solo_type (lists all five genres with style descriptions), bars (range 2-16), velocity (range 0-1 with loudness note), and seed (PRNG reproducibility). However, it completely omits start_beat, unit_index, and track_index, which are likely essential for placement in the DAW project.
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+resource: 'Create a genre-specific drum solo with rudimental vocabulary.' It explicitly contrasts itself with create_drum_fill ('short transition') and clearly states it creates a full multi-bar solo. This unambiguously differentiates the tool from similar 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 explicitly names an alternative: 'Unlike create_drum_fill (short transition), this tool creates a full multi-bar solo.' This provides clear when-to-use guidance. However, other solo-related siblings like create_solo and create_soli are not addressed, so it is not a comprehensive exclusion list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_dubstep_arrangementA
Create a full dubstep arrangement — half-time drums + wobble bass + lead arp across 3 tracks.
Dubstep with all elements locked in half-time feel:
Track 0: Drums — half-time at 140 BPM (feels like 70): kick on 1, snare on 3, with percussive fills and ghost notes. The signature dubstep swing.
Track 1: Bass — wobble bass: sustained sub notes with rhythmic pitch shifts between root and octave/fifth, creating the "wub-wub" that defines the genre. Cutoff-sweep style pitch modulation via note offsets.
Track 2: Lead — minor arpeggio that runs through the arrangement, atmospheric and dark, complementing the wobble bass.
At 140 BPM (default), half-time means the groove feels at 70 BPM — kick on beat 1, snare on beat 3 of each bar. This is the fundamental difference from all other electronic arrangements: the half-time feel creates the heavy, swinging groove.
bpm: Tempo (135-150, default 140 = classic dubstep). bars: Arrangement length (4-16, default 8). root: Root note (G is a classic dubstep key). octave: MIDI octave for wobble bass (1 = C1=24, sub-bass territory). unit_index: AU index with note tracks. drum_track / bass_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_dubstep_arrangement(bpm=140, root="G", bars=8) create_dubstep_arrangement(bpm=145, root="F", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | G | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It does state the output ('Returns notes created per track and total') and notes that 'unit_index' should be an AU with note tracks, but it does not disclose whether the tool overwrites existing notes, creates tracks, requires specific project setup, or has other side effects. This is a significant 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?
The description is structured with a clear summary, track-specific details, a half-time explanation, parameter list, and examples. It is somewhat long but front-loaded and each section adds value; the half-time explanation is slightly redundant.
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 10 parameters, no annotations, and 0% schema coverage, the description covers most parameters, provides default values, and includes example calls. It still lacks descriptions for velocity and start_beat and omits side-effect behavior, but overall it is sufficiently informative for basic 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%, but the description compensates by explaining bpm, bars, root, octave, unit_index, and the three track parameters, including defaults and ranges. However, velocity and start_beat are not described, leaving two parameters unresolved.
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 opening sentence clearly states the tool creates a full dubstep arrangement with half-time drums, wobble bass, and lead arp across 3 tracks. This is a specific verb+resource and distinguishes it from sibling genre tools by naming dubstep-specific elements.
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 use for dubstep tracks at 140 BPM and highlights the half-time feel as 'the fundamental difference from all other electronic arrangements.' However, it doesn't explicitly state when to choose this over other genre arrangement tools or provide clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_edm_arrangementA
Create a full EDM arrangement — festival/mainstage 4-on-floor + supersaw + pluck + lead.
Electronic Dance Music — festival/mainstage sound:
Track 0: Drums — 4-on-the-floor kick (every beat), claps on 2+4, open hats on offbeats, 16th closed hats for energy. Riser/snare buildup at end of 8-bar phrases.
Track 1: Bass — offbeat bass (root on the "and" of each beat). Sub-bass frequency, driving, syncopated.
Track 2: Supersaw synth — wide chord stabs on beats 1 and 3. Root position triads with spread voicings. The "wall of sound" — mainstage synth.
Track 3: Lead synth — melody using scale degrees. Arpeggiated pattern with rhythmic repetition. The "hook".
F minor default — the most common EDM key (nice for both male and female vocals, sits well in club systems). 128 BPM (house/EDM standard). vi-IV-I-V progression (Fm-Db-Ab-Eb) — the "pop punk" progression that drives most festival anthems.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| synth_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explain what will be created in detail (track patterns, synth types, musical defaults). However, it does not disclose side effects such as whether existing tracks are overwritten, whether new tracks are created, or whether the operation is reversible. This is a create action, so some risk disclosure 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 well-structured with a short opening, bulleted track breakdown, and a closing paragraph on key/BPM/progression. Every sentence conveys relevant musical detail, and the length is justified by the complexity of an 11-parameter arrangement 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 output schema covers return values, and the description provides a rich picture of the musical arrangement. Still, the description lacks explicit usage boundaries and some parameter semantics, making it not fully complete for an agent that needs to decide when and how to invoke this tool among many similar genre-arrangement 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 description adds meaning to several parameters by mapping track numbers to instrument roles (Track 0 = drums, Track 1 = bass, Track 2 = synth, Track 3 = lead) and by explaining defaults like F minor and 128 BPM. However, with 0% schema description coverage, it leaves parameters like velocity, octave, bars, start_beat, and unit_index unexplained, so compensation is only partial.
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: "Create a full EDM arrangement". It further distinguishes this tool from its many genre siblings by detailing the festival/mainstage style and listing exact track roles (drums, bass, supersaw, lead).
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 implies use for EDM/festival/mainstage tracks and explains the default key, BPM, and progression, but it never explicitly says when to prefer this over sibling tools like create_house_arrangement or create_trance_arrangement. No exclusions or alternative tool mentions are provided, so usage guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_electronic_bassA
Create an electronic bassline pattern — genre-specific bass for dance music.
Electronic basslines are fundamentally different from melodic basslines: they're rhythmic engines that lock with the kick drum. Each genre has a characteristic bass technique that defines its sound.
bass_type: "house_offbeat" — House off-beat bass: sustained notes on the "&" of each beat (between kicks). The classic house bass that creates the "untz-untz-untz" feel. Frankie Knuckles / Detroit house. "techno_sub" — Techno sub-bass: one long sustained root per bar, minimal. Pure low-end energy. Berlin techno / Marcel Dettmann. "dnb_reese" — DnB Reese bass: sustained note on beat 1, then syncopated stabs on the "e" and "a" of beats 2-4. Dark, detuned. Noisia. "dubstep_wobble" — Dubstep wobble: quarters on 1+3, wub pattern on 2+4 with repeated 16ths and fifth movement. Skrillex / Excision. "acid_303" — Acid 303: fast 16ths alternating root/octave with fifth drops. TB-303 squelch. Phuture / Hardfloor. "garage_2step" — UK garage 2-step bass: notes on 1 and 2.66, ghost on 3.5. Bouncy, syncopated. MJ Cole / Disclosure.
bars: Pattern length (1-16). root: Root note name (C, C#, D, etc. or flats Db, Eb). octave: MIDI octave (2 = C2=36). velocity: Base velocity 0-1.
Returns notes created, bass type, and pitch info.
Example: create_electronic_bass(bass_type="house_offbeat", root="C", track_index=0) create_electronic_bass(bass_type="dnb_reese", root="A", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_type | No | house_offbeat | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 richly details the rhythmic patterns for each genre (e.g., 'sustained notes on the "&" of each beat'), providing transparency about the output musical behavior. However, it doesn't disclose whether it creates a new note region, overwrites existing notes, or requires an existing track, and it leaves track_index/unit_index semantics unexplained.
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 well-structured and appropriately sized for a complex tool. It starts with a concise purpose, then uses a compact bullet-style list for the six bass_type options, a brief parameter list, return info, and examples. Every line adds value, and the length is justified by the need to explain genre-specific patterns.
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 8 parameters and no schema descriptions, and the description covers the musical core but leaves three technical parameters (start_beat, unit_index, track_index) undefined. This is a significant gap for correct invocation, though the presence of an output schema may partially cover return-value expectations.
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 explains bass_type (with six detailed options), bars, root, octave, and velocity, but omits start_beat, unit_index, and track_index. The examples use track_index without defining it, which could confuse an agent trying to invoke the tool 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 'Create an electronic bassline pattern — genre-specific bass for dance music,' specifying the verb, resource, and scope. It distinguishes this from melodic basslines by emphasizing rhythmic engine characteristics, and the genre-specific options (house, techno, dnb, dubstep, acid, garage) clearly separate it from sibling tools like create_bassline or create_walking_bass.
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 this tool: for electronic/dance music basslines that lock with the kick drum, contrasting them with melodic basslines. It implicitly guides the agent to use this for genre-specific rhythmic patterns, though it doesn't explicitly name alternative tools 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.
mcp_opendaw_create_euclidean_rhythmA
Create a Euclidean rhythm — distributes k onsets across n steps as evenly as possible.
The Euclidean algorithm (BJK algorithm) generates most of the world's classic rhythms: E(3,8) = tresillo (Cuban, Arabic, 3-3-2) E(5,8) = cinquillo (Cuban) E(7,16) = samba, rumba E(7,12) = bembé (West African) E(2,5) = tresillo variant E(4,9) = Aksak (Balkan) E(3,7) = Persian/Arabic
onsets: Number of hits (k). 1-32. steps: Total number of steps (n). 2-64. Must be >= onsets. rotation: Rotate the pattern clockwise by N steps. 0 = no rotation. bars: Number of bars to repeat. Each step = one (4/steps)th of a bar. pitch: MIDI pitch for all hits. velocity: Velocity 0-1. Accents (first onset of each group) get +0.15. duration: Note duration in beats.
Returns notes created, pattern as binary string (1=hit, 0=rest), and Euclidean notation E(k,n).
Example: create_euclidean_rhythm(onsets=3, steps=8, track_index=0) # tresillo create_euclidean_rhythm(onsets=7, steps=16, pitch=38, track_index=1) # samba
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| pitch | No | ||
| steps | No | ||
| onsets | No | ||
| duration | No | ||
| rotation | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses key behaviors: it creates notes, returns a binary pattern and Euclidean notation, and applies velocity accents (+0.15 to first onsets). However, it does not explicitly mention potential side effects like whether it replaces existing notes or appends to a track, nor does it address permissions or reversibility.
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 well-structured and front-loaded with the core purpose, followed by useful musical examples, a clear parameter list, return values, and concrete usage examples. Every section earns its place and there is no 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 10-parameter tool with no annotations and an output schema, the description provides substantial context: algorithm explanation, typical patterns, parameter details, return information, and examples. The main gap is the three undocumented parameters (start_beat, unit_index, track_index), which are likely important for target placement.
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?
With 0% schema description coverage, this description compensates well by explaining onsets, steps, rotation, bars, pitch, velocity, duration, including ranges and constraints (e.g., 'steps must be >= onsets'). It misses start_beat, unit_index, and track_index, which are only shown in the schema, so it is not fully comprehensive.
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 clear, specific statement: 'Create a Euclidean rhythm — distributes k onsets across n steps as evenly as possible.' It also explains the algorithm and lists classic rhythms (E(3,8)=tresillo, E(7,16)=samba), which clearly differentiates it from sibling tools like create_drum_pattern or create_clave.
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 rich context about Euclidean rhythms and their musical uses, implying when to use this tool (e.g., for tresillo, samba, or bembé patterns). However, it does not explicitly state when not to use it or name alternatives among the many sibling tools, 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.
mcp_opendaw_create_filter_sweepA
Create a filter sweep on a Vaporisateur instrument's cutoff parameter with smart defaults.
The most common transition technique in EDM/techno/house. Sweeps the filter cutoff from closed to open (build-up) or open to closed (breakdown). Optionally boosts resonance during the sweep for that classic "talking filter" effect. Uses exponential curve by default (matches how human hearing perceives frequency changes).
unit_index: AU index with a Vaporisateur instrument. direction: "open" (low→high, build-up) or "close" (high→low, breakdown). start_beat: Start position in beats. duration_beats: Sweep length in beats (default 8 = 2 bars). start_cutoff: Starting cutoff value 0.0-1.0 (default: 0.05 for open, 0.85 for close). end_cutoff: Ending cutoff value 0.0-1.0 (default: 0.9 for open, 0.05 for close). resonance: Fixed resonance value 0.0-1.0 during sweep. Default: current value unchanged. resonance_boost: If True, automates resonance from current to +0.3 at sweep midpoint, then back down — classic filter sweep "whistle" effect. curve: "exp" (exponential, default — natural for filters), "linear", "log". steps: Number of automation points (default 32 = smooth).
Returns events created, sweep config, and a preview of the curve.
Examples: create_filter_sweep(unit_index=0, direction="open", duration_beats=16) → 16-bar filter open from 0.05 to 0.9, exp curve, resonance boost at midpoint create_filter_sweep(unit_index=2, direction="close", duration_beats=4, resonance_boost=False) → Quick 4-beat filter close, no resonance boost
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | exp | |
| steps | No | ||
| direction | No | open | |
| resonance | No | ||
| end_cutoff | No | ||
| start_beat | No | ||
| unit_index | Yes | ||
| start_cutoff | No | ||
| duration_beats | No | ||
| resonance_boost | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 smart defaults, direction-specific cutoff values, resonance boost behavior ('from current to +0.3 at sweep midpoint, then back down'), and return values ('events created, sweep config, and a preview of the curve'). It does not mention error cases or undo behavior, but covers the key behavioral 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 logically structured: purpose, context, parameter list, return value, and two examples. Every sentence adds useful information, and the parameter list is formatted for easy scanning. 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 10-parameter complexity and lack of annotations, the description is remarkably complete. It covers all parameters, defaults, behavior, return values, and provides concrete examples. The presence of an output schema is noted, but the description already covers the expected return without needing to rely on 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?
Schema coverage is 0%, yet the description explains every parameter in detail, including ranges, defaults, direction-dependent defaults (e.g., start_cutoff default 0.05 for open, 0.85 for close), and curve options. This exceeds mere schema titles and is essential for correct invocation.
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 opens with a specific verb+resource: 'Create a filter sweep on a Vaporisateur instrument's cutoff parameter with smart defaults.' It further clarifies the sweeping direction ('closed to open (build-up) or open to closed (breakdown)'), making it distinct from sibling tools like generic automation_sweep or create_riser.
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?
Strong usage context is provided: 'The most common transition technique in EDM/techno/house' and clear direction semantics. However, it does not explicitly name alternative tools or state when not to use this tool versus a generic automation sweep.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_flamenco_compasA
Create a Flamenco compás — the cyclical rhythmic foundation of Flamenco.
Flamenco compás is the rhythmic cycle that defines each palo (form). Unlike Western meter (uniform bars), Flamenco uses a 12-beat cycle with accents on specific beats (typically 3, 6, 8, 10, 12). The accents create the characteristic Flamenco feel — a tension between the expected downbeat and where the accents actually fall.
The compás is marked by three layers:
PALMAS SECAS — Sharp, dry handclaps on accented beats. The "skeleton" of the compás. Loud, precise.
PALMAS SORDAS — Muffled handclaps on unaccented beats. The "flesh" — fills the gaps between secas. Softer, cupped hands.
CAJÓN — Peruvian box drum adapted to Flamenco. Plays the bass pulse, usually on beats 1 and the main accents. Resonant, deep.
GOLPE — Table tap / footwork accent. Sharp percussive hits for dramatic moments, often at the end of a compás cycle.
palos (forms): "bulerias" — 12 beats, accents on 12, 3, 6, 8, 10. Fast, festive. The most modern and popular palo. Starts on 12. "solea" — 12 beats, accents on 3, 6, 8, 10, 12. Slow, solemn. The "mother of Flamenco". Deep, expressive. "alegrias" — 12 beats, accents on 3, 6, 12 (lighter), 8, 10. Joyful. From Cádiz. Mid-fast tempo. "siguiriyas" — 12 beats, accents on 3, 6, 8, 11 (asymmetric grouping 3+2+3+2+2). Slow, tragic. The most jondo (deep) palo. "tangos" — 4 beats, accents on 1, 3. Simple 4/4 feel, the most accessible palo. Rhythmic, earthy. "rumba" — 4 beats, accents on 1, 2.5, 3 (syncopated). The most accessible Flamenco-pop form. Gypsy Kings style.
Args: palo: Flamenco form (bulerias, solea, alegrias, seguiriyas, tangos, rumba). cycles: Number of compás cycles (1-16). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. palmas_secas_pitch: Palmas secas (sharp clap) MIDI pitch (39 = D#1). palmas_sordas_pitch: Palmas sordas (muffled clap) MIDI pitch (42 = F#1). cajon_pitch: Cajón (box drum) MIDI pitch (36 = C1). golpe_pitch: Golpe (tap) MIDI pitch (50 = D2).
Returns notes created, instrument breakdown, accent positions, and palo info.
| Name | Required | Description | Default |
|---|---|---|---|
| palo | No | bulerias | |
| cycles | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| cajon_pitch | No | ||
| golpe_pitch | No | ||
| track_index | No | ||
| palmas_secas_pitch | No | ||
| palmas_sordas_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains the three rhythmic layers (palmas secas, palmas sordas, cajón/golpe), the palo-specific accent patterns, and the return payload ('notes created, instrument breakdown, accent positions, and palo info'). However, it does not disclose operational details such as whether the tool appends to existing notes, requires an existing note track, or has any side effects beyond creating notes.
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 long but meticulously structured: purpose, conceptual background, layered instrument roles, palo encyclopedia, and an annotated parameter list. The opening sentence front-loads the purpose, and every subsequent section adds decision-relevant information. There is no 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?
For a tool with 10 parameters, zero annotations, and a specialized cultural domain, the description is impressively complete: it explains the musical theory, enumerates palos with accents and moods, maps each pitch parameter to an instrument, and previews the return value. The only gap is operational prerequisites (e.g., whether track_index must point to an existing note track) and explicit guarantees about non-destructive behavior.
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 0% description coverage, but the description compensates completely: it explains each parameter's musical role, provides ranges (cycles 1-16, velocity 0-1), and translates MIDI pitch numbers into instrument names and notes (39 = D#1). The palo descriptions give meaningful guidance for selecting a palo based on tempo, mood, and accent structure.
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 'Create a Flamenco compás' — a specific verb and resource. It further defines compás as the cyclical rhythmic foundation of Flamenco, making the tool's function unmistakable. It clearly distinguishes itself from sibling pattern-generation tools like create_clave or create_tala by focusing on Flamenco-specific palos.
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 on when to use this tool by contrasting Flamenco compás with Western meter and by explaining the distinct rhythmic feels of six palos. This helps the agent choose the right palo for the desired musical mood. However, it does not explicitly mention when not to use this tool or name alternative tools for non-Flamenco rhythms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_four_on_floorB
Create a four-on-the-floor pattern — the foundational beat of house, techno, and disco.
Four-on-the-floor: kick drum on every quarter note (beats 1, 2, 3, 4). This is the pulse that defined dance music from disco (1970s) through Chicago house (1980s) to Berlin techno and beyond. The variation comes from what happens BETWEEN the kicks: off-beat hi-hats, claps on 2+4, percussion, and swing.
floor_type: "classic_house" — Chicago/Detroit house: kick on every quarter, open hat on off-beats (the "&" of each beat), clap on 2 and 4. The Frankie Knuckles / Roland TR-909 sound. 1-bar cycle. "deep_house" — Deep house: kick on quarters, shuffled hats, rimshot on 2/4, sparse percussion on the "e" and "a". Soulful swing. Larry Heard / Kerri Chandler style. "techno" — Detroit/Berlin techno: relentless kick on quarters, 16th hats, industrial clap on 2+4, metallic percussion on off-beats. Driving, minimal. Jeff Mills / Surgeson. "disco" — 70s disco: kick on quarters, open hat on off-beats, tambourine 16ths, conga fills. Giorgio Moroder / Donna Summer "I Feel Love" feel. "tech_house" — Tech house fusion: kick on quarters, swung hats, clap on 2/4, occasional vocal-style percussion stabs. Groovy but driving. Solardo / Fisher style.
bars: Pattern length (1-16, 1 = one bar cycle). kick_pitch: MIDI pitch for kick (36 = C1). hat_pitch: MIDI pitch for closed hi-hat (42 = F#1). open_hat_pitch: MIDI pitch for open hi-hat (46 = A#1). clap_pitch: MIDI pitch for clap (39 = D#1). perc_pitch: MIDI pitch for percussion (75 = high wood block / rim). velocity: Base velocity 0-1. Claps -0.05, hats -0.15, open hats -0.1, ghost -0.3.
Returns notes created, floor type, and stroke breakdown.
Example: create_four_on_floor(floor_type="classic_house", track_index=0) create_four_on_floor(floor_type="techno", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| hat_pitch | No | ||
| clap_pitch | No | ||
| floor_type | No | classic_house | |
| kick_pitch | No | ||
| perc_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| open_hat_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the rhythmic details, velocity offsets, and the return value ('Returns notes created, floor type, and stroke breakdown'), providing some behavioral insight. However, it doesn't mention side effects like overwriting existing notes, whether it creates a new region, or how track_index/unit_index affect the project, which is uncertain given 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?
The description is verbose, including a lengthy historical narrative on dance music that is not essential for tool invocation. While it's organized with clear sections for floor types and parameters, the extra context makes it less concise than necessary, though still 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?
The tool has 11 parameters and no schema descriptions, so the description bears the full burden of explanation. It thoroughly covers the main pattern generation and pitch defaults, but omits three parameters and doesn't discuss side-effect behavior or track prerequisites, leaving gaps for a complete 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 substantial meaning beyond the schema, especially for floor_type with detailed subgenre patterns, and for pitches and velocity with specific MIDI numbers and offset values. However, start_beat, unit_index, and track_index are not described in the text despite having zero schema descriptions, leaving these parameters underdocumented.
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 creates a four-on-the-floor pattern and elaborates on specific floor_type options, making its purpose explicit and unique to this genre. However, it doesn't directly differentiate itself from sibling pattern-generation tools like create_drum_pattern, so it lacks explicit 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 provides examples of how to call the function and explains different floor_type choices, but it does not state when to use this tool versus alternatives such as create_drum_fill or create_euclidean_rhythm. The historical context is interesting but not actionable decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_fugatoA
Create a fugato — a fugal passage with subject entries and imitation.
A fugato is a fugal section (not a full fugue) that features subject entries in imitation: the subject is stated, then answered at a different pitch level, with optional countersubject and episodic material between entries. This is the building block of fugue writing — Bach, Handel, Shostakovich fugato passages.
Unlike create_voice_exchange (transforms existing notes between tracks), fugato generates the entire fugal texture from scratch:
Subject: the main theme (custom or auto-generated)
Answer: subject restated at answer_interval (real or tonal)
Countersubject: a counter-melody against the answer
Episode: connecting material between entries (sequenced motives)
Answer modes: real — exact transposition of the subject tonal — adjusted to stay within the key (5th scaled down)
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, etc.). subject_notes: Custom subject as JSON array of [pitch_offset, duration_beats]. If empty, auto-generates a subject. pitch_offset is semitones from root. Example: [[0, 0.5], [2, 0.5], [5, 1.0], [4, 0.5], [2, 0.5], [0, 1.0]] bars: Total length in bars (4-16). octave: Starting MIDI octave (2-6). voices: Number of voices (2-4). answer_interval: Transposition interval for the answer in semitones. Default 7 = perfect fifth (standard fugue answer). answer_mode: Answer type (real or tonal). include_countersubject: If True, generates a countersubject. countersubject_interval: Starting interval of countersubject from answer pitch (semitones, can be negative). include_episode: If True, generates episodic material between entries. episode_bars: Length of episode sections in bars (1-4). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, subject preview, voice entries, and fugato structure.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| scale | No | minor | |
| octave | No | ||
| voices | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| answer_mode | No | real | |
| track_index | No | ||
| episode_bars | No | ||
| subject_notes | No | ||
| answer_interval | No | ||
| include_episode | No | ||
| include_countersubject | No | ||
| countersubject_interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently explains that fugato generates subject, answer, countersubject, and episode material, describes real vs tonal answer modes, and states that an empty subject_notes auto-generates a subject. It also discloses the return value ('notes created, subject preview, voice entries, and fugato structure'). Minor gap: it doesn't address whether creation appends or overwrites existing notes on the target 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 long but well-organized, starting with a definition, then components, answer modes, and Args. Each section serves a purpose, and the stylistic musical explanation contextualizes the tool for an AI agent. Despite its length, it avoids redundancy and 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 high complexity (16 parameters, fugue theory, no schema descriptions), the description covers the tool's purpose, algorithm, parameter semantics, and return value. The presence of an output schema further reduces the need to detail return structure explicitly, and the description mentions the key return elements. It is a self-contained reference for 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?
Schema coverage is 0%, so the description must compensate, and it does with a full Args section covering all 16 parameters. Notably, subject_notes includes a concrete JSON example and explains pitch_offset semantics. The description goes well beyond the schema titles, providing musically meaningful explanations for answer_mode, countersubject_interval, and episode_bars.
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 'Create a fugato — a fugal passage with subject entries and imitation,' establishing a clear verb+resource. It further distinguishes itself from create_voice_exchange by stating that fugato generates the entire fugal texture from scratch, making the 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 first paragraph explicitly differentiates this tool from create_voice_exchange: 'Unlike create_voice_exchange (transforms existing notes between tracks), fugato generates the entire fugal texture from scratch.' It also clarifies that a fugato is 'not a full fugue,' providing a when-not-to-use boundary. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_fugueA
Create a fugue — polyphonic composition with subject, answer, and countersubject.
The most complex contrapuntal form. A subject (main theme) is stated in one voice, then imitated in others with a tonal or real answer. Optional countersubject provides contrasting counterpoint. Stretto mode overlaps voice entries for climactic density. Unlike create_canon (strict imitation), a fugue uses tonal answers (adjusted intervals) and independent countersubjects.
subject: Comma-separated MIDI pitches of the fugue subject (e.g. "60,62,64,65"). voices: Number of voices (2-5, default 3). More voices = denser counterpoint. entry_delay_beats: Beats between voice entries (2-8, default 4). answer_type: "tonal" (fifth up, adjusted) or "real" (exact transposition). countersubject: Comma-separated MIDI pitches of countersubject (optional). If empty, no countersubject. Must be same length as subject. key_root: Key root for tonal answer calculation (e.g. "C", "F#", "Bb"). key_mode: "major" or "minor" — affects tonal answer adjustment. note_duration: Note duration as fraction of beat (0-1, default 0.9 = legato). velocity: Base velocity for first voice (0-1, default 0.75). velocity_decay: Velocity reduction per voice (0-0.3, default 0.1). stretto: If true, later voices enter before previous finishes subject. unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the first voice begins.
Returns notes created, voice count, subject length, answer type, stretto status.
| Name | Required | Description | Default |
|---|---|---|---|
| voices | No | ||
| stretto | No | ||
| subject | No | 60,62,64,65,64,62,60,57 | |
| key_mode | No | major | |
| key_root | No | C | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| answer_type | No | tonal | |
| track_index | No | ||
| note_duration | No | ||
| countersubject | No | ||
| velocity_decay | No | ||
| entry_delay_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 algorithmic behavior thoroughly: how subject is stated, imitated with tonal/real answer, optional countersubject, and stretto overlap. It also explains defaults and ranges. However, it doesn't mention side effects like whether existing notes in the target track are deleted or if a new region is required, which is a minor transparency gap for a creation 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 long but well-organized and front-loaded. The opening two sentences establish the purpose and sibling distinction; then a clear parameter list with inline explanations; finally a return summary. Every sentence provides necessary information for a tool with 14 parameters. It is structured to be scannable without 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 tool's complexity (14 params, no annotations, no explicit output schema shown), the description is complete: it explains the musical algorithm, all parameter semantics, the return values, and how it differs from a sibling. It even provides guidance on musical choices (e.g., more voices = denser counterpoint). This covers the full context an agent needs 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 0%, but the description compensates fully by explaining all 14 parameters with types, ranges, defaults, examples, and cross-relations (e.g., countersubject must be same length as subject, key_root for tonal answer). This exceeds what the schema provides, making parameter semantics excellent.
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 clear verb+resource: 'Create a fugue — polyphonic composition with subject, answer, and countersubject.' It defines the musical form and distinguishes it from sibling create_canon, which is exactly what a good purpose statement should do.
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 compares to create_canon: 'Unlike create_canon (strict imitation), a fugue uses tonal answers (adjusted intervals) and independent countersubjects.' This tells the agent when to prefer this tool over an alternative. It also explains optional features (stretto, countersubject) and parameter choices, providing strong usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_full_genre_pipelineA
Create a complete genre track from zero to render-ready in one call.
Full pipeline: setup tracks → arrangement → harmonic layers (optional) → genre mix → mastering chain. One call replaces 5-10 individual tool calls with correct parameters.
Steps performed:
Set BPM to genre-appropriate default
Create a synth track + 4 note tracks
Create regions on all tracks
Call the genre arrangement (rhythm across all tracks)
If progression provided: add harmonic layers (arp + melody on top of genre rhythm; pads/bass skipped since genre already has them)
Apply genre-specific mix (compressor, EQ, saturation, reverb per track)
Apply sidechain (for electronic genres)
Add mastering chain (genre-appropriate LUFS target)
After this call, the project is ready for export_audio / render.
genre: One of: dnb, liquid_dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae, synthwave, trance, disco bpm: Override tempo (None = genre default). bars: Arrangement length (default 8, pop min 16). root: Override key (None = genre default). master_lufs: Mastering target (-14 Spotify, -10 loud, -16 Apple). progression: Chord progression string (e.g. "Am-F-C-G"). If non-empty, adds arp + melody harmonic layers on top of the genre rhythm. Pads and bass are skipped (genre arrangement already has them). Default "" = no harmonic layers (rhythm only). add_counter_melody: If True and progression is set, also adds a counter-melody layer (contrary motion). Default False. add_track_chains: If True, applies genre-appropriate processing chains to each track (drum chain on rhythm tracks, bass chain on bass, instrument chain on melodic). Default False.
Returns complete pipeline status: tracks created, notes per track, effects added, mastering chain, harmonic layers.
Example:
Full DnB track in one call
create_full_genre_pipeline("dnb")
Custom techno
create_full_genre_pipeline("techno", bpm=135, bars=16, master_lufs=-10)
House with harmonic layers
create_full_genre_pipeline("house", progression="Fm-Db-Ab-Eb")
Synthwave with full harmonic quintet
create_full_genre_pipeline("synthwave", progression="Am-F-C-G", add_counter_melody=True)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | ||
| genre | Yes | ||
| master_lufs | No | ||
| progression | No | ||
| add_track_chains | No | ||
| add_counter_melody | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 lists the 8-step pipeline, explains skipped layers (pads/bass) when a progression is provided, mentions sidechain for electronic genres, and notes the mastering LUFS target. It does not disclose whether the tool resets/overwrites the existing project or what happens if the project already has tracks, leaving some ambiguity about destructive 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 long but every section earns its place. It is front-loaded with the core purpose, followed by a numbered step list, parameter definitions, and examples. The structure is scannable and the verbosity is appropriate for a complex 8-parameter orchestration 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?
Given the high complexity (8 params, multi-step pipeline), no annotations, and 0% schema description coverage, the description is remarkably complete. It covers the pipeline steps, parameter semantics, valid genre values, and expected outcome ('ready for export_audio / render'). It also states it returns 'complete pipeline status', and since an output schema exists, detailed return-value documentation is not required.
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 fully explain parameters, and it does. It explains every parameter: genre lists all 15 supported values, bpm is an override, bars has a genre-specific minimum, master_lufs gives concrete targets (-14 Spotify, -10 loud, -16 Apple), progression shows a string format with an example, and add_counter_melody/add_track_chains are clearly conditioned on other parameters. Examples at the end further clarify usage.
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: 'Create a complete genre track from zero to render-ready in one call.' It uses a specific verb ('create') and a specific resource ('genre track'), while explicitly distinguishing itself from individual tools by noting 'One call replaces 5-10 individual tool calls.'
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 implies when to use it (when you want a full track from scratch, ready for export/render) and contrasts with the multi-call alternative. However, it doesn't explicitly name sibling tools like create_genre_track or arrangement-specific tools as alternatives, nor does it state when NOT to use this tool (e.g., if you only need an arrangement or want to modify an existing project).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_funk_arrangementA
Create a full funk arrangement — funky drummer + slap bass + scratch guitar + horn stabs across 4 tracks.
James Brown / Parliament-Funkadelic style funk — vamp-based, not chord-progression-based:
Track 0: Drums — "Funky Drummer" pattern (Clyde Stubblefield, most sampled break in history): syncopated kick with ghost notes, snare with strong ghost accents, hi-hat with 16th-note syncopation. The groove that built hip-hop.
Track 1: Bass — slap bass: thumb (root, low) + pluck (octave/fifth, high) alternating, with dead notes (ghost) for percussive attack. The signature Larry Graham technique.
Track 2: Guitar — "scratch guitar" / "chank": 16th-note muted strumming on a single chord, with accents on specific 16ths. The rhythmic glue that makes funk tick — Niles Rodgers style.
Track 3: Horns — stabs: short, tight horn hits on the "and" of beats, responding to the vocal/instrumental lead. Brown-style section horn hits.
At 100 BPM (default), this creates the classic funk pocket — not too fast, deep in the groove. The vamp (one chord groove, not progression) is the fundamental difference from all other arrangements: pop/rock/jazz change chords, funk stays on one and makes it groove. 16th-note syncopation is the rhythmic DNA — every instrument plays 16ths with different accent patterns.
bpm: Tempo (90-115, default 100 = classic funk pocket). bars: Arrangement length (4-16, default 8). Funk vamps can go long. root: Root note (D is a classic funk key — D minor/D dominant). octave: MIDI octave for bass (2 = D2=38, standard funk bass register). unit_index: AU index with note tracks. drum_track / bass_track / guitar_track / horn_track: Track indices.
Returns notes created per track and total.
Example: create_funk_arrangement(bpm=100, root="D", bars=8) create_funk_arrangement(bpm=108, root="G", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | D | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| horn_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| guitar_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that it creates an arrangement across tracks, returns "notes created per track and total," and mentions requiring a unit_index with note tracks. However, it does not state whether existing notes are overwritten, whether it creates missing tracks, or any prerequisites beyond the unit_index reference.
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 long (several paragraphs) but well-structured with bullet-style track breakdowns, param definitions, and examples. The front-loaded first sentence states the core purpose immediately. Some historical references are colorful but not essential; still, every paragraph contributes to understanding the style and parameters.
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 (4 tracks, 11 parameters, genre-specific behavior), the description is quite complete: it explains musical roles, defaults, ranges, and even provides example calls. The output schema exists, so detailed return-value documentation is not required. The main gaps are behavioral side effects and the two undocumented parameters, which prevent a perfect score.
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 0% description coverage, so the description must compensate. It adds meaningful semantics for bpm, bars, root, octave, unit_index, and the four track indices, including ranges, defaults, and musical intent. However, it omits two schema parameters (velocity and start_beat), which are left undescribed.
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: "Create a full funk arrangement" across four named tracks (drums, bass, guitar, horns). It clearly distinguishes itself from other arrangement tools by emphasizing the vamp-based, one-chord funk style, explicitly contrasting with chord-progression-based genres.
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 usage context: it is for James Brown / Parliament-Funkadelic style funk, vamp-based rather than chord-progression-based, and contrasts with "all other arrangements" that change chords. It does not explicitly name alternative tools or state 'do not use when X', but the genre and stylistic guidance are enough to infer appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_future_bass_arrangementA
Create a full future bass arrangement — 4 tracks: drums + bass + chords + lead.
Future bass (Flume, San Holo, Illenium, ODESZA) blends electronic production with melodic/emotional sensibility. Key characteristics:
130-160 BPM, often major key (uplifting feel)
Pitching snare rolls before drops (rising pitch + velocity crescendo)
Big supersaw chords — wide, detuned, layered
Sub-bass under chords, syncopated with kicks
Vocal chop aesthetic — short rhythmic melodic fragments
Sidechain pumping feel
Bright, shimmering, nostalgic
Creates 4 tracks:
Drums (drum_track): Punchy kick on 1 and 3, snare on 2 and 4, 16th hats with rolls, and pitching snare roll at end of phrase (8 bars) — simulated by ascending pitch notes.
Bass (bass_track): Sub-bass following chord roots, syncopated gaps, octave drops. Sustained under chords.
Chords (chord_track): Big supersaw-style chords — major 7th / add9 voicings, wide voicings (root/third/seventh/ninth/octave), 2 bars per chord. I-V-vi-IV progression.
Lead (lead_track): Vocal-chop style melodic fragments — short rhythmic notes in major scale, catchy phrases, starts after 4 bars.
bpm: Tempo (120-170, default 150). bars: Arrangement length (4-32, default 8). root: Root note (default C = common future bass key). octave: MIDI octave for chords (3 = C3=48).
Example: create_future_bass_arrangement(bpm=150, root="C", bars=8) create_future_bass_arrangement(bpm=140, root="G", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains what will be generated (4 tracks, their musical content, genre style). However, it does not disclose potential side effects, such as whether it overwrites existing track data, whether it creates new tracks or uses existing indices, or if the operation is undoable. This ambiguity prevents a higher score.
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 longer than average but well-structured with clear sections (genre overview, track details, parameter list, examples). Every sentence adds useful context for a creative tool; there is minimal fluff. It is not excessively wordy for the complexity it covers.
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 11 parameters and no annotation support, the description is incomplete. It covers the overall purpose and main musical outputs thoroughly, but fails to explain several parameters and does not address side effects or prerequisites. An output schema exists, so return values don't need to be described, but the missing parameter semantics and side-effect information leave the description only partially 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 coverage is 0%, so the description must compensate. It explains bpm, bars, root, and octave, but 7 of 11 parameters (velocity, bass_track, drum_track, lead_track, start_beat, unit_index, chord_track) are left undocumented. The track indices are only implicitly mentioned in the track descriptions, not explained as parameters. This leaves 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 clearly states the tool's function: 'Create a full future bass arrangement — 4 tracks: drums + bass + chords + lead.' It uses a specific verb ('create'), identifies the resource ('future bass arrangement'), and differentiates from sibling genre tools by explicitly naming the genre and detailing the track structure.
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 by detailing future bass genre characteristics and giving example calls (bpm, root, bars). However, it does not explicitly state when not to use it or directly mention alternative tools (e.g., other create_*_arrangement tools), which would warrant a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_garage_arrangementA
Create a UK garage arrangement — 130 BPM 2-step swing.
UK garage (UKG) is a British electronic genre evolving from US garage house with drum & bass influence. Key characteristics:
2-step drum pattern: kick on 1, snare on 2 & 4, skip beats
Swing/shuffle feel (16th note swing)
Chopped vocal stabs and chord stabs
Deep bassline with melodic movement
130-138 BPM, 4/4 time
Smooth, bumping, after-hours energy
Creates 4 tracks:
Drums (track_index): 2-step kick (beat 1, sometimes 3), snare on 2 & 4, swung hats, skip-beat ghost notes
Bass (track_index+1): Melodic bassline with octave jumps and syncopation, walking-ish movement
Chords (track_index+2): Stab chords on offbeats, major 7th and minor 9th voicings, Rhodes-style
Lead (track_index+3): Vocal-chop-style melodic stabs, short rhythmic phrases
Default key: G minor (common UKG key).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | G | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose the output structure (4 tracks with offsets), musical patterns, and default key. However, it omits important operational behavior such as whether existing notes on those tracks are overwritten, whether new tracks are created automatically, or how the tool interacts with the current project state. This leaves meaningful gaps in predicting 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?
The description is well-structured with a clear lead sentence, a bulleted genre overview, and a numbered track breakdown. It is a bit longer than necessary due to genre background (e.g., 'smooth, bumping, after-hours energy'), but the structure makes it scannable and the content is largely pertinent to understanding the tool's musical output.
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 that generates a full 4-track arrangement, and the description covers the musical essence well—track roles, rhythmic patterns, voicings. However, it leaves out several parameter behaviors (bars, velocity, start_beat, unit_index) and does not mention any operational constraints or side effects. Given the complexity and lack of annotations, the description is 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?
The input schema has 0% coverage (no parameter descriptions), so the description must compensate. It provides some meaning for bpm (default 130 and genre-typical 130-138), key_root (default G minor), and track_index (used to place the 4 tracks). But it does not explain bars, velocity, start_beat, or unit_index, which are all essential for controlling the arrangement. This partial coverage earns a mid-level score.
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+resource: 'Create a UK garage arrangement', and elaborates with genre-defining characteristics and a breakdown of the 4 tracks created. This clearly distinguishes it from sibling tools like create_house_arrangement or create_trap_arrangement by explicitly naming the genre and its signature patterns.
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 establishes clear context for when to use the tool—when a UK garage arrangement is requested—and educates the agent on genre specifics (2-step, swing, BPM range, track layout). However, it does not explicitly name alternatives or state when not to use it, leaving some inference to the agent based on the tool name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_genre_sectionsA
Create a multi-section electronic track from loop-based arrangements — intro → buildup → drop → breakdown → outro.
Transforms loop-based arrangements into song structure. Each section is a separate arrangement call with different start_beat and velocity, creating dynamic energy progression. For electronic genres only (dnb/house/techno/ trance/dubstep/synthwave/trap/disco).
Section energy progression:
Intro (bars 0-N): drums only (kick + hat), no bass/melody. velocity * 0.5. Builds anticipation. Sparse and atmospheric.
Buildup (bars N-2N): drums + bass, no harmony/melody. velocity * 0.7. Energy rising, groove established.
Drop (bars 2N-3N): ALL tracks at full velocity. The climax — full arrangement with maximum energy. This is where the hook hits.
Breakdown (bars 3N-4N): harmony + melody only, no drums/bass. velocity * 0.6. Pull back, breathe, create contrast before final drop.
Outro (bars 4N-5N): drums + bass fading. velocity * 0.4. Wind down.
section_lengths: Comma-separated bar counts for each section. Default "4,8,8,8,4" = intro(4) + buildup(8) + drop(8) + breakdown(8) + outro(4) = 32 bars total. For a shorter track: "2,4,8,4,2" = 20 bars. For a longer track: "8,16,16,16,8" = 64 bars.
genre: Electronic genre only: dnb, house, techno, trance, dubstep, synthwave, trap, disco bpm: Override tempo (None = genre default). root: Override key (None = genre default). section_lengths: Comma-separated bar counts (5 sections, must sum to multiple of 4).
Returns sections created, notes per section, total notes, and energy profile.
Example:
32-bar DnB track with song structure
create_genre_sections("dnb", section_lengths="4,8,8,8,4")
64-bar trance epic
create_genre_sections("trance", section_lengths="8,16,16,16,8")
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| root | No | ||
| genre | Yes | ||
| bass_track | No | ||
| drum_track | No | ||
| unit_index | No | ||
| melody_track | No | ||
| harmony_track | No | ||
| section_lengths | No | 4,8,8,8,4 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transformation behavior, per-section velocity multipliers, which musical elements are included/excluded in each section, and the return summary. However, it does not mention potential side effects on existing tracks (e.g., overwriting notes) or whether it 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?
The description is well-organized with clear sections: purpose, energy progression, parameter details, and examples. It is somewhat long and repeats section_lengths details, but every section adds meaningful info for a complex 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 musical behavior is thoroughly explained, and return values are stated. However, with 9 parameters, 5 are undocumented in the description, and there is no mention of how the tool interacts with the existing project (e.g., whether it creates new tracks or reuses existing ones). This leaves gaps for an agent attempting 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 description adds valuable semantics for genre, bpm, root, and section_lengths, including examples and constraints. But it completely omits explanations for the 5 remaining parameters (bass_track, drum_track, unit_index, melody_track, harmony_track), which are critical for routing the sections to the correct tracks. Since schema coverage is 0%, this is a notable 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 opens with a specific verb+resource: 'Create a multi-section electronic track from loop-based arrangements' and details the exact section flow (intro → buildup → drop → breakdown → outro). This clearly distinguishes it from generic arrangement tools and sibling genre-specific 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 intended use is clear: it is for electronic genres only (dnb, house, techno, etc.) and transforms loop-based arrangements into song structure. It explains the energy progression and likely use cases, but does not explicitly name alternatives (e.g., create_dnb_arrangement) 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.
mcp_opendaw_create_genre_trackA
Create a genre-specific starting track with synth, beat, and basic mix — one call builds a full section.
genre: Musical genre preset:
"house" — 4/4 kick, offbeat hat, stab bass, 128 BPM
"techno" — driving kick, ride hat, acid bass, 130 BPM
"lofi" — swing kick/snare, soft keys, 80 BPM
"dnb" — breakbeat drums, sub bass, 174 BPM
"trap" — 808 kick, hat rolls, melodic lead, 140 BPM
"ambient" — pad chord, no drums, 70 BPM
"coldwave" — driving kick, dark bass, 110 BPM
"hiphop" — boom bap kick/snare, 90 BPM
bpm: Override tempo (default per genre).
Returns created AU indices, note counts, and suggested next steps.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| genre | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 clearly states what is created and what is returned (AU indices, note counts, suggested next steps), and lists genre presets. However, it does not mention potential side effects like whether a new track is created in the current project state, how many tracks are generated, or any prerequisites. The description is not misleading but lacks deeper 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 well-structured and front-loaded with the core purpose. The genre list is somewhat long but entirely necessary to convey valid parameter values. Each section (purpose, genre, bpm, return value) serves a clear purpose without redundant fluff. It could be slightly more concise by grouping similar genres, 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?
Given the moderate complexity (one required enum-like parameter, one optional override) and the presence of an output schema, the description is largely complete. It covers purpose, parameter options, defaults, and return values. It does not mention project-level prerequisites or whether the tool works within the current project context, but this is likely implied by the tool family. The only notable gap is not specifying the number of tracks created or the exact nature of the 'basic mix'.
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 0% description coverage, so the description fully compensates by providing detailed semantics for both parameters. The 'genre' parameter lists all valid values with musical component breakdowns and default BPMs. The 'bpm' parameter is explained as an override with per-genre defaults. This far exceeds what the bare schema offers, making the tool invocable with confidence.
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 ('Create a genre-specific starting track') and clearly enumerates the components (synth, beat, basic mix) and scope (full section). It distinguishes itself from sibling tools by emphasizing 'genre-specific' and 'one call builds a full section', which sets it apart from generic track creation tools like create_synth_track or create_audio_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 implies usage context: when you need a genre-specific starting track that includes synth, beat, and mix. It does not explicitly state when to prefer this over alternatives (e.g., arrangement tools or create_genre_sections) nor provide exclusions. The 'one call builds a full section' suggests efficiency, but no clear guidance on alternatives is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ghost_notesA
Add ghost notes (quiet grace notes) to existing drum/MIDI patterns.
Ghost notes are very quiet notes placed between main hits, adding groove and complexity. Essential for funk, R&B, neo-soul, and hip-hop drumming. They fill spaces between snare/kick hits with subtle taps that make the beat feel alive.
Inserts new low-velocity notes at off-beat positions where no notes currently exist. Works on the first note track of the specified AU/track.
unit_index: AU index. track_index: Note track index (-1 = first note track). region_index: Region index (-1 = first region). density: Probability of adding a ghost note at each empty 16th position (0.2 = sparse, 0.5 = busy). velocity: Ghost note velocity 0-1 (0.25 = very quiet, 0.4 = audible). seed: Random seed for reproducibility.
Returns number of ghost notes added and positions.
Example: create_ghost_notes(unit_index=0, density=0.35, velocity=0.3, seed=99)
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| density | No | ||
| velocity | No | ||
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses key behaviors: inserts low-velocity notes at off-beat positions where no notes exist, works on the first note track, and returns count and positions. It also details parameter effects on density and velocity, though it doesn't mention reversibility or 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?
The description is well-structured with a clear lead sentence, parameter list, return value, and example. Every section adds value without unnecessary 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?
It covers purpose, behavior, parameters, and return value. It even includes an example call. The output schema is true but the description already tells what it returns, making it complete for a tool of this 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 description explains every parameter beyond the schema: unit_index, track_index, region_index, density, velocity, and seed, with ranges and examples. This fully compensates for the 0% schema description 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 explicitly states 'Add ghost notes (quiet grace notes) to existing drum/MIDI patterns', which is a specific verb+resource. It distinguishes from sibling tools like create_drum_pattern by focusing on adding quiet grace notes to existing patterns.
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 context for when to use it: 'Essential for funk, R&B, neo-soul, and hip-hop drumming.' It also explains it inserts notes at off-beat positions and works on the first note track, but does not explicitly compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_glissandoA
Create a glissando — smooth scale run between two pitches.
A continuous-sounding slide through intermediate pitches. Unlike riser/bass_drop (which are pitch sweeps), glissando plays every intermediate note at a fixed rate, creating a true scale run feel. Works chromatically (every semitone) or diatonically (scale tones only) or pentatonically.
start_pitch: Starting MIDI note (default 60 = C4). end_pitch: Ending MIDI note (default 72 = C5). Can be higher or lower. scale_type: "chromatic" (every semitone), "major" (diatonic major scale), "minor" (natural minor), "pentatonic_minor", "pentatonic_major", "whole_tone". duration_beats: Total duration in beats (0.5-16, default 2). rate: Note rate — "32nd", "16th", "8th", "32t", "16t". velocity: Base velocity 0-1 (default 0.8). velocity_curve: "flat" (constant), "ramp_up" (crescendo into landing), "ramp_down" (decrescendo), "arc" (peak in middle). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the glissando begins.
Returns notes created, pitch list, scale type.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | 16th | |
| velocity | No | ||
| end_pitch | No | ||
| scale_type | No | chromatic | |
| start_beat | No | ||
| unit_index | No | ||
| start_pitch | No | ||
| track_index | No | ||
| duration_beats | No | ||
| velocity_curve | No | ramp_up |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses the note generation behavior (plays every intermediate note at a fixed rate), supports chromatic/diatonic/pentatonic modes, and mentions return values (notes created, pitch list, scale type). It does not explicitly state whether the operation appends to or replaces existing notes, nor does it cover error conditions or permissions.
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 well-structured: a one-sentence summary, a paragraph explaining the concept and differences, a bulleted parameter list, and a return value note. Every sentence adds value without redundancy, making it easy to parse quickly.
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 10 parameters and no annotations, the description is quite complete: it covers all parameters, defaults, return values, and some behavioral context. However, it does not address potential edge cases (e.g., what happens if no AU with note tracks is found) and does not distinguish from the similar create_scale_run sibling, leaving a minor gap in completeness.
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 fully compensates. Every parameter is explained with defaults, ranges, and examples (e.g., 'start_pitch: Starting MIDI note (default 60 = C4)' and 'rate: Note rate — "32nd", "16th", "8th", "32t", "16t"'), providing enough detail for the agent to use the tool 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 'Create a glissando — smooth scale run between two pitches,' which specifies the action and object. It also distinguishes itself from riser/bass_drop by explaining the difference between pitch sweeps and scale runs, 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?
The description explicitly contrasts with riser/bass_drop ('Unlike riser/bass_drop (which are pitch sweeps), glissando plays every intermediate note at a fixed rate'), providing clear guidance for those alternatives. However, it does not differentiate from the similarly named sibling tool create_scale_run, and it lacks a broader 'use this when' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_gospel_arrangementA
Create a full gospel arrangement — shuffle drums + walking bass + Hammond organ + choir.
Gospel music — the foundation of soul, R&B, and modern pop:
Track 0: Drums — gospel shuffle. Kick on 1, snare on 2+4 with ghost notes, hi-hats with triplet shuffle feel. The "pocket" is deep — slightly behind the beat. Dynamics are expressive.
Track 1: Bass — walking bass line through I-IV-V-I progression. Root → 3rd → 5th → approach note. Warm, supportive.
Track 2: Hammond B3 organ — chord stabs with Leslie rotation feel. Triadic voicings, 2nd inversion common. The Hammond is the signature sound of gospel — drawbar harmonics.
Track 3: Choir — sustained SATB voicings. Call-and-response with organ. Long notes, rich harmony, the "church" sound.
Ab major default — flat keys are traditional for gospel singers. I-IV-V-I progression (Ab-Db-Eb-Ab) with passing diminished approach. 6/8 or 4/4 at 70-85 BPM (slow groove).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | Ab | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| choir_track | No | ||
| organ_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose side effects. It says 'Create a full gospel arrangement' but doesn't state whether this adds new tracks, replaces existing content, or requires a specific project state. The operational behavior (mutating the project) is left implicit, which is a significant gap for a creation 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 front-loaded with a clear purpose sentence, followed by structured bullet points for each track. While lengthy, the musical detail is relevant and not redundant. It could trim the editorializing sentence ('Gospel music — the foundation...') but overall earns its 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 complex 11-parameter creation tool with no annotations and no schema descriptions, the description covers the musical content thoroughly but is incomplete operationally. It doesn't mention project-level effects (additive vs. destructive), requirements, or what happens on invocation. The output schema exists, but the description still lacks integration 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?
The schema has 0% coverage, so the description must explain parameters. It does explain track 0-3 assignments (matching drum_track, bass_track, organ_track, choir_track defaults), mentions the default root Ab, and gives a tempo range (70-85 BPM) that relates to the bpm parameter. However, it doesn't explain bars, velocity, octave, start_beat, or unit_index, leaving many parameters 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 opens with 'Create a full gospel arrangement — shuffle drums + walking bass + Hammond organ + choir,' clearly stating the tool's function and distinguishing it from other arrangement tools. The detailed breakdown of tracks 0-3 further specifies what the arrangement includes.
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 for when to use the tool—when a gospel arrangement is needed—and provides rich musical style details (default Ab, I-IV-V-I, tempo range). However, it doesn't explicitly exclude other styles or mention alternatives among the many sibling genre-arrangement tools, so it misses explicit when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ground_bassA
Create a ground bass — a repeating ostinato bass line with optional melody.
The ground bass (basso ostinato) is one of the oldest composition techniques: a short bass pattern repeats throughout the piece while melodies above it change and develop. Used in baroque (Purcell's Dido's Lament, Bach's Crucifixus), chaconne/passacaglia tradition, jazz modal vamps, and film scoring (repeating tension ostinati).
Unlike passacaglia (which generates variations above the bass), ground_bass creates the pure repeating bass ostinato + a melody line that develops over the repetitions. The melody changes character per repetition cycle.
melody_styles: "baroque" — Stepwise descending lines over the ground. chromatic passing tones, suspensions on strong beats. Purcell/Bach style. Melody descends gradually across repetitions. "modal" — Modal jazz vamp style. Long sustained notes, sparse placement, emphasis on chord tones. Miles Davis / Kind of Blue aesthetic. Melody floats above the bass. "minimalist" — Steve Reich / Philip Glass style. Phase-shifted melodic fragments, repetitive cells, gradual transformation. Melody uses small intervals and repeating patterns. "film_tension" — Dark film scoring style. Minor 2nd and tritone intervals, dissonant suspensions, gradual crescendo. Melody builds tension across repetitions. "folk" — Strophic folk variation style. Pentatonic-leaning melody, simple rhythmic values, phrase repetition with slight variation. Celtic / English folk tradition.
Args: bass_pattern: Space-separated bass notes (e.g. "A2 E2 C2 G2"). Can use note names (A2, C3) or MIDI numbers (45, 52). bass_rhythm: Space-separated durations in beats for each bass note (e.g. "2 2 2 2" = 4 notes each lasting 2 beats = 8-beat cycle). repeats: Number of bass repetitions (2-32). melody_style: Melody character above the ground. unit_index: AU index. track_index: Note track index (bass goes here, melody on track_index+1). start_beat: Starting beat position. velocity: Base velocity 0-1.
Returns bass notes created, melody notes, cycle info, and style.
| Name | Required | Description | Default |
|---|---|---|---|
| repeats | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| bass_rhythm | No | 2 2 2 2 | |
| track_index | No | ||
| bass_pattern | No | A2 A2 E2 E2 | |
| melody_style | No | baroque |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the tool generates both bass and melody, placing melody on track_index+1, and that melody evolves across repetitions per style. It does not explicitly state whether existing notes are overwritten or appended, which is a minor gap for a creation 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 long but effectively structured: a headline purpose, historical context, a comparative note, styled bullets, and an args list. It's front-loaded with the definition, and each paragraph earns its place, though the historical section could be trimmed without losing critical 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 tool has 8 parameters, 5 style options, and an output schema; the description covers every parameter with semantics, explains the return value ('Returns bass notes created, melody notes, cycle info, and style'), and clarifies the two-track behavior. The only missing piece is edge-case handling for track_index+1, but overall the description is comprehensive.
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?
All 8 parameters are described with examples and format details beyond schema defaults. For instance, bass_pattern supports note names or MIDI numbers, bass_rhythm includes an example cycle calculation, repeats has a range, and melody_style offers five detailed style descriptions. Since schema_description_coverage is 0%, this fully compensates.
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 opening sentence defines the tool with a specific verb and resource: 'Create a ground bass — a repeating ostinato bass line with optional melody.' It also distinguishes itself from a sibling: 'Unlike passacaglia (which generates variations above the bass), ground_bass creates the pure repeating bass ostinato + a melody line that develops over the repetitions.' This gives clear purpose and 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 provides context for when to use the tool historically ('Used in baroque... jazz modal vamps... film scoring') and explicitly contrasts with passacaglia, implying a choice between the two based on whether you want variations above the bass. However, it does not mention other similar siblings like create_ostinato or create_bassline, so exclusion is limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_hardstyle_arrangementB
Create a hardstyle arrangement — 150 BPM festival hard dance.
Hardstyle is a Dutch electronic dance genre characterized by:
Hard, distorted kick drum with a pitched tail (the signature sound)
Reverse bass (off-beat bass that "reverses" the kick pattern)
Screechy/sawtooth lead synth with wide unison
150 BPM, 4/4 time
Aggressive, festival/headbanger energy
Creates 4 tracks:
Drums (track_index): Hard kick on every beat, snare on 2&4, closed hats on offbeats, open hat occasionally
Bass (track_index+1): Reverse bass pattern — bass on offbeats between kicks, creating the signature "boom-BM-boom-BM" feel
Lead (track_index+2): Screechy sawtooth lead playing a minor melody with wide intervals and octave jumps
Chords (track_index+3): Stab chords on beat 1 and 3, minor key
Default key: F minor (common hardstyle key).
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | F | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 reveals that four tracks are created with specific patterns and default key, but omits operational details such as overwrite behavior, track placement conflicts, return values, 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 well-structured with a clear lead sentence, followed by genre context and a bulleted track breakdown. The genre education paragraph is somewhat extended, but the overall organization aids readability without excessive 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 7-parameter tool with no annotations and no output schema details, the description is incomplete. It explains the musical arrangement thoroughly but does not cover parameter semantics, side effects, prerequisites, or return behavior, leaving significant gaps for an AI 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 description coverage is 0%, so the description must compensate. It only indirectly references track_index and mentions musical traits like 150 BPM and F minor, but fails to explain parameters such as bars, velocity, start_beat, unit_index, or how bpm/key_root map to the described 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 "Create a hardstyle arrangement" with a specific verb and resource. It further distinguishes itself from sibling genre tools by detailing the hardstyle characteristics, BPM, and track structure, 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?
The description implies usage for hardstyle creation but lacks explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like other genre arrangements, leaving the selection rationale to the genre context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_harmonic_arrangementA
Create all five harmonic layers from one progression string in one call.
Replaces 5 separate calls (chord_pads + arpeggiated_progression + bass_from_progression + melody_from_progression + counter_melody_from_progression) with a single call. All layers take the same "Am-F-C-G" progression and are placed on separate tracks: pads (track 2), arp (track 3), bass (track 1), melody (track 3 or 4), counter-melody (track 4 or 5).
By default arp and melody share track 3 (melody track). Set melody_pattern to "" to skip melody, arp_pattern to "" to skip arp, bass_pattern to "" to skip bass, pad_octave to -1 to skip pads, counter_melody_pattern to "" to skip counter-melody (default).
progression: Hyphen-separated chords (same format as the quartet tools). pad_octave: Octave for chord pads (default 3). arp_pattern: Arp pattern: up/down/updown/random/bass, or "" to skip. arp_octave: Octave for arp (default 4). arp_step: Arp step duration in beats (default 0.25 = 16th). bass_pattern: Bass pattern: root/root_fifth/walking/pedal/octave/root_octave. bass_octave: Octave for bass (default 2). melody_pattern: Melody pattern: chord_tones/sustained/syncopated/triadic/stepwise. melody_octave: Octave for melody (default 5). counter_melody_pattern: Counter-melody pattern: contrary/oblique/parallel_third/ parallel_sixth/call_response, or "" to skip (default ""). counter_melody_octave: Octave for counter-melody (default 4). bars_per_chord: Bars per chord (default 4). velocity: Base velocity for all layers (0-1).
Example:
Full synthwave harmonic arrangement in one call
create_harmonic_arrangement("Am-F-C-G", arp_pattern="up", bass_pattern="root", melody_pattern="chord_tones")
Jazz: walking bass + sustained pads, skip arp
create_harmonic_arrangement("Dm7-G7-Cmaj7-Am7", arp_pattern="", bass_pattern="walking", melody_pattern="sustained", bars_per_chord=2)
House: pedal sub-bass + pads, skip melody
create_harmonic_arrangement("Fm-Fm-Db-Ab", arp_pattern="bass", bass_pattern="pedal", bass_octave=1, melody_pattern="", pad_octave=3)
Full quintet with counter-melody
create_harmonic_arrangement("Am-F-C-G", arp_pattern="up", bass_pattern="root", melody_pattern="chord_tones", counter_melody_pattern="contrary")
| Name | Required | Description | Default |
|---|---|---|---|
| arp_step | No | ||
| velocity | No | ||
| arp_octave | No | ||
| pad_octave | No | ||
| start_beat | No | ||
| unit_index | No | ||
| arp_pattern | No | up | |
| bass_octave | No | ||
| progression | No | Am-F-C-G | |
| bass_pattern | No | root | |
| melody_octave | No | ||
| bars_per_chord | No | ||
| melody_pattern | No | chord_tones | |
| counter_melody_octave | No | ||
| counter_melody_pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral transparency burden. It discloses track placement (pads on track 2, arp track 3, bass track 1, etc.), default shared tracks, and skip values. However, it does not state whether this creates new tracks or modifies existing ones, whether the operation is destructive, or what happens if target tracks already contain content.
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 long but well-structured: summary, layer/track details, parameter list, and four worked examples. It is appropriately sized for a 15-parameter composite tool and front-loads the core purpose, though some redundancy exists between the initial layer list and the parameter explanations.
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 complex tool with 15 optional parameters and no annotations, the description covers layers, defaults, skip behavior, track assignment, and gives multiple usage examples. An output schema exists, so return values don't need explanation. Gaps remain: start_beat and unit_index are undocumented, and side effects on existing tracks are unclear.
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 compensates significantly by explaining 13 of 15 parameters, including pattern options (up/down/updown/random/bass), octaves, skip sentinels, and bars_per_chord. It omits start_beat and unit_index, which remain entirely undocumented and could confuse the agent.
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 opens with a specific verb+resource: 'Create all five harmonic layers from one progression string in one call.' It clearly differentiates from siblings by naming the five component tools it replaces (chord_pads, arpeggiated_progression, bass_from_progression, melody_from_progression, counter_melody_from_progression) and enumerating the exact layers produced.
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 it replaces five separate calls and names them, giving strong guidance on when to use this composite tool. It also provides skip conditions for individual layers (e.g., melody_pattern='' to skip melody), but it does not explicitly say when to prefer the individual tools over this composite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_harmonyA
Generate harmony parts from existing notes — thirds, fifths, sixths, octaves.
Reads notes from an existing region and creates harmonized copies at a fixed interval. Supports diatonic (scale-aware) and chromatic (fixed semitone) intervals. Output goes to a new or existing track.
unit_index: Source AU index. track_index: Source note track index. region_index: Source region index. interval: Harmony interval type:
"thirds" — diatonic third above/below (3rd scale degree)
"fifths" — diatonic fifth (5th scale degree)
"sixths" — diatonic sixth (6th scale degree)
"octave" — octave up/down (12 semitones)
"fifth_chromatic" — perfect fifth (7 semitones, fixed)
"fourth_chromatic" — perfect fourth (5 semitones, fixed)
"third_major" — major third (4 semitones, fixed)
"third_minor" — minor third (3 semitones, fixed) direction: "up" or "down" (harmony above or below the melody). new_unit_index: Target AU index (-1 = create new synth track for harmony). new_track_index: Target note track index on the target AU. velocity: Velocity for harmony notes (default 0.65, slightly quieter than melody).
Returns source notes read and harmony notes created.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | thirds | |
| velocity | No | ||
| direction | No | up | |
| unit_index | Yes | ||
| track_index | No | ||
| region_index | No | ||
| new_unit_index | No | ||
| new_track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions reading source notes and creating copies, implying non-destructive source behavior, but it does not explicitly state whether original notes remain untouched. It also does not clarify whether output to an existing track merges notes or replaces them. The return value is mentioned, but these behavioral ambiguities prevent a higher score.
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 well-structured and appropriately sized. It opens with a concise purpose statement, then lists parameters in a scannable format with clear explanations. Every sentence adds value, and the list is not bloated despite covering 8 parameters.
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 8 parameters and no annotations, yet the description covers all parameters, source/destination track behavior, and the return value. The output schema exists, so return value details need not be repeated. However, it lacks explicit notes on edge cases such as empty regions or overwrite behavior on existing tracks, so it is complete 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 input schema provides zero descriptions for its 8 parameters, but the description fully compensates by explaining each parameter's purpose. It details the interval enum values, direction semantics, the -1 sentinel for new_unit_index, and velocity defaults. This is exactly the meaning the schema lacks, making parameter semantics excellent.
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 it generates harmony parts from existing notes, enumerating specific intervals (thirds, fifths, sixths, octaves). It explicitly says it reads notes from an existing region and creates harmonized copies, distinguishing it from generation tools that create notes from scratch. The verb+resource is specific 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 provides clear context regarding when to use this tool: it operates on an existing region, supports diatonic and chromatic intervals, and outputs to a new or existing track. However, it does not explicitly name alternative tools (e.g., create_harmony_line) or specify when not to use it, 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.
mcp_opendaw_create_harmony_lineA
Create a harmony line from an existing melody using diatonic intervals.
Reads notes from a source melody and creates a parallel harmony line at a specified diatonic interval. The harmony stays in key — each note is shifted by N scale steps (not semitones), producing consonant harmony automatically.
Harmony intervals (diatonic):
third: +2 scale steps — the most common harmony (Lennon-McCartney, Everly Brothers, country duets). Sweet and consonant.
sixth: +5 scale steps — wider, jazzier. Creates open, airy harmony.
fifth: +4 scale steps — power harmony, medieval/organum sound.
fourth: +3 scale steps — suspended, ambiguous. Gregorian/modal.
octave: +7 scale steps (or -7) — doubling, not true harmony but useful for layering.
Essential for: vocal harmonies, string pads behind melody, guitar harmonies, counter-melody foundation, thickening lead lines.
source_unit/track/region: Location of the source melody. target_unit/track/region: Where to write the harmony. -1 = create new track/region automatically. interval: third, sixth, fifth, fourth, octave. root_note + scale: The key for diatonic interval calculation. The harmony notes are guaranteed to be in this scale. direction: "above" or "below" — place harmony above or below the melody. velocity_scale: Multiply source velocities by this (default 0.8 = harmony slightly quieter than melody).
Returns the created harmony notes.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | major | |
| interval | No | third | |
| direction | No | below | |
| root_note | No | C | |
| source_unit | No | ||
| target_unit | No | ||
| source_track | No | ||
| target_track | No | ||
| source_region | No | ||
| target_region | No | ||
| velocity_scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and largely delivers: it explains the diatonic shift, key guarantee, velocity scaling, and that it returns created notes. It does not explicitly warn about overwriting existing target content, but it clearly states the source is read (not modified) and describes the target creation behavior with -1.
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 well-structured with front-loaded purpose, interval bullets, use-case list, and parameter explanations. It's longer than minimal, but each section serves a purpose; the musical style references add useful context without being rambling.
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 11 parameters and no annotations, the description covers the algorithm, parameter meanings, use cases, and return value. It doesn't detail error cases or prerequisites (e.g., source must contain notes), but an existing output schema and the detailed parameter exposition make it 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?
Schema description coverage is 0%, and the description fully compensates. It explains interval values with musical meaning (third, sixth, fifth, fourth, octave), root_note+scale guarantee, direction, velocity_scale default, and the source/target unit/track/region semantics. This goes well 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?
The description opens with a clear, specific verb+resource: 'Create a harmony line from an existing melody using diatonic intervals.' It distinguishes itself from siblings like create_harmony or create_chorale by emphasizing a parallel harmony line derived from an existing melody, which is a distinct 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 clear use cases: 'Essential for: vocal harmonies, string pads behind melody, guitar harmonies, counter-melody foundation, thickening lead lines.' This tells the agent when to use the tool, though it doesn't explicitly name alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_hemiolaA
Create a hemiola — 3:2 rhythmic displacement creating cross-rhythm illusion.
A hemiola superimposes a 3-note grouping over a 2-note grouping (or vice versa) within the same time span, creating the illusion of a different meter. The classic 3-against-2 pattern is fundamental to West African, Afro-Cuban, jazz, and minimalist music. Brahms, Bernstein, and Glass used it extensively.
The pattern string defines which beats get primary vs secondary emphasis: "3:2" — 3 primary notes in the time of 2 secondary (classic hemiola) "2:3" — 2 primary notes in the time of 3 secondary (inverse hemiola)
Creates notes on a single track: primary group uses primary_pitch, secondary group uses secondary_pitch. Both span the same total duration.
pattern: "3:2" (3 against 2) or "2:3" (2 against 3). bars: Total length in bars (1-4). Each bar = 4 beats. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. primary_pitch: MIDI pitch for primary group (default 60 = C4). secondary_pitch: MIDI pitch for secondary group (default 64 = E4). primary_velocity: Velocity for primary notes 0-1. secondary_velocity: Velocity for secondary notes 0-1. duration: Note duration in beats.
Returns total notes created and hemiola ratio.
Example: create_hemiola(pattern="3:2", bars=2, primary_pitch=60, secondary_pitch=67)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| pattern | Yes | ||
| duration | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| primary_pitch | No | ||
| secondary_pitch | No | ||
| primary_velocity | No | ||
| secondary_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It states that notes are created on a single track, primary and secondary groups use respective pitches, and both span the same total duration. It also mentions return values. However, it does not disclose potential side effects like overwriting existing notes or error behavior for invalid parameters.
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 well-structured: definition, pattern explanation, behavior, parameter list, return value, and example. It is longer than necessary due to cultural/historical references (Brahms, Bernstein, Glass), but these do add musical context. Overall, the structure is logical and the 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?
For a complex tool with 10 parameters and no annotations, the description is quite complete: it explains the musical concept, pattern semantics, all parameters with defaults, return value, and gives an example. Minor gaps remain around exact note placement details and distinguishing from similar polyrhythm/cross-rhythm tools, but it is generally 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 description coverage is 0%, but the description fully compensates by explaining every parameter with context: pattern values, bars range (1-4), beat units, pitch defaults (60=C4, 64=E4), velocity ranges (0-1), and duration meaning. This adds significant meaning 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 clearly states the tool creates a hemiola with a specific 3:2 rhythmic displacement, using specific verbs and the resource type. It explains the concept and pattern variants, but does not explicitly differentiate from sibling tools like create_polyrhythm or create_cross_rhythm.
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 musical context and pattern options (3:2 vs 2:3), implying when a hemiola might be used. However, it lacks explicit guidance on when to use this tool instead of similar rhythm tools, and no exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_hocketA
Create a hocket — single melodic line split between voices/tracks.
Hocket (from Latin "hoquet" = hiccup) is a technique where a single melody is divided between two or more voices. Each voice plays only every other (or every Nth) note, creating an interlocking texture. Found in medieval polyphony (Notre Dame school), African mbira music, Balinese gamelan, and modern minimalist composition (Steve Reich).
melody: Comma-separated MIDI pitches forming the complete melodic line. voices: Number of voices to split between (2-4, default 2). split_mode: How notes are distributed: "alternate" — round-robin (note 0→voice 0, note 1→voice 1, ...) "pairs" — pairs of notes per voice (2 per voice, then switch) "phrase" — 4-note phrases per voice unit_index: AU index with note tracks (-1 = find AU with enough note tracks). track_index: Starting note track index (uses consecutive tracks for voices). start_beat: Position in beats where the hocket begins. note_duration: Duration of each note in beats (default 0.5 = eighth notes). velocity: Velocity of all notes (0-1, default 0.7).
Returns notes created, voice assignment, total duration.
| Name | Required | Description | Default |
|---|---|---|---|
| melody | No | 60,62,64,65,67,65,64,62 | |
| voices | No | ||
| velocity | No | ||
| split_mode | No | alternate | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| note_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains split modes with concrete examples, defaults, and return values ('notes created, voice assignment, total duration'). However, it doesn't disclose error behavior (e.g., insufficient tracks) or side effects on existing data, leaving minor gaps in 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 well-structured with a clear one-line purpose, a brief explanatory paragraph, and a bulleted parameter list. The historical context is interesting but consumes precious space; it could be trimmed without losing functional value. Overall, it's concise relative to the 8 parameters covered.
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 all parameters, explains the concept, and mentions return values. It lacks explicit prerequisites (e.g., need for an existing AU with note tracks) and error scenarios, but the default behavior for unit_index is noted. This is nearly complete for a creation tool of moderate 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 coverage is 0%, but the description compensates fully by explaining every parameter: melody format, voices range, split_mode options with distribution examples, unit_index fallback, track_index usage, start_beat, note_duration with default, and velocity range. This is exemplary 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?
The description clearly states the tool creates a hocket, defined as 'a single melodic line split between voices/tracks'. This specific verb+resource pairing distinguishes it from sibling creation tools like create_chorale or create_counterpoint. The historical context further clarifies the musical technique.
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 a hocket is and how the tool works, but provides no explicit guidance on when to choose this tool over alternatives. Sibling tools like create_chorale or create_counterpoint exist for similar melodic splitting tasks, and the description doesn't delineate scenarios where hocket is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_house_arrangementA
Create a full house music arrangement — drums + bass + stabs across 3 tracks in one call.
House music arrangement with all elements locked together:
Track 0: Drums — four-on-the-floor kick, open hats on off-beats, clap on 2+4
Track 1: Bass — off-beat sustained bass between kicks
Track 2: Stabs — short minor chord stabs on beats 1 and 3, with occasional off-beat stabs
At 124 BPM (default), this creates the classic Chicago/Detroit house feel. The bass and drums lock — bass hits exactly between kicks, creating the "untz-untz" groove. Stabs provide harmonic movement on top.
bpm: Tempo (115-135, default 124 = classic house). bars: Arrangement length (4-32, default 8). root: Root note for bass and stabs. octave: MIDI octave for bass (2 = C2=36). unit_index: AU index with note tracks. drum_track / bass_track / stab_track: Track indices.
Returns notes created per track and total.
Example: create_house_arrangement(bpm=124, root="C", bars=8) create_house_arrangement(bpm=128, root="F#", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| stab_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 offers rich detail about the musical pattern (four-on-the-floor kick, off-beat bass, chord stabs) and states that it returns notes created per track. However, it does not disclose whether existing notes are overwritten, whether the target tracks must pre-exist, or any side effects. This is a notable 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?
The description is well-structured with a lead summary, detailed element breakdown, parameter explanations, and usage examples. It is longer than minimal but each section adds value. The examples at the end are practical and concise. No wasted sentences, though the bullet list partially repeats the initial summary.
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 10-parameter tool, the description covers the creative logic, musical style, parameter meanings, defaults, and return value. The output schema covers return details, so not describing it fully is acceptable. Missing information includes prerequisites (e.g., whether tracks must exist) and overwrite behavior, which prevents a perfect score.
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, but the tool description compensates by explaining most key parameters: bpm with range and default, bars with range, root as 'root note for bass and stabs', octave mapping to MIDI, and track index meanings. However, it omits 'velocity' and 'start_beat', so not all parameters receive the same level of semantic explanation.
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: 'Create a full house music arrangement — drums + bass + stabs across 3 tracks in one call.' It specifies the verb (create), the resource (house music arrangement with drums/bass/stabs), and the scope (3 tracks), distinguishing it from sibling genre arrangement tools like create_techno_arrangement or create_afrobeat_arrangement.
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 a full house arrangement with a classic Chicago/Detroit feel is needed at 124 BPM. However, it does not explicitly mention alternatives or when not to use this tool, so it lacks exclusions. This gives clear context but no direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_impactA
Create an impact — single hit transition element for drops and section changes.
Generates a single sustained note with type-specific pitch, duration, and velocity. Essential for EDM transitions: the "hit" that lands after a riser/build-up.
impact_type: Type of impact:
"sub_boom" — deep sub bass hit (C1, long decay, dark)
"impact_hit" — mid-range punch (C3, medium decay, aggressive)
"downlifter" — descending pitch from high to low (glissando fall)
"sub_drop" — lowest sub with long tail (B0, very long, cinematic)
"punch" — short bright hit (C5, short decay, snappy)
unit_index: AU index (-1 = find first AU with note tracks). track_index: Note track index. start_beat: Position in beats where the impact lands. pitch: Base MIDI pitch (default 36 = C2, overridden by type). length_beats: Duration in beats (default 4 = one bar). velocity: Hit velocity (0-1, default 0.9 = loud).
Returns notes created and impact parameters.
Example:
Sub boom on the downbeat
create_impact(start_beat=0, impact_type="sub_boom")
Downlifter after riser
create_impact(start_beat=4, impact_type="downlifter", length_beats=2)
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| impact_type | No | sub_boom | |
| track_index | No | ||
| length_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 for behavioral disclosure. It explicitly describes the output as 'single sustained note with type-specific pitch, duration, and velocity,' details each impact_type's sonic character, and notes that pitch is overridden by type. It also clarifies the return value. However, it does not discuss potential side effects like whether it modifies existing data or requires a pre-existing 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 well-structured with a concise opening, bulleted parameter list, return note, and two examples. No fluff; each section adds 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?
For a 7-parameter tool with no schema descriptions or annotations, the description covers all parameters, provides examples, and describes return values. The only minor omission is an explicit note on whether existing notes are affected, but the create intent 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?
Schema description coverage is 0%, so the description's detailed parameter documentation is essential. It explains every parameter, including the impact_type enum values with pitch/character, unit_index behavior, defaults, and the meaning of velocity. This fully compensates for the schema's lack of 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 opens with 'Create an impact — single hit transition element for drops and section changes', giving a specific verb, resource, and purpose. It further distinguishes the tool from siblings like create_riser/build-up by clarifying the 'hit' after a build-up.
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 states 'Essential for EDM transitions: the "hit" that lands after a riser/build-up,' providing clear context for when to use this tool. However, it does not explicitly name alternative tools or when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_instrument_trackA
Create a new instrument audio unit with a Tape device and an audio track.
This is required for audio playback — the Tape device reads audio regions and outputs sound. The instrument AU is connected to the output AU's bus.
name: Display name for the instrument (default "Tape"). Returns the unit_index and track_index for use with place_audio_region.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 creates an instrument AU and track, connects to the output AU's bus, and returns unit_index and track_index. However, it does not mention potential side effects, prerequisites (e.g., engine running), or whether the operation is reversible, which would be valuable for an agent to understand 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 three sentences, front-loading the core purpose, then adding a parameter note and return value info. Every sentence contributes useful information without redundancy or unnecessary 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 single-parameter creation tool, the description covers the main aspects: what it creates, why it's needed, and what it returns. It lacks explicit mention of prerequisites or error conditions, but given the simplicity and the presence of an output schema, the description is largely complete for an agent to select and invoke the tool 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 only a parameter named 'name' with no description. The description compensates by explaining it is a 'Display name for the instrument (default "Tape")' and also documents the return values for use with place_audio_region. This adds meaningful context 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?
The description uses a specific verb 'Create' and identifies the resource as 'a new instrument audio unit with a Tape device and an audio track'. It also explains why this is needed ('required for audio playback'), clearly distinguishing it from sibling tools like create_synth_track or create_audio_track by focusing on the Tape device and output bus connection.
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: 'This is required for audio playback — the Tape device reads audio regions and outputs sound.' This implies the tool is essential for setting up playback, but it does not explicitly name alternatives or state when not to use it, which 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.
mcp_opendaw_create_irish_tradA
Create an Irish traditional music accompaniment — bodhrán + feet for session tunes.
Irish traditional music (trad) is defined by its tune types, each with a characteristic meter and feel. The bodhrán (frame drum) and feet stomp provide the rhythmic foundation in a session. Unlike most percussion patterns, Irish accompaniment is minimal — the rhythm is carried by the melody's phrasing, and the bodhrán supports rather than drives.
tune types: "reel" — 4/4, straight 8th notes. The most common tune type. Bodhrán: downbeat + offbeat pattern. 4 beats per bar. 2 bars per phrase (AA pattern). Bright, driving. "jig" — 6/8, triplet feel. Groups of 3 eighth notes. Bodhrán: accent on beat 1 and 4 (the two downbeats of 6/8). 2 bars per phrase. Lilting, rolling feel. "hornpipe" — 4/4, dotted rhythm. 8ths are swung (long-short). Bodhrán: similar to reel but with swung feel. 2 bars per phrase. Bouncy, maritime feel. "slip_jig" — 9/8, triplet feel in 3 groups of 3. Rare, ethereal. Bodhrán: accent on 1, 4, 7. 2 bars per phrase. Dancing on air, Turlough O'Carolan style. "polka" — 2/4, fast and punchy. Common in Kerry/Sliabh Luachra. Bodhrán: strong 1 and 2. Simple, driving. 2 bars per phrase. Fast dance, march-like. "slide" — 12/8, similar to jig but faster and longer groups. Bodhrán: accent on 1, 4, 7, 10. 2 bars per phrase. Sliabh Luachra region. Fast, lilting.
Args: tune_type: Tune type (reel, jig, hornpipe, slip_jig, polka, slide). bars: Number of bars (4-32, even). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. bodhran_pitch: Bodhrán (frame drum) MIDI pitch (36 = C1). feet_pitch: Feet stomp MIDI pitch (40 = E1). hh_pitch: Hi-hat/brush MIDI pitch (42 = F#1).
Returns notes created, tune type info, meter, and pattern breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| hh_pitch | No | ||
| velocity | No | ||
| tune_type | No | reel | |
| feet_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| bodhran_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does describe the musical behavior (downbeat/offbeat patterns per tune type) and return value ('Returns notes created, tune type info, meter, and pattern breakdown'). However, it does not state operational side effects such as whether the tool appends to or replaces existing notes on the specified track, or what happens with invalid inputs.
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 long, but the length is largely devoted to necessary tune-type distinctions and parameter semantics, structured under clear headings. The opening sentence immediately states purpose, and each bullet for tune types adds selection-relevant information rather than 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 9 parameters, no annotations, and an output schema present, this description is unusually complete: it covers all parameters, explains the style and all tune-type variants, and states the return payload. It could mention prerequisites about the target track, but overall it gives an agent enough 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 'Args' block provides a semantic description for every parameter, including ranges ('bars: Number of bars (4-32, even)'), value ranges ('velocity: Base velocity 0-1'), and default MIDI pitches. The schema itself has zero descriptions, so this completely compensates for the 0% schema coverage, especially the detailed tune_type 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 opens with 'Create an Irish traditional music accompaniment — bodhrán + feet for session tunes,' which is a specific verb+resource that clearly distinguishes this from sibling creation tools like create_reggae_percussion or create_tala. It further enumerates six tune types, reinforcing the focused 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 that Irish trad is defined by tune types and that the accompaniment is minimal and supportive, providing clear contextual when-to-use guidance. However, it does not explicitly name alternative tools or state when not to use this tool, though the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_isorhythmA
Create an isorhythm — repeating rhythm (talea) × repeating pitch series (color).
Isorhythm separates rhythm and pitch into two independent cycles. The talea (rhythmic pattern) and color (pitch series) repeat independently, creating constantly shifting relationships as they go in and out of phase. When talea and color have different lengths, the pattern doesn't fully repeat until the least common multiple of both lengths.
Found in medieval motets (Machaut), and heavily influenced 20th-century composers — Messiaen, Boulez, Stockhausen. Distinct from ostinato, which repeats rhythm and pitch together as one unit.
talea: Comma-separated note durations in beats (the repeating rhythm). e.g. "1,1,0.5,0.5,1" = quarter, quarter, eighth, eighth, quarter. color: Comma-separated MIDI pitches (the repeating pitch series). e.g. "60,62,64,65" = C,D,E,F cycling independently of rhythm. repeats: Number of full talea cycles (1-16, default 3). velocity: Velocity of all notes (0-1, default 0.7). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the isorhythm begins.
Returns notes created, talea/color lengths, phase cycle length, total duration.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | 60,62,64,65,67,65,64,62 | |
| talea | No | 1,1,0.5,0.5,1,0.5,0.5,1 | |
| repeats | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It thoroughly explains the independent cycling of talea and color, the least-common-multiple repetition, and the effect of parameters like repeats and start_beat. It also summarizes return values. A minor gap is not explicitly stating whether existing notes are replaced or appended.
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 longer than typical, but well-structured with paragraphs and line breaks. It is front-loaded with the core definition, uses examples efficiently, and the historical context adds richness without excess verbiage.
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 complexity of the isorhythm concept and the fully optional parameters, the description covers the algorithm, all parameters, and output summary. An output schema is present, reducing the need to detail return values. The description provides sufficient context for correct selection and 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 input schema has 0% description coverage, so the description fully compensates by defining every parameter with examples and ranges. For instance, talea and color get comma-separated format examples, and unit_index gets special '-1 = find first AU with note tracks' 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?
The description opens with 'Create an isorhythm — repeating rhythm (talea) × repeating pitch series (color),' clearly stating the verb and resource. It also distinguishes the tool from ostinato, which is a direct alternative, by explaining that ostinato repeats rhythm and pitch together.
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 musical concept and explicitly contrasts with ostinato: 'Distinct from ostinato, which repeats rhythm and pitch together as one unit.' This gives a clear alternative and exclusion, though it doesn't enumerate all sibling rhythm tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_jazz_arrangementA
Create a full jazz arrangement — swing drums + walking bass + comping piano + horn across 4 tracks.
Jazz with swing feel and ii-V-I harmony — fundamentally different from all other arrangements:
Track 0: Drums — swing ride pattern (spang-a-lang), brush snare ghost notes, comping on bass drum. The signature jazz ride cymbal pattern with swung 8th notes — the triplet feel that defines jazz.
Track 1: Bass — walking bass: quarter notes that walk through the chord changes using chord tones and approach notes. ii-V-I aware, creating smooth voice leading through the changes.
Track 2: Piano — comping: syncopated chord stabs using shell voicings (root + third + seventh) and rootless voicings. Frequent rests — comping is about space as much as notes.
Track 3: Horn — lead melody: a simple bluesy head over the changes, using blue notes (flatted thirds and fifths) and swing.
At 120 BPM (default), this creates a medium-up swing feel. The ii-V-I progression is the fundamental jazz chord change — every other genre uses different harmony. Swing 8ths (triplet feel) is the rhythmic signature that separates jazz from all straight-time genres.
bpm: Tempo (60-200, default 120 = medium swing). bars: Arrangement length (4-32, default 8). Jazz benefits from longer forms. root: Root note (F is a classic jazz key — great for horns). octave: MIDI octave for bass (2 = F2=41, standard jazz bass register). unit_index: AU index with note tracks. drum_track / bass_track / piano_track / horn_track: Track indices.
Returns notes created per track and total.
Example: create_jazz_arrangement(bpm=120, root="F", bars=8) create_jazz_arrangement(bpm=180, root="Bb", bars=12)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| horn_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| piano_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 musical content in detail (ride pattern, walking bass, comping, horn lead) and mentions 'Returns notes created per track and total.' However, it does not state whether existing notes on the target tracks are overwritten, appended, or if any other side effects occur, leaving operational behavior ambiguous.
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 well-structured with sections and line breaks, but it is verbose. It repeatedly emphasizes the 'fundamentally different' and 'signature' jazz elements across multiple sentences (e.g., re-explaining triplet feel and ii-V-I harmony). Some educational content could be trimmed without losing invocation-relevant 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?
For an 11-parameter tool with no annotations, the description covers the core functionality and most parameters, plus a brief return-value note. However, it leaves out velocity and start_beat parameters, does not explain behavior with existing notes, and relies on an unseen output schema to clarify return structure. These gaps make it incomplete for fully 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 coverage is 0%, so the description must compensate. It explains most parameters with added meaning: bpm range (60-200), bars range (4-32), root note example (F for horns), octave example (F2=41), unit_index purpose, and the four track indices. However, it omits velocity and start_beat entirely, which are present in the schema with defaults but 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 opens with a specific verb+resource+scope: 'Create a full jazz arrangement — swing drums + walking bass + comping piano + horn across 4 tracks.' It clearly distinguishes this from sibling genre arrangement tools by emphasizing jazz-specific elements like swing feel and ii-V-I harmony, and by naming the exact track roles.
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 states 'Jazz with swing feel and ii-V-I harmony — fundamentally different from all other arrangements' and later reiterates that swing 8ths and ii-V-I set jazz apart. This implies when to use this tool (when a jazz arrangement is needed) and contrasts it with other arrangements, though it does not name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_konokolB
Create Indian Carnatic konokol (solkattu) — vocal percussion as MIDI.
Konokol (also spelled konnakkol) is the South Indian art of vocal percussion. Syllables represent rhythmic patterns: ta, ka, di, mi, thom, nam, ghu, dhi, khatam. Each syllable maps to a specific drum sound. This is the rhythmic foundation of all Carnatic music.
Styles (tala structures):
adi_tala: 8-beat cycle (most common). Structure: 4+2+2. Syllables: ta-ka-dhi-mi ta-ka-dhi-mi ta-ka-ta-ka. The foundational tala of Carnatic music.
roopaka_tala: 6-beat cycle (3/4). Structure: 3+3. Syllables: ta-ka-dhi ta-ka-dhi-mi. Used in lighter compositions, varnams.
khanda_chapu: 5-beat cycle. Structure: 2+3. Syllables: ta-ka ta-ka-ta. Asymmetric, flowing feel. Common in kritis.
mishra_chapu: 7-beat cycle. Structure: 3+2+2. Syllables: ta-ki-ta ta-ka ta-ka. Lyrical, song-like rhythm. Used in padams.
triputa_tala: 7-beat cycle (3+2+2 variant). Syllables: ta-ka-dhi-mi ta-ka ta. Alternative 7-beat structure.
jhampa_tala: 10-beat cycle. Structure: 4+2+4. Syllables: ta-ka-dhi-mi ta-ka ta-ka-dhi-mi. Used in javalis and tillanas.
GM percussion mapping (Indian fusion approach): 36 (kick) → thom, ghu (bass drum — low/open tones) 38 (snare) → nam, dhi (sharp, crisp) 42 (closed hat) → ta, ka (high, crisp) 43 (high floor tom) → mi (mid) 45 (low tom) → khatam (rolled)
Creates konokol notes on track_index. Includes syllable text in the result for reference.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | adi_tala | |
| cycles | No | ||
| velocity | No | ||
| tempo_bpm | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full disclosure burden. It discloses the GM note mapping (36, 38, 42, 43, 45), the fact that notes are placed on track_index, and that syllable text is included in the result. It does not reveal whether notes are appended or overwritten, or how start_beat/unit_index behave, leaving some behavioral ambiguity.
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 uses a clear header plus bulleted sections for styles and mapping. While relatively long, the material is relevant and organized, and the opening line front-loads the purpose. No repetition of schema field titles or redundant 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 complexity (7 parameters, no annotations, but output schema exists), the description covers the domain thoroughly but leaves operational questions open: the meaning of unit_index, how start_beat is interpreted, whether cycles is a repeat count, and what the output schema contains beyond syllable text. It is valuable 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 coverage is 0%, so the description is responsible for parameter semantics. It thoroughly documents the 'style' parameter by listing all valid values and their structures, and it mentions 'track_index' as the target track. However, 'cycles', 'velocity', 'tempo_bpm', 'start_beat', and 'unit_index' are left undefined, leaving most parameters ambiguous for an agent.
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 'Create Indian Carnatic konokol (solkattu) — vocal percussion as MIDI' and later states 'Creates konokol notes on track_index', clearly identifying the verb and resource. It does not explicitly compare to sibling tools like create_tala, but the highly specific musical terminology and style list make the tool's unique purpose 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?
No explicit when-to-use or alternatives are stated; however, the detailed explanation of konokol, tala structures, and the phrase 'This is the rhythmic foundation of all Carnatic music' imply the intended context. It lacks an explicit 'use when...' and does not distinguish from the many sibling creation tools like create_tala or create_drum_pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_korean_percussionA
Create a Korean traditional percussion ensemble — nongak (farmers' music).
Korean percussion (samul nori / nongak) uses four instruments representing weather elements:
JANGGU — Hourglass drum with two heads: chwe (left, low, deep) and kyeongbang (right, high, sharp). The most versatile Korean drum. Plays complex interlocking patterns with both hands simultaneously.
BUK — Barrel drum. Deep bass tone. Plays steady downbeats.
KKWAENGGWARI — Small hand gong. High, piercing metallic. The lead instrument — player (sangsoe) calls patterns and signals changes.
JING — Large gong. Deep, resonant, sustained. Plays sparse accents to mark phrase boundaries.
The four instruments represent: janggu = rain, buk = clouds, kkwaenggwari = thunder, jing = wind (lightning in some traditions).
styles: "nongak" — Farmers' music (rural tradition). Steady, driving. Janggu plays the basic nanajanggu pattern (alternating chwe/kyeong on 8th grid). Buk on downbeats. Kkwaenggwari on offbeats with accented calls. Jing on phrase starts. "samul_nori" — Modern stage version (1978, Kim Duk-soo). Faster, denser, more dramatic. Janggu plays 16th patterns with ghost notes. Kkwaenggwari has call-and-response. "binari" — Ritual/shaman opening piece. Slow, ceremonial. Long jing resonance. Sparse janggu. Kkwaenggwari calls. Builds from near silence. "utdari_pungnyu" — Court music style (upper register). Elegant, refined. Buk steady, janggu delicate 8ths, kkwaenggwari sparse. Jing on every 4 bars. "yeongnam_folk" — Yeongnam region folk style (Gyeongsang). Rough, energetic. Buk on 1+3, janggu syncopated, kkwaenggwari dense. Working-class feel.
Args: bars: Pattern length (4-32, even). style: Style name (nongak, samul_nori, binari, utdari_pungnyu, yeongnam_folk). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. janggu_chwe_pitch: Janggu left head (low) MIDI pitch (35 = B0). janggu_kyong_pitch: Janggu right head (high) MIDI pitch (42 = F#1). buk_pitch: Buk (barrel drum) MIDI pitch (36 = C1). kkwaenggwari_pitch: Kkwaenggwari (small gong) MIDI pitch (54 = G#1). jing_pitch: Jing (large gong) MIDI pitch (48 = C2).
Returns notes created, instrument breakdown, and style info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | nongak | |
| velocity | No | ||
| buk_pitch | No | ||
| jing_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| janggu_chwe_pitch | No | ||
| janggu_kyong_pitch | No | ||
| kkwaenggwari_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains the musical behavior of the generated ensemble (instrument roles, style-specific patterns) and states return values ('Returns notes created, instrument breakdown, and style info'). However, it does not disclose operational side effects such as whether existing notes are overwritten, whether a new region is created, or what happens if the specified track/unit is invalid. This is a notable 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?
The description is well-structured with clear sections (introduction, instruments, styles, Args), and the opening sentence is front-loaded. However, it is excessively long, with cultural details like elemental associations and historical notes that are not strictly necessary for invoking the tool. While educational, it could be trimmed without losing operational guidance.
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 musical domain, all parameters, styles, and return values, making it highly informative for a complex generation tool. It does not explicitly address operational context (e.g., track/unit setup or side effects), but the output schema likely handles return structure, and the tool's name and sibling set provide some context. Overall, it is nearly 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?
Schema coverage is 0%, but the description includes an 'Args' section that explains every one of the 11 parameters. For example, it clarifies that 'janggu_chwe_pitch' is the left low head, and it defines each style. This adds substantial meaning beyond the bare schema titles, fully compensating for the lack of property 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 opening line states exactly what the tool does: 'Create a Korean traditional percussion ensemble — nongak (farmers' music).' The verb 'create' and resource 'Korean traditional percussion' make the purpose unambiguous, and the detailed instrument and style descriptions further distinguish it from other percussion tools in the sibling list.
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 rich context for when to use the tool (Korean traditional percussion) and includes detailed style descriptions that guide style selection (e.g., 'nongak' for rural, driving rhythms, 'samul_nori' for modern stage). However, it never explicitly contrasts with alternative percussion tools (like taiko or djembe), leaving the agent to infer boundaries from the name and content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_liquid_dnb_arrangementB
Create a full liquid drum & bass arrangement across 4 tracks.
Liquid DnB is the smooth, melodic cousin of DnB. Instead of Reese bass and Amen breakbeat fury, liquid uses:
Track 0: Smooth breakbeat (gentler ghost notes, more flowing hats)
Track 1: Melodic sub-bass (jazzy movement, not just root stabs)
Track 2: Lush extended chords (maj7/min9, not plain triads)
Track 3: Soulful jazz-influenced lead melody
Think LTJ Bukem, Calibre, High Contrast, Hospital Records.
bpm: Tempo (160-185, default 174). bars: Arrangement length (4-32, default 8). root: Root note (default F = classic liquid key). octave: Bass octave (2 = sub-bass range). velocity: Base velocity (default 0.75 = smoother than DnB's 0.85).
Example: create_liquid_dnb_arrangement(bpm=174, root="F", bars=8) create_liquid_dnb_arrangement(bpm=170, root="Am", bars=16, velocity=0.7)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| pad_track | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| melody_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states that it creates a full arrangement across 4 tracks but does not clarify whether existing content on those tracks is overwritten, whether an empty project is required, or whether there are side effects. Parameters like unit_index and start_beat hint at placement but aren't explained, leaving critical operational information missing.
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 well-structured with clear sections: purpose, style explanation, track breakdown, parameter list, and examples. It is a bit long but each section contributes useful context. The bullet-list format aids scanning, and the examples demonstrate typical usage. No redundant or filler content 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?
Given the tool's complexity (11 parameters, no schema descriptions, no annotations), the description is incomplete. It covers the musical intent and core parameters but omits functional parameters (track routing, start_beat, unit_index) and behavioral details. While an output schema exists so return values aren't needed, operational prerequisites and parameter semantics remain under-explained.
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 bpm, bars, root, octave, and velocity with ranges and defaults, which adds value over the bare schema. However, six parameters (pad_track, bass_track, drum_track, start_beat, unit_index, melody_track) are not explained at all, and schema_description_coverage is 0%. The track descriptions imply a mapping to these but do not explicitly connect them, leaving a significant gap for the agent.
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+resource: 'Create a full liquid drum & bass arrangement across 4 tracks.' It clearly distinguishes from sibling genre arrangement tools by specifying the liquid DnB subgenre and detailing each track's role (smooth breakbeat, melodic sub-bass, lush extended chords, jazz-influenced lead). References to artists (LTJ Bukem, Calibre) further anchor the style.
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 by contrasting liquid DnB with standard DnB ('Instead of Reese bass and Amen breakbeat fury...') and lists track-specific attributes. This strongly implies when to use this tool versus other genre arrangement tools. However, it does not explicitly name alternative tools or state when not to use it, so the guidance remains implicit rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_lofi_arrangementA
Create a full lofi hip-hop arrangement — boom-bap drums + jazzy chords + mellow bass + sleepy melody.
Lofi hip-hop (Nujabes / J Dilla / chillhop) — warm, dusty, mellow:
Track 0: Drums — boom-bap: kick on 1 and "and-a" of 2, snare on 2 and 4, laid-back 16th hi-hat with swing. No rush — behind the beat. Vinyl crackle character (lower velocity, humanized).
Track 1: Bass — mellow root notes with occasional octave/fifth walks. Long, sustained, warm. No aggression.
Track 2: Chords — jazzy 7th/9th voicings (maj7, min9, dom9) with soft attacks and gentle arpeggiation. The harmonic signature of lofi: extended chords, not triads.
Track 3: Melody — sparse, sleepy pentatonic phrases. Long notes, space between phrases. The "nodding off" quality.
At 78 BPM (default), this creates the classic chillhop pocket — slow, warm, behind-the-beat. ii-V-I jazz-influenced harmony (Dm7-G7-Cmaj7 in F major) gives that nostalgic, bittersweet quality.
bpm: Tempo (70-90, default 78 = chillhop sweet spot). bars: Arrangement length (4-16, default 8). root: Root note (F is a classic lofi key — warm, midrange). octave: MIDI octave for bass (3 = F3=53, warm lofi bass). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / melody_track: Track indices.
Returns notes created per track and total.
Example: create_lofi_arrangement(bpm=78, root="F", bars=8) create_lofi_arrangement(bpm=82, root="D", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No | ||
| melody_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the return value ('Returns notes created per track and total'), describes humanization and swing characteristics ('laid-back 16th hi-hat with swing', 'lower velocity, humanized'), and explains how parameters like BPM and root affect the output. However, it does not mention potential side effects like whether existing notes on the target tracks are overwritten, which would be useful.
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 structured logically: purpose first, then stylistic details, parameter explanations, return info, and examples. It is longer than strictly necessary but the musical detail is arguably essential for achieving the intended genre. The front-loaded first line ensures immediate clarity.
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 (11 parameters, no annotations, no schema descriptions), the description is impressively complete. It covers the musical genre, per-track behavior, parameter ranges, and return values, and includes examples. It lacks explicit notes on velocity and start_beat behavior and does not detail the output schema content, but overall it equips an agent to invoke the tool correctly for typical lofi generation requests.
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%, but the description compensates with prose explanations for most parameters: bpm, bars, root, octave, unit_index, and the track index parameters. It provides meaningful defaults and rationale (e.g., '78 = chillhop sweet spot'). However, velocity and start_beat are not described, leaving a gap for those two 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 opens with a specific verb and resource: 'Create a full lofi hip-hop arrangement' and enumerates the components (boom-bap drums, jazzy chords, mellow bass, sleepy melody). This clearly distinguishes the tool from siblings like create_boom_bap or create_jazz_arrangement, which target narrower or different outputs.
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: it is for generating a complete lofi hip-hop arrangement with specific stylistic characteristics and parameter defaults (e.g., 78 BPM, root F). It does not explicitly mention when not to use it or name alternatives, but the genre-specific details and examples make the intended use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_l_system_melodyA
Create a melody using an L-system (Lindenmayer system) — a deterministic rewriting system.
L-systems generate self-similar, fractal patterns through recursive production rules. Each symbol in the expanded string maps to a scale step interval. The cumulative sum of intervals determines the melodic contour.
Unlike Markov chains (stochastic, memory-based) or random walk (zero-order), L-systems are fully deterministic — same axiom + rules + iterations always produce the same melody. This makes them ideal for:
Self-similar melodic structures (fractal music)
Deterministic generative composition
Algorithmic music based on mathematical systems
Presets: fibonacci — Fibonacci word (A->AB, B->A), golden ratio self-similarity cantor — Cantor set (A->ABA, B->BBB), gaps and self-similar structure dragon — Dragon curve (A->A+B, B->A-B), jagged contour koch — Koch snowflake (A->A+A-A-A+A), angular melody sierpinski — Sierpinski triangle (A->BA, B->BA), binary pattern
Custom: provide axiom, rules (JSON), and symbol_map (JSON) to define your own L-system.
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, phrygian, lydian, mixolydian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues). bars: Number of bars (1-32). octave: Starting MIDI octave (1-6). preset: Preset name (fibonacci, cantor, dragon, koch, sierpinski). axiom: Custom axiom string (overrides preset). rules: Custom rules as JSON {"A": "AB", "B": "A"}. symbol_map: Custom symbol-to-interval map as JSON {"A": 1, "B": -1}. iterations: Number of rule applications (1-8). Higher = more complex. duration: Note duration in beats (0.0625-4.0). velocity: Base velocity 0-1. rest_symbol: Symbol that produces a rest (skip note, advance position). unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, L-system string length, and fractal statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| axiom | No | ||
| rules | No | ||
| scale | No | minor | |
| octave | No | ||
| preset | No | fibonacci | |
| duration | No | ||
| velocity | No | ||
| iterations | No | ||
| start_beat | No | ||
| symbol_map | No | ||
| unit_index | No | ||
| rest_symbol | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the deterministic behavior, the meaning of symbols and intervals, parameters' effects, and the return value. However, it does not explicitly state side effects like whether the tool appends notes to an existing region or overwrites, leaving some ambiguity 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 long but well-structured, starting with the core definition, then explaining the algorithm, use cases, presets, and a complete Args list. It is front-loaded and every section earns its place, though slight trimming could make it more concise without losing 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?
Given 15 parameters, no annotations, and the presence of an output schema, the description is exceptionally complete. It covers the mathematical background, presets, custom options, all parameters, and return value, providing all necessary context for an agent to select and 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?
Schema description coverage is 0%, so the description is essential. It provides a clear one-line explanation for every parameter (root, scale, bars, octave, preset, axiom, rules, symbol_map, iterations, duration, velocity, rest_symbol, unit_index, track_index, start_beat), fully compensating for the schema's lack of 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 'Create a melody using an L-system (Lindenmayer system)—a deterministic rewriting system,' which is a specific verb+resource+approach. It distinguishes itself from siblings by contrasting deterministic L-systems with Markov chains and random walks, clarifying its unique role among melody generation 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 contrasts L-systems with Markov chains and random walk, noting that L-systems are fully deterministic, and lists ideal use cases such as self-similar structures and deterministic generative composition. This gives clear guidance on when to choose this tool over alternatives like create_markov_melody or create_random_walk_melody.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_markov_melodyA
Create a melody using a Markov chain over scale-degree intervals.
First-order (or higher) Markov chain: the next interval depends on the current (or previous N) interval(s) via a transition probability matrix. This produces melodies with stylistic memory — the interval patterns characteristic of a genre or composer emerge naturally.
Unlike random_walk (zero-order: each step independent of history), Markov chains capture interval-to-interval tendencies:
A small ascending interval tends to be followed by another small one
A large leap tends to be followed by a step back (regression to mean)
Specific interval sequences define melodic "style"
The transition matrix can be:
Default: built-in weights favoring smooth motion (steps > skips > leaps)
Custom: user-provided interval weights as JSON
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, phrygian, lydian, mixolydian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues). bars: Number of bars (1-32). octave: Starting MIDI octave (1-6). order: Markov chain order (1 or 2). Order 1 = depends on current interval. Order 2 = depends on last 2 intervals. interval_weights: JSON string of custom transition weights. If empty, uses built-in weights. Format for order 1: {"-3": {"-3": 0.1, "-2": 0.2, "-1": 0.3, "0": 0.1, "1": 0.2, "2": 0.1}, "-2": {...}, ...} Keys are interval sizes (-7 to +7 scale steps). duration: Note duration in beats (0.0625-4.0). velocity: Base velocity 0-1. seed: PRNG seed for reproducibility. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, transition statistics, and seed.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| seed | No | ||
| order | No | ||
| scale | No | minor | |
| octave | No | ||
| duration | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| interval_weights | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the algorithmic behavior (Markov chain with transition matrix), the effect (melodies with stylistic memory), and the output ('Returns notes created, transition statistics, and seed'). It does not explicitly state non-destructiveness, but the 'create' verb and output description imply it. This is substantial but could be more explicit about 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?
The description is structured with a clear opening, an explanatory paragraph on Markov chains, and a parameter list. It is lengthy but every section earns its place given the tool's complexity and the need to compensate for sparse schema descriptions. It is not redundant; the example for interval_weights is particularly 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 12-parameter generative tool with no annotations and an existing output schema, the description is comprehensive. It covers the algorithm, parameter semantics, output, and a comparison to a sibling tool. There are few gaps; it even explains the significance of Markov order and the default weight behavior.
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%, but the description fully compensates with an 'Args' section explaining all 12 parameters. It provides details like the interval_weights JSON format with an example, root note naming, scale options, and order semantics. This goes far beyond the schema's titles 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 opens with a specific verb+resource+method: 'Create a melody using a Markov chain over scale-degree intervals.' It clearly distinguishes from siblings like random_walk by contrasting zero-order vs higher-order behavior, making the tool's function unique.
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 names an alternative: 'Unlike random_walk (zero-order: each step independent of history), Markov chains capture interval-to-interval tendencies.' It also explains when Markov chains are appropriate (stylistic memory) and covers default vs custom weight usage, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_melodic_polyrhythmA
Create a polyrhythm — N notes evenly spaced across M beats.
A polyrhythm places numerator notes evenly across denominator beats, creating cross-rhythms against the main pulse. 3:4 = triplet feel, 5:4 = quintuplet, 7:4 = septuplet, 3:2 = half-note triplets.
The notes ascend or descend through the specified scale, creating a melodic polyrhythm rather than just rhythmic hits. This is the foundation of jazz cross-rhythm, prog-rock metric modulation, African cross-pulse, and contemporary classical writing.
Args: unit_index: Audio unit index track_index: Note track index numerator: Number of notes to fit across denominator beats (2-9, default 3). This is the "against" number. denominator: Number of beats to span (2-8, default 4). This is the "base" pulse. bars: Number of times to repeat the polyrhythm cycle (1-8, default 1). pitches: Comma-separated MIDI pitches for custom note selection. If provided, overrides scale-direction generation. Notes cycle through this list. velocity: Base velocity (0-1, default 0.8) velocity_pattern: Velocity across the polyrhythm — "constant": same velocity "accent": accent first note of each cycle "fade": linear fade across all notes "wave": sine wave velocity pattern start_beat: Position in beats where polyrhythm starts (default 0.0) direction: Pitch direction when using scale generation — "up": ascending through scale "down": descending through scale "alternate": up then down per cycle scale: Scale for pitch generation ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues", "chromatic") root: Root note for scale (C, C#, D, ... B)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| scale | No | major | |
| pitches | No | 60 | |
| velocity | No | ||
| direction | No | up | |
| numerator | No | ||
| start_beat | No | ||
| unit_index | Yes | ||
| denominator | No | ||
| track_index | Yes | ||
| velocity_pattern | No | constant |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains key generative behaviors: notes ascend/descend through a scale, the pitches parameter overrides scale generation, and velocity patterns (constant, accent, fade, wave) alter output. However, it does not disclose whether the operation overwrites existing notes on the target track or is purely additive, a notable side-effect gap for a creation 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 moderately long but well-organized: definition, musical rationale, then a clear Args list. Each sentence adds value—examples like '3:4 = triplet feel' aid understanding, and the Args block is systematic. It could be slightly tighter by trimming the trailing musical-context sentence, but it remains focused and non-redundant.
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 (12 parameters, many with domain-specific meaning) and a 0% schema coverage, the description fully covers every parameter, provides defaults and ranges, and supplies genre/usage context. An output schema exists, so not describing return values is acceptable. The agent can confidently select and invoke this tool based on 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?
Schema description coverage is 0%, so the description must compensate entirely—and it does. The Args section defines all 12 parameters, including ranges, defaults, and meaningful semantics: numerator as 'against' number, denominator as 'base' pulse, pitches as an override, and full enumerations for velocity_pattern and direction. This far exceeds minimal compensation and gives the agent everything needed to invoke the 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 opens with a specific verb+resource: 'Create a polyrhythm — N notes evenly spaced across M beats.' It further clarifies that this is a 'melodic polyrhythm rather than just rhythmic hits,' directly distinguishing it from sibling tools like create_polyrhythm or create_hemiola. The musical context and example ratios reinforce a clear, 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 strong contextual guidance—explaining 3:4 as triplet feel, 5:4 as quintuplet, and mentioning jazz cross-rhythm, prog-rock metric modulation, African cross-pulse, and contemporary classical writing. However, it does not explicitly name alternatives or state when NOT to use this tool (e.g., 'for rhythmic-only polyrhythms use create_polyrhythm'), so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_melodyA
Create a melody from a scale and rhythmic pattern — one call instead of 10-30 create_note calls.
scale: Scale type (major, minor, harmonic_minor, melodic_minor, dorian, phrygian, lydian, mixolydian, locrian, pentatonic_major, pentatonic_minor, blues, chromatic). root: Root note name (C, C#, D, D#, E, F, F#, G, G#, A, A#, B or flats Db, Eb, Gb, Ab, Bb). pattern: Rhythmic pattern using scale degrees. Each step is one 16th note:
Numbers 1-7 (or 1-5 for pentatonic, 1-6 for blues) = scale degree (1 = root)
0 = rest
'-' = sustain previous note (tie)
'+' = octave up for this note
Example: "1-2-3-5-4-3-2-1" = ascending then descending scale fragment
Example: "1 0 3 0 5 0 3 0" = arpeggio with rests unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the melody starts (0 = bar 1). octave: MIDI octave for the root (4 = C4=60, the middle C). velocity: Note velocity 0-1 (default 0.75).
Returns the total notes created and pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| scale | Yes | ||
| octave | No | ||
| pattern | Yes | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It does disclose that it creates melody notes in a specified track and returns a summary, and it explains the pattern syntax. However, it does not state whether notes are appended or replace existing notes, nor does it mention any prerequisites beyond having a note track. This is moderate 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 long but every sentence adds value. It front-loads the purpose, then uses a structured, scannable format for parameters and returns. No 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?
For an 8-parameter tool with no schema descriptions and no annotations, the description covers all inputs, gives examples, and states return values. It could be more explicit about side effects (e.g., whether it overwrites existing notes) but is otherwise quite 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 and does fully compensate. It documents all 8 parameters, enumerates valid scales and roots, and provides a detailed pattern syntax with examples. This is essential for correct invocation.
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: 'Create a melody from a scale and rhythmic pattern'. It also differentiates from the sibling tool create_note by noting it can replace 10-30 create_note calls, making the purpose and value immediate.
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 names an alternative ('instead of 10-30 create_note calls'), providing a concrete when-to-use. However, it does not discuss other melody generation siblings like generate_melody, so the exclusion guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_melody_from_progressionA
Create a lead melody from a chord progression string.
Completes the harmonic quartet: create_chord_pads (sustained harmony) + create_arpeggiated_progression (arp movement) + create_bass_from_progression (bass foundation) + THIS (lead melody). All four take the same "Am-F-C-G" string.
The melody hits chord tones on strong beats (1, 3) and uses passing tones or neighbor tones on weak beats (2, 4) for melodic interest.
pattern: Melodic pattern: "chord_tones" — root/third/fifth on beats 1+3, passing tone on 2+4 "sustained" — one chord tone per bar, held for full bar (ballad) "syncopated" — 8th notes, chord tones on downbeats, passing on ups "triadic" — arpeggiated 8ths through chord tones (folk, country) "stepwise" — scale steps between chord tones (pop, classical)
bars_per_chord: Bars per chord (default 4). octave: MIDI octave for melody (5 = C5=72, typical lead range). velocity: Note velocity (0-1, default 0.75). track_index: Track for melody (typically melody track = 3).
Example:
Pop lead from I-V-vi-IV
create_melody_from_progression("C-G-Am-F", pattern="chord_tones", octave=5, track_index=3)
Ballad sustained melody
create_melody_from_progression("Am-F-C-G", pattern="sustained", octave=5, bars_per_chord=4)
Country triadic fiddle
create_melody_from_progression("D-G-A-D", pattern="triadic", octave=5, velocity=0.8)
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| pattern | No | chord_tones | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the musical generation behavior: chord tones on strong beats (1,3) and passing/neighbor tones on weak beats (2,4), plus detailed pattern definitions. However, it does not state whether the tool overwrites existing notes on track_index or adds to them, or whether a track must already exist, which would matter 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?
The description is front-loaded with the core purpose and then uses labeled sections for patterns, parameters, and examples. It is longer than necessary, but the bullet-style pattern list and three usage examples justify the length; minor redundancy exists in repeating beat/chord-tone rules.
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 an 8-parameter tool with no annotations and an output schema, the description covers the main workflow, the chord-string format, pattern options, defaults, and examples. It fails to explain start_beat and unit_index, and says nothing about whether the operation is additive or destructive, but overall it gives an agent enough context to invoke the tool correctly for typical melody generation.
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 provides detailed semantics for pattern (five named patterns with rhythmic definitions), bars_per_chord, octave (with C5=72 reference), velocity, and track_index, and it demonstrates progression via examples. It omits start_beat and unit_index, which are not described in the schema either, leaving a gap for those two 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 'Create a lead melody from a chord progression string' with a clear verb and resource. It also distinguishes itself from siblings by naming the 'harmonic quartet' and placing 'THIS (lead melody)' alongside three specific alternative 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 frames the tool as completing a harmonic quartet with create_chord_pads, create_arpeggiated_progression, and create_bass_from_progression, all sharing the same chord string format. This tells the agent when to use it: after building the other three parts. It also lists alternative pattern options with genre cues, providing practical selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_metal_arrangementA
Create a full metal arrangement — double kick drums + palm-muted riffs + power chords + shred lead.
Heavy metal — riff-based, not chord-progression-based:
Track 0: Drums — double kick (16th notes on kick), snare on 2+4, crash on bar starts, ride during verses. Blast beat feel at high BPM. The double kick is the heartbeat of metal — relentless.
Track 1: Bass — root-following bass, palm-muted style. Follows the riff root notes in steady 8ths. Thick, driving, sits under the guitars like a foundation.
Track 2: Rhythm guitar — power chords (root+fifth) with palm-muted 8th note chugging. The classic metal riff approach: low E string pedal tone + power chord stabs. E minor phrygian dominant for that Middle Eastern/exotic metal feel.
Track 3: Lead guitar — minor pentatonic + natural minor scale shredding. Fast alternate-picking runs, sweep arpeggios, tapped harmonics simulated via high-register notes. The "shred" quality.
At 160 BPM (default), this is thrash/speed metal territory. At 120 BPM, it's traditional heavy metal (Iron Maiden). At 200+, it's extreme/black metal.
The riff: low E pedal tone + power chord on the off-beat. Phrygian dominant (E-F#-G-A-B-C-D) gives the exotic metal sound (think Metallica, Slayer, Meshuggah). Not I-IV-V — metal is riff-driven, not chord-driven.
bpm: Tempo (100-220, default 160 = thrash metal). bars: Arrangement length (must be multiple of 4, default 8). root: Root note (E is the most common metal key — lowest guitar string). octave: MIDI octave for bass (2 = E2=40, standard metal bass register). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_metal_arrangement(bpm=160, root="E", bars=8) create_metal_arrangement(bpm=120, root="D", bars=16) # traditional metal
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | E | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It details per-track behavior, scale choices, and explicitly states the return value ('Returns notes created per track and total'). However, it does not disclose whether the tool appends to existing notes or overwrites tracks, nor does it fully clarify prerequisites beyond 'unit_index: AU index with note tracks.'
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 organized clearly: purpose, track breakdown, BPM context, riff theory, parameter list. It front-loads the main point and uses bullet points for readability. Some stylistic flourishes (e.g., 'relentless heartbeat of metal') add flavor but not operational value, making it slightly less concise than ideal.
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 complex tool that creates four tracks of arrangement, the description covers the compositional approach, musical style, key parameters, and expected return. Given that an output schema exists, it does not need to document return syntax in detail. Gaps include velocity, start_beat, and interaction with existing notes, but overall the description provides sufficient context for an AI 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 description coverage is 0%, so the description is the only source of parameter meaning. It explains bpm, bars, root, octave, unit_index, and all four track indices with ranges and defaults, which is substantial. However, it omits velocity and start_beat entirely, leaving those 2 of 11 parameters 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+resource: 'Create a full metal arrangement — double kick drums + palm-muted riffs + power chords + shred lead.' It clearly enumerates the four tracks, making the tool's function unmistakable and distinguishing it from the many other genre arrangement tools in the sibling list.
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 strong usage context: BPM ranges map to subgenres (120=traditional metal, 160=thrash, 200+=extreme), and it emphasizes riff-based rather than chord-progression-based composition. It does not explicitly mention alternatives, but the tool's purpose is so clearly scoped that 'use for metal arrangements' is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_metric_modulationA
Create a metric modulation — tempo change that preserves a note-value equivalence.
The defining technique of Elliott Carter, Aaron Copland, John Adams, and progressive rock (Dream Theater, Tool). Unlike a simple tempo change, metric modulation establishes a precise relationship: a specific note value in the new tempo has the same duration as a different note value in the old tempo. The listener perceives a new pulse while the rhythmic fabric remains continuous.
Formula: new_bpm = old_bpm × (new_note_value / old_note_value)
Supported note values:
"whole", "half", "dotted_half", "quarter", "dotted_quarter"
"quarter_triplet", "eighth", "dotted_eighth", "eighth_triplet"
"sixteenth", "dotted_sixteenth", "thirty_second"
Alternatively, pass a ratio like "3:2" (new tempo = 3/2 of old) or "2:3" (new = 2/3 of old) to express the modulation as a simple proportion.
Examples: create_metric_modulation(32, "quarter", "dotted_eighth", old_bpm=120) → new_bpm = 120 × (3/16) / (1/4) = 90 BPM. A dotted eighth at 90 lasts the same as a quarter at 120. create_metric_modulation(16, ratio="3:2", old_bpm=100) → new_bpm = 150. Three notes in new tempo = two in old. create_metric_modulation(48, "eighth", "quarter", old_bpm=140) → new_bpm = 280. Quarter at new tempo = eighth at old (doubling).
Args: position_beats: Beat position where modulation occurs. old_note: Note value in the old tempo (default "quarter"). new_note: Note value in the new tempo that equals old_note's duration (default "dotted_eighth" — classic Carter modulation). old_bpm: Current BPM. If 0, reads from the project's tempo track. ratio: Direct ratio "N:M" — new_bpm = old_bpm × N/M. Overrides old_note/new_note if provided. add_time_signature: Optional new time signature as "N/D" (e.g. "3/4", "6/8"). If provided, also creates a time signature change event at the same position.
Returns old_bpm, new_bpm, ratio, equivalence, and events created.
| Name | Required | Description | Default |
|---|---|---|---|
| ratio | No | ||
| old_bpm | No | ||
| new_note | No | dotted_eighth | |
| old_note | No | quarter | |
| position_beats | Yes | ||
| add_time_signature | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the formula, supported note values, the ratio override, default old_bpm behavior, and that add_time_signature creates a time signature change event. It also lists what the function returns. It does not address potential side effects like overwriting existing tempo events, but the disclosed behavior is substantial.
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 longer than average but extremely well-structured with sections for formula, supported values, examples, args, and returns. The historical context in the second sentence is somewhat extraneous but not harmful. Each section earns its place given the complex concept.
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 schema descriptions and no annotations, this description is remarkably complete. It covers all six parameters, provides formulas and examples, explains default behavior, and lists return values. It even describes the optional time signature side effect. This is close to a fully self-contained specification.
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 properties have empty descriptions (0% coverage), so the description's 'Args' section is essential. It explains every parameter, including defaults and interaction rules (ratio overrides old_note/new_note; old_bpm=0 reads tempo track). This fully compensates for the schema 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 opening sentence 'Create a metric modulation — tempo change that preserves a note-value equivalence' clearly defines the tool with a specific verb and resource. It explicitly distinguishes from a simple tempo change, which differentiates it from siblings like set_bpm and add_tempo_change.
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 contrasts metric modulation with 'a simple tempo change,' making it clear when this tool is appropriate. It also explains the ratio vs note-value alternatives and provides examples for both. However, it does not explicitly name sibling tools like set_bpm for simple tempo changes, so it's not a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_midi_echoA
Create MIDI echo — repeat notes with decaying velocity and optional pitch shift.
Takes existing notes from a region and creates echoing repeats. Each repeat is delayed by delay_beats, quieter by velocity_decay factor, and optionally shifted in pitch. This is a creative effect, not a simple copy — think guitar delay throws, synth echo fills, vocal repeat stutters.
feedback_mode:
"linear" — each repeat is velocity_decay × previous (0.6 → 0.6, 0.36, 0.216)
"exponential" — faster decay, squared each time
"constant" — same velocity for all repeats (stutter feel)
"reverse" — each repeat gets louder (build-up feel)
pitch_shift: semitones added per repeat (0 = no shift, +12 = octave up each repeat, -5 = perfect fourth down each repeat). Creates cascading echoes.
dest_track: -1 = same track (thickening), N = separate track (layered echo). Using a separate track lets you process the echo independently.
repeats: 1-8 echo repeats. Each repeat copies ALL notes from the source. delay_beats: time between each repeat (0.25 = 16th, 0.5 = 8th, 1.0 = quarter).
unit_index: AU index. track_index: Source note track. region_index: Source region (-1 = first). repeats: Number of echo repeats (1-8). delay_beats: Delay between repeats in beats. velocity_decay: Velocity multiplier per repeat (0-1, 0.6 = 60% each time). pitch_shift: Semitones added per repeat (0 = none). dest_track: Destination track (-1 = same, N = separate track). feedback_mode: linear / exponential / constant / reverse.
Returns echo summary with per-repeat velocity and pitch info.
Example:
Guitar-style echo: 3 repeats, 8th note delay, decaying
create_midi_echo(0, 0, repeats=3, delay_beats=0.5, velocity_decay=0.5)
Cascading octave echoes on separate track
create_midi_echo(0, 0, repeats=4, delay_beats=0.25, pitch_shift=12, dest_track=2)
| Name | Required | Description | Default |
|---|---|---|---|
| repeats | No | ||
| dest_track | No | ||
| unit_index | Yes | ||
| delay_beats | No | ||
| pitch_shift | No | ||
| track_index | Yes | ||
| region_index | No | ||
| feedback_mode | No | linear | |
| velocity_decay | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It richly explains feedback modes with concrete examples (e.g., 'linear — each repeat is velocity_decay × previous (0.6 → 0.6, 0.36, 0.216)'), pitch shift semantics, and dest_track behavior. It notes that 'Each repeat copies ALL notes from the source' and mentions the return summary. However, it does not explicitly state whether the original notes are preserved or modified, or how region boundaries are handled, leaving minor 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?
The description is well-structured with sections for feedback_mode, pitch_shift, dest_track, repeats/delay_beats, a parameter summary, and examples. It is slightly redundant because the parameter list repeats prior explanations, and the length is substantial (~350 words). However, every section adds useful detail, and the examples are illuminating. Slight trimming could make it more concise, but it is not bloated.
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 (9 parameters) and the 0% schema description coverage, the description covers all needed context: all parameters are explained, return value is mentioned ('Returns echo summary with per-repeat velocity and pitch info'), and two usage examples are provided. It lacks explicit prerequisites or error conditions (e.g., needing a note region, valid unit index), but these are largely implied by the parameter naming and the phrase 'Takes existing notes from a region.'
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 no descriptions (0% coverage), but the description fully compensates by explaining every parameter. It provides detailed semantics for feedback_mode (with behavior of each value), pitch_shift (with musical examples like '+12 = octave up'), dest_track (same vs separate track), and delay_beats (with note-value equivalents). The narrative section and the parameter summary together give comprehensive meaning beyond the bare schema titles.
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: 'Create MIDI echo — repeat notes with decaying velocity and optional pitch shift.' It specifies the resource (existing notes in a region), the action (creates echoing repeats), and the effect (delay, decay, pitch shift). This distinguishes it from sibling tools like repeat_notes or create_stutter by emphasizing the echo/delay character.
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 creative context by saying 'This is a creative effect, not a simple copy — think guitar delay throws, synth echo fills, vocal repeat stutters.' This implies when to use it (for echo-like effects) and contrasts it with a simple copy, giving some differentiation from repeat tools. However, it does not explicitly name alternative tools or state when NOT to use it, 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.
mcp_opendaw_create_modulated_songA
Build a multi-section song with key modulation between sections — one call.
Each section has its own chord progression, length (bars), and energy (velocity multiplier). The tool automatically modulates between keys by using different progressions per section — no manual start_beat calculation needed.
sections: Comma-separated section specs. Each section format: name:progression:bars:energy
name: section label (verse, chorus, bridge, outro, etc.)
progression: chord progression string (e.g. "Am-F-C-G")
bars: total bars for this section
energy: velocity multiplier (0.0-1.0, relative to base velocity)
Default creates a 24-bar song: verse (Am-F-C-G, 8 bars, 0.7) → chorus (C-G-Am-F, 8 bars, 1.0) → bridge (F-C-Dm-G, 4 bars, 0.6) → outro (Am-F-C-G, 4 bars, 0.5)
The chorus modulates to C major (relative major of A minor), the bridge modulates to F (up a fourth), and the outro returns to Am.
arp_pattern/bass_pattern/melody_pattern/counter_melody_pattern: Same as create_harmonic_arrangement. Applied to all sections. Use "" to skip any layer.
drum_genre: If set (e.g. "house", "dnb", "synthwave"), creates a genre drum arrangement for the full song length BEFORE harmonic layers. When drum_genre is set, pads and bass are automatically skipped in harmonic sections (genre arrangement provides them). Default "" = no drums (harmony only). Valid: dnb, liquid_dnb, house, trap, techno, dubstep, afrobeat, rock, jazz, pop, funk, reggae, synthwave, trance, disco.
bpm: Tempo for drum arrangement (None = genre default). Only used when drum_genre is set.
Example:
Default 4-section modulated song (harmony only)
create_modulated_song()
With house drums
create_modulated_song(drum_genre="house", bpm=124)
With synthwave drums + counter-melody
create_modulated_song(drum_genre="synthwave", counter_melody_pattern="contrary")
Simple verse-chorus with DnB drums
create_modulated_song("verse:Em-G-D-C:8:0.7,chorus:G-D-Em-C:8:1.0", drum_genre="dnb")
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| sections | No | verse:Am-F-C-G:8:0.7,chorus:C-G-Am-F:8:1.0,bridge:F-C-Dm-G:4:0.6,outro:Am-F-C-G:4:0.5 | |
| velocity | No | ||
| drum_genre | No | ||
| unit_index | No | ||
| arp_pattern | No | up | |
| bass_pattern | No | root | |
| melody_pattern | No | chord_tones | |
| counter_melody_pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that modulation happens automatically between keys, that pattern parameters apply to all sections, and that setting drum_genre causes pads and bass to be skipped. It also states the default song structure (24 bars, specific sections). Missing are details about whether the tool creates new tracks/regions, overwrites existing data, or any side effects, but for a creation tool this is less critical.
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 long but well-structured: it front-loads the purpose, then gives a precise section format, defaults, modulation explanation, parameter details, and examples. Each segment earns its place, though it could be trimmed slightly (e.g., the modulation explanation in prose could be moved to comments). The examples are valuable 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 complex tool with 9 parameters and no annotations, the description is largely complete: it covers the core sections syntax, defaults, drum genre behavior, and usage examples. It does not explain the global velocity parameter or unit_index, and relies on a sibling-tool reference for pattern values, which are minor gaps given the output schema exists. Overall, an agent could call this tool correctly for most intended uses.
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 thoroughly explains sections, drum_genre (with valid values), and bpm (when used). However, it leaves velocity and unit_index entirely unexplained, and the pattern parameters are only vaguely referenced as 'Same as create_harmonic_arrangement' without listing valid values. This partial coverage warrants a 3, not higher.
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: 'Build a multi-section song with key modulation between sections — one call.' It clearly differentiates from siblings like create_harmonic_arrangement by emphasizing the multi-section, key-modulating capability and the 'one call' convenience. The scope (sections, progressions, energy) is 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?
The description provides clear context: use this when you want a multi-section song with automatic key modulation, and it explicitly contrasts with manual start_beat calculation. It also references create_harmonic_arrangement for pattern semantics, implying when that simpler tool might be used, and includes examples for various drum genres. However, it does not explicitly state 'use this instead of X' or list exclusions, preventing a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_montunoA
Create a montuno — a repeating Latin/jazz piano ostinato pattern.
A montuno is a 2-bar (or 4-bar) repeating piano figure central to son, salsa, Latin jazz, and mambo. It consists of syncopated chord stabs and single-note passages that lock with the clave, creating a driving, danceable groove.
Unlike arpeggiators (which cycle through chord tones mechanically) or ostinato patterns (which repeat a fixed melodic cell), a montuno combines:
Harmonic movement through a chord progression
Syncopated rhythm locked to the clave
Alternation between chord stabs and melodic passage notes
Call-and-response phrasing within each bar
Pattern types: 2-3 — Classic 2-3 clave montuno (2-side in bar 1, 3-side in bar 2) 3-2 — Reverse clave (3-side first, 2-side second) guajira — Cuban guajira montuno (gentler, dotted rhythm feel) charanga — Charanga-style (more melodic, flowing passages)
Rhythm: 8th — Eighth-note based (standard salsa) 16th — Sixteenth-note based (faster, busier) quarter — Quarter-note based (simpler, mambo style)
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, mixolydian, harmonic_minor). bars: Number of bars (2 or 4). Montunos are typically 2-bar cycles. octave: Starting MIDI octave (2-6). chord_prog: Comma-separated chord progression (e.g., "C,Am,Dm,G"). If empty, generates a I-vi-IV-V progression in the key. pattern: Pattern type (2-3, 3-2, guajira, charanga). rhythm: Rhythm subdivision (8th, 16th, quarter). velocity: Base velocity 0-1. accent_beats: Comma-separated beat numbers to accent (1-indexed). unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, chord progression, and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| scale | No | major | |
| octave | No | ||
| rhythm | No | 8th | |
| pattern | No | 2-3 | |
| velocity | No | ||
| chord_prog | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| accent_beats | No | 1,3 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It provides extensive musical theory and parameter explanations, but it does not describe the tool's operational behavior in the DAW: whether it creates a new note region or appends to an existing one, whether it overwrites notes, or what side effects it has on the track. The description even says 'Returns notes created, chord progression, and pattern info' but does not explain how the notes are placed or if any destructive action occurs. This is a significant transparency gap for a creation 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 well-structured with clear sections: definition, differentiation, pattern types, rhythm options, and args. It is longer than average, but that is justified for a complex musical generation tool with 12 parameters. The front-loaded definition and contrast help quickly orient the reader. Some repetition of musical concepts could be tightened, but overall it earns its 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?
Given the complexity (12 params, no annotations, 0% schema coverage), the description does a good job covering parameter semantics and musical context. However, it lacks operational completeness: it does not explain DAW-level behavior such as which track/unit the pattern is written to, whether it is additive, or how start_beat interacts with the existing timeline. The output schema exists, so return values are not fully needed, but the missing behavioral context prevents a higher score.
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 no parameter descriptions (0% coverage), so the description's 'Args:' section is the only documentation for all 12 parameters. It explains each parameter's purpose, with examples for chord_prog and clear definitions for pattern and rhythm values. This fully compensates for the schema's lack of textual descriptions and adds meaning beyond types/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 the tool's function: 'Create a montuno — a repeating Latin/jazz piano ostinato pattern.' It distinguishes this from related concepts like arpeggiators and ostinato patterns, making the purpose specific and well-scoped. The tool name 'create_montuno' is also descriptive, but the description adds real semantic content beyond the 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?
The description explicitly contrasts with arpeggiators and ostinato patterns: 'Unlike arpeggiators... or ostinato patterns... a montuno combines...' This gives clear guidance on when to choose a montuno over those alternatives. However, it does not name sibling tools like mcp_opendaw_create_ostinato or mcp_opendaw_create_arpeggio directly, nor does it discuss scenarios where another pattern generator would be preferred. The pattern and rhythm enumeration also gives context for selecting variants, but no explicit 'when-not to use' is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_mordentA
Create a mordent — main note → neighbor → back. A classical ornament.
The mordent is one of the four essential baroque ornaments (trill, mordent, turn, appoggiatura). It's a rapid single alternation: play the main note briefly, flick to a neighbor note, then return to the main note — all within the space of one note duration. Think Bach two-part inventions, Mozart sonatas.
An upper mordent flicks UP (main → upper neighbor → main). A lower mordent flicks DOWN (main → lower neighbor → main). The neighbor note is very short — just a flicker.
main_pitch: The primary MIDI note (default 60 = C4). direction: "upper" (main→higher→main) or "lower" (main→lower→main). interval: Semitones to the neighbor note (default 2 = whole step). Upper: 1 = half step (diatonic), 2 = whole step. Lower: -1, -2 mirror. duration_beats: Total length of the mordent in beats (0.25-4, default 0.5 = one 8th). velocity: Base velocity 0-1 (default 0.85). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the mordent begins.
Returns notes created, pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | ||
| velocity | No | ||
| direction | No | upper | |
| main_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must disclose behavior. It explains the note pattern, parameter defaults, and return value, but does not disclose potential side effects like whether notes are inserted or appended, or any prerequisites beyond specifying unit/track indices.
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 well-organized, front-loading the purpose, but includes several paragraphs of music theory that, while helpful, could be trimmed; still, no wasted filler and the parameter list is 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?
All parameters are explained with defaults and ranges, the return value is stated, and the musical behavior is fully described. Given the absence of schema descriptions, the description is complete enough for an agent 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?
Schema description coverage is 0%, and the description compensates thoroughly by documenting all 8 parameters with defaults, ranges, and musical meaning (e.g., interval 1=half step, 2=whole step; duration 0.25-4 beats).
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 'Create a mordent — main note → neighbor → back' which clearly states the action and output. It distinguishes this from sibling ornament tools by specifying the mordent pattern and its upper/lower variants.
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 musical context (baroque ornament, Bach/Mozart) implying when a mordent is appropriate, but does not explicitly contrast it with create_trill, create_turn, or create_appoggiatura, or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_motif_developmentA
Develop a motif into a through-composed melodic line that evolves.
Takes a short motif (2-8 notes) and builds a continuous melodic line that develops through compositional stages: statement, sequential repetition (up/down), fragmentation (shorter segments), inversion, octave displacement, and cadence. This is the Beethoven 5th approach — a 4-note seed grows into an entire melodic arc.
Unlike create_variations (separate regions, each a full transformation), create_motif_development writes ONE continuous line that flows through stages without stopping. Unlike create_sequence (pure transposition), this tool mixes multiple development techniques in sequence.
motif: Comma-separated scale degrees (1-7) or MIDI pitches. Scale degrees: 1=root, 2=2nd, 3=3rd, etc. 0=rest. MIDI pitches: 60,62,64,65 etc (when use_midi=true implicit if >7). Example: "1,1,1,2" or "60,60,60,62" scale: Scale type (major, minor, harmonic_minor, dorian, etc.). root: Root note name (C, D#, Bb, etc.). octave: MIDI octave for root (4 = C4=60). steps: Comma-separated development stages: "statement" — play motif as-is "sequence_up" — transpose up by a 4th (5 semitones) "sequence_down" — transpose down by a 4th "fragment" — play first half of motif "fragment_end" — play second half of motif "invert" — invert around root pitch "octave_up" — shift up one octave "octave_down" — shift down one octave "expand" — double note durations "compress" — halve note durations "cadence" — resolve to root (scale degree 1, longer duration) step_duration: Duration of each note in beats (0.25 = 16th). velocity: Base velocity 0-1. unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the development starts.
Returns total notes, stage count, pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | A | |
| motif | Yes | ||
| scale | No | minor | |
| steps | No | statement,sequence_up,sequence_down,fragment,invert,sequence_up,fragment,octave_up,cadence | |
| octave | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| step_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden. It reveals key traits: writes a single continuous line (not separate regions), flows through stages without stopping, and returns 'total notes, stage count, pitches used.' It doesn't mention whether existing notes are overwritten or merged, but given the depth of process description, it is largely 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 substantial but every sentence adds value: overview, motivational context, sibling differentiators, and parameter explanations are well-structured and front-loaded. The 'Beethoven 5th' analogy is concise and memorable. No filler or redundant repetition of 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 (10 params, 0% schema coverage), the description is highly complete. It explains the composition stages, provides examples, lists return values, and states the track/AU requirements ('unit_index: AU index with a note track'). It is more than sufficient for an AI agent to correctly select and 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 fully compensates for every parameter. It explains motif format with examples ('1,1,1,2' vs '60,60,60,62'), defines each development step (sequence_up, fragment, invert, etc.), and clarifies scale, root, octave, step_duration, velocity, unit_index, track_index, and start_beat. This is far beyond what the schema alone 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 opens with a specific verb+resource: 'Develop a motif into a through-composed melodic line that evolves.' It clearly explains the tool transforms a short motif (2-8 notes) into a continuous melodic line through named compositional stages. It also explicitly distinguishes itself from create_variations and create_sequence, which are 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 includes explicit usage guidance: 'Unlike create_variations... create_motif_development writes ONE continuous line' and 'Unlike create_sequence (pure transposition), this tool mixes multiple development techniques.' This tells the agent exactly when to choose this tool over alternatives. It also gives the 'Beethoven 5th approach' analogy as real-world context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_motif_variationsA
Extract a motif from existing notes and create a variation in a new region.
Closes the analysis→creation loop: extract_motifs finds repeating patterns, this tool takes a specific motif and transforms it using classical composition techniques. The motif is identified by start_note index and note_count within the source region.
Variation types:
sequence: repeat the motif shifted up/down by N scale steps or semitones. Creates melodic sequences — the backbone of classical and jazz improvisation.
inversion: flip the contour upside down. C→E→G (+4, +3) becomes C→A→F (-3, -2). The intervals are mirrored around the first note.
retrograde: play the motif backwards. Last note first, first note last. The rhythm and pitches are reversed in time.
augmentation: stretch all durations by a factor (2.0 = twice as slow). Creates grand, expansive statements from quick motifs.
diminution: compress all durations by a factor (2.0 = twice as fast). Creates urgency and energy from slow motifs.
fragmentation: take the first N notes of the motif and repeat them. Creates rhythmic ostinatos from melodic material.
Essential for: developing melodic material, building variations, creating thematic development, and extending motifs into new sections.
source_unit/track/region: Location of the source motif. start_note: Index of the first note of the motif within the source region (0-based, sorted by position). note_count: Number of notes in the motif (3-16). target_unit/track/region: Where to write the variation. -1 = create new track/region automatically. variation_type: sequence, inversion, retrograde, augmentation, diminution, fragmentation. sequence_shift: For sequence type — semitones to shift each repetition. augmentation_factor: For augmentation/diminution — duration multiplier. fragment_count: For fragmentation — how many notes to keep from the start.
Returns the created variation with note details.
| Name | Required | Description | Default |
|---|---|---|---|
| note_count | No | ||
| start_note | No | ||
| source_unit | No | ||
| target_unit | No | ||
| source_track | No | ||
| target_track | No | ||
| source_region | No | ||
| target_region | No | ||
| fragment_count | No | ||
| sequence_shift | No | ||
| variation_type | No | sequence | |
| augmentation_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: it details where the variation is written, the meaning of -1 for auto-creation, and the exact transform behaviors for all six variation types with musical examples. It does not explicitly warn that writes to an existing target region may overwrite notes, a minor 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?
The description is long but densely informative with clear Markdown structure: opening summary, variation type list with examples, and parameter breakdown. Each sentence serves a purpose—examples like 'C→E→G (+4, +3) becomes C→A→F (-3, -2)' concretely illustrate inversion without 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 complex tool with six transformation types and 12 parameters, the description covers variation semantics, parameter details, and location handling. An output schema exists, so the return value note is sufficient. Minor omission of error conditions (e.g., note_count out of range) is outweighed by the thorough treatment of functionality.
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 fully compensates by explaining every parameter: start_note indexing, note_count range (3-16), source/target locations, variation_type values, sequence_shift as semitones, augmentation_factor as duration multiplier, and fragment_count as notes from the start. This far exceeds minimal 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 opens with a clear specific action: 'Extract a motif from existing notes and create a variation in a new region.' It explicitly identifies the resource (motif, notes, region) and contrasts with the sibling extract_motifs, making its unique role in the analysis→creation loop obvious.
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 names extract_motifs as the complementary tool and explains that this tool 'takes a specific motif and transforms it,' providing solid context for when to reach for it. It also lists 'Essential for' use cases. However, it does not explicitly mention when not to use it or alternative variation-creating tools like create_variations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_mute_automationA
Create timed mute/unmute automation events on an audio unit.
Essential for section dynamics: mute drums during breakdowns, unmute for drops, create structural silences. Each event is a (beat, mute_state) pair — mute at beat X, unmute at beat Y. Replaces multiple set_track_mute calls with one automation track that plays back predictably every time.
unit_index: AU index to automate mute on. events: JSON array of [beat, muted] pairs. beat = position in beats, muted = true (silence) or false (audible). Example: [[0, false], [16, true], [24, false]] = audible 0-16, muted 16-24, audible 24+
Returns events created, mute schedule, and track index.
Examples: create_mute_automation(unit_index=0, events='[[0,false],[16,true],[24,false]]') → Drums audible for 16 beats, muted for 8 (breakdown), back on at 24 create_mute_automation(unit_index=2, events='[[0,true],[8,false]]') → Bass silent for intro, kicks in at beat 8
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the event format, includes examples, and notes return values (events created, mute schedule, track index). However, it does not disclose whether existing automation is overwritten, error behavior, or any destructive side effects—important for a write 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 well-organized: purpose statement, usage rationale, parameter explanations, return info, and two worked examples. Every sentence adds value, and it remains readable despite length. Front-loaded with the main 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 moderate complexity (2 params, nested data as string) and presence of an output schema, the description provides sufficient context: input format, examples, expected outcomes, and return summary. It covers the tool's role without needing to detail output fields since an output schema is available.
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 fully compensates. It explains unit_index as 'AU index to automate mute on' and provides a detailed interpretation of events with a JSON array format, beat semantics, muted meaning, and a concrete example. This goes far 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?
The description clearly states 'Create timed mute/unmute automation events on an audio unit' with a specific verb and resource. It distinguishes from siblings by explicitly stating it 'Replaces multiple set_track_mute calls with one automation track,' setting it apart from other 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?
The description provides clear usage context ('Essential for section dynamics: mute drums during breakdowns, unmute for drops, create structural silences') and mentions an alternative (set_track_mute). However, it does not explicitly exclude scenarios or compare with other automation-related siblings like create_automation_event or add_automation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_neurofunk_arrangementA
Create a full neurofunk DnB arrangement — 4 tracks: drums + sub-bass + Reese + stabs.
Neurofunk (Noisia, Spor, Phace, Ed Rush & Optical) is the technically advanced evolution of drum & bass — darker, more complex, with signature sound design elements:
170-180 BPM, dark minor key (typically F or E minor)
Complex chopped breakbeats with extra ghost notes, kicks, and rolls
Reese bass: detuned saw layers with movement, the hallmark neurofunk sound
Sub-bass underneath the Reese for low-end weight
Dark minor chord stabs and sci-fi atmosphere
Aggressive velocity, tight quantization with occasional swing
Creates 4 tracks:
Drums (drum_track): Complex amen break with extra kick placements, ghost notes, and snare rolls at phrase ends. 2-bar cycle.
Sub-bass (bass_track): Deep sustained sub following root note, syncopated gaps where drums fill. Octave 1 for sub weight.
Reese (reese_track): Detuned saw-style Reese bass with chromatic movement, pitch slides, and rhythmic stabs. The signature neuro sound.
Stabs (stabs_track): Dark minor chord stabs (root + b3 + b5 + b7) on beats 1 and 3, with occasional off-beat sci-fi stabs.
bpm: Tempo (160-185, default 174). bars: Arrangement length (4-32, default 8). root: Root note (default F = classic neurofunk key). octave: MIDI octave for Reese/bass (2 = C2=36).
Returns notes created per track and total.
Example: create_neurofunk_arrangement(bpm=174, root="F", bars=8) create_neurofunk_arrangement(bpm=180, root="E", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| reese_track | No | ||
| stabs_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 carefully details the four tracks, their musical content, defaults, and return value ('Returns notes created per track and total'). However, it does not explicitly state whether existing tracks are overwritten, how start_beat interacts with the arrangement start, or what side effects unit_index has, leaving some behavioral ambiguity.
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 well structured with clear sections: overview, genre characteristics, track breakdown, parameter list, and examples. The genre bullet points are somewhat lengthy but provide valuable stylistic context for generating authentic neurofunk; every sentence serves a purpose and the front-loaded summary is effective.
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 thoroughly covers creative output, genre conventions, parameter defaults, ranges, and example invocations. However, critical gaps remain: velocity, start_beat, and unit_index are unexplained, and the tool's behavior regarding track creation (new vs. existing) is not clarified. Given the tool's complexity (11 params, 4 tracks), the description is helpful 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?
The description explicitly explains bpm, bars, root, and octave with defaults and ranges, and infers the track-index parameters via the numbered track list (drum_track, bass_track, reese_track, stabs_track). However, velocity, start_beat, and unit_index receive no explanation, leaving 3 of 11 parameters undocumented—a significant gap given the schema itself has zero 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 opens with a specific verb+resource+scope: 'Create a full neurofunk DnB arrangement — 4 tracks: drums + sub-bass + Reese + stabs.' It clearly delineates the tool's function and distinguishes it from sibling genre-arrangement tools by naming the neurofunk style and the exact track structure.
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 a neurofunk DnB arrangement is desired, with BPM, key, and bar ranges. It does not explicitly name alternative tools (e.g., create_liquid_dnb_arrangement) or state when not to use it, but the genre-specific detail effectively implies the usage scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_noteA
Create a MIDI note on a note track.
pitch: MIDI note number (60 = C4, 69 = A4). start_beat: beat position. duration_beats: note length in beats. velocity: 0.0-1.0. unit_index: Audio unit index (-1 = search all AUs for note tracks). track_index: Note track index within the AU.
If no clip exists on the track yet, one is auto-created. Notes are added to the first clip on the track.
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | Yes | ||
| velocity | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| duration_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given there are no annotations, the description carries the transparency burden. It discloses key behaviors: 'If no clip exists on the track yet, one is auto-created' and 'Notes are added to the first clip on the track.' It also explains unit_index=-1 search behavior and velocity range, providing valuable context beyond what the schema shows.
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 compact bullet-style list of parameter explanations followed by two behavioral notes. Every line is necessary and adds value; there is no fluff or repetition. It is front-loaded with the primary action and well organized.
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 an output schema present, return value explanation is not required. The description covers all parameters and key behavioral traits (auto-creation, first-clip placement). Minor gaps include lack of error-handling info and bounds for pitch/start_beat, but for a single-note creation tool this 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 description coverage is 0%, so the description must fully compensate. It does: each of the six parameters is explained, including pitch reference (60=C4, 69=A4), beat position, duration in beats, velocity range, and unit_index semantics. This entirely fills the gap left by 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 opens with 'Create a MIDI note on a note track,' clearly stating the verb (create), resource (MIDI note), and destination (note track). This distinguishes it from sibling tools like create_notes_batch (batch creation) and create_drum_pattern (pattern generation).
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 by defining the operation and providing context about auto-creating clips and adding to the first clip, but it does not explicitly state when to use this tool over alternatives such as create_notes_batch or list_notes. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_note_clipA
Create a note clip in the session view (clip launcher).
Note clips are the session-view counterpart to note regions. They contain a NoteEventCollection and can be triggered independently in the clip launcher.
unit_index: Audio unit index (-1 = search all AUs for note tracks). track_index: Note track index within the AU. clip_index: Slot index in the clip launcher (0, 1, 2, ...). name: Display name for the clip. hue: Color hue 0-360 (-1 = auto from track type).
Returns clip UUID and index.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| name | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 useful behaviors such as unit_index=-1 searching all audio units, hue=-1 auto color, and the return of clip UUID and index. However, it does not mention potential side effects like overwriting an existing clip at the same slot, or error conditions if the track index is invalid. This is a moderate gap for a creation 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 well-structured: a leading one-line summary, a brief conceptual context paragraph, a clear parameter list, and a return statement. Every sentence serves a purpose and there is no redundant wording 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 explains the purpose, parameters, and return value, and places the tool in the session-view context. It is missing details about behavior when a clip already exists at clip_index or validation of track_index, but given the output schema is available and the critical parameter semantics are covered, 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 input schema has 0% description coverage, and the description fully compensates by explaining every parameter with domain-specific meaning: unit_index, track_index, clip_index, name, hue. It adds special value semantics (-1 defaults) that are not present in the schema at all.
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 starts with a clear, specific verb and resource: 'Create a note clip in the session view (clip launcher).' It distinguishes this from note regions by explaining that note clips are the session-view counterpart, which differentiates it from similar tools like create_note_region or create_audio_clip.
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 that this tool is for the session view/clip launcher, contrasting it with note regions in the timeline. While it does not explicitly name alternative tools or state 'use this when...', the contextual framing is strong enough to guide the agent away from region-based tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_notes_batchA
Create multiple MIDI notes in a single call — batch creation for melodies, chords, arpeggios.
notes: JSON array of note objects, each with:
pitch (int): MIDI note number (60 = C4, 69 = A4)
start (float): beat position
duration (float): note length in beats
velocity (float, optional): 0.0-1.0, default 0.8
Example: '[{"pitch":60,"start":0,"duration":0.5},{"pitch":64,"start":0.5,"duration":0.5},{"pitch":67,"start":1,"duration":1}]'
All notes go into one region on the specified note track. If no region exists, one is created. Faster than calling create_note repeatedly — one round-trip, one editing.modify() block.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states 'All notes go into one region on the specified note track. If no region exists, one is created,' which is useful. However, it does not disclose whether existing notes in the region are overwritten, appended, or how errors like invalid JSON are handled, leaving notable behavioral 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?
The description is well-structured: purpose first, then parameter details, an example, and a behavioral note. It is a bit longer than strictly necessary, but each section adds value and the format is scannable. Nothing is redundant.
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 3 parameters (one required string containing JSON) and an output schema. The description covers purpose, usage, the main parameter, and basic behavior. Missing are explanations of unit_index, handling of empty/invalid notes arrays, and whether existing region contents are affected. Given the absence of annotations, these gaps reduce completeness.
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 thoroughly explains the 'notes' parameter with field breakdown (pitch, start, duration, velocity), defaults, and an example. However, it only implicitly refers to 'track_index' and does not explain 'unit_index' at all, so not all parameters are semantically covered.
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 multiple MIDI notes in a single call — batch creation for melodies, chords, arpeggios.' It distinguishes from siblings like mcp_opendaw_create_note by emphasizing batch creation. The target resource (MIDI notes on a track) is 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?
The description explicitly names the alternative (create_note) and gives a concrete reason to prefer this tool: 'Faster than calling create_note repeatedly — one round-trip, one editing.modify() block.' It also indicates when the tool is appropriate (melodies, chords, arpeggios), providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_note_trackA
Create a new note/MIDI track on an audio unit.
unit_index: Audio unit index. Use -1 (default) for the primary audio unit, or specify an instrument AU index that contains a synth device (Vaporisateur, Nano, etc).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the creation action but does not mention side effects, prerequisites (e.g., whether the AU must exist), consequences of invalid indices, or whether the operation is reversible. The parameter hint about instrument AU types adds some context, but it is insufficient for a mutating 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 with no wasted words. It front-loads the purpose and then provides essential parameter guidance in a compact, readable format. 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 one-parameter tool with an output schema, the description covers the essential invocation details but lacks edge-case behavior (e.g., what happens if the unit_index is invalid or no synth is found). It is adequate but not fully comprehensive, especially given the absence of annotations.
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 fully compensates by explaining the sole parameter unit_index: its default (-1), meaning (audio unit index), and valid selection criteria (primary or instrument AU with synth devices). This adds meaning far 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 clearly states the tool's function: 'Create a new note/MIDI track on an audio unit.' The verb 'create' is specific, the resource ('note/MIDI track') is defined, and it distinguishes from sibling tools like create_audio_track and create_synth_track by emphasizing the note/MIDI nature.
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 parameter usage context (unit_index: -1 for primary AU or an instrument AU index), but does not explicitly explain when to use this tool versus alternatives like create_synth_track or create_instrument_track. The when-to-use is implied by the name and purpose, but no exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ostinatoA
Create an ostinato — a repeating melodic/rhythmic pattern as a foundation layer.
Ostinatos are short patterns (2-8 notes) that repeat throughout a section, providing a rhythmic/harmonic anchor. Common in minimalism, electronic, and film music.
scale: Scale type (major, minor, dorian, phrygian, etc. — 14 types from music_theory). root: Root note name (C, C#, D, ... B). pattern: Scale degrees as space-separated numbers (1-7, 0=rest): "1 5 3 5" — repeating i-v-iii-v pattern "1 3 5 6 5 3" — longer melodic cell repeats: Number of times to repeat the pattern (1-16). octave: Starting octave (1-7, default 4). velocity: Note velocity 0-1.
Returns total notes created and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| scale | Yes | ||
| octave | No | ||
| pattern | Yes | ||
| repeats | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 pattern length (2-8 notes), repetition behavior, parameter ranges (scale types, root names, velocity 0-1, repeats 1-16), and the return value (total notes and pattern info). It does not explicitly mention placement side effects (track/unit), but as a creation tool this is largely inferable. The added detail goes 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 appropriately sized: a concise definition followed by a focused parameter list with examples. It is front-loaded with the verb and resource, and every sentence adds value. The example pattern strings clarify the format efficiently without unnecessary padding.
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 9 parameters and no annotations, but the description covers the essential music-theory parameters, defaults, and return value. Placement parameters (start_beat, unit_index, track_index) are left unexplained, relying on naming conventions. Given the presence of an output schema and strong coverage of core parameters, the description is mostly complete but could benefit from a brief placement note.
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 thoroughly documents scale, root, pattern (with syntax examples), repeats, octave, and velocity, including defaults and ranges. It does not describe start_beat, unit_index, or track_index, but these are placement parameters with self-explanatory names. The description adds substantial 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?
The description clearly states 'Create an ostinato — a repeating melodic/rhythmic pattern as a foundation layer.' This uses a specific verb and resource, and the definition distinguishes it from siblings like create_melody or create_riff by emphasizing repetition and foundational role. The purpose is unambiguous and well-scoped.
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 a short repeated pattern is needed as a rhythmic/harmonic anchor. It explains the musical function and typical genres. However, it does not explicitly name alternatives or state when not to use it, which would elevate it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_pan_sweepA
Create a panning automation sweep — move signal from left to right (or vice versa) over time.
Classic stereo movement technique for intros, guitar solos, EDM builds, and section transitions. Creates panning automation events on the AU's panning parameter, sweeping from one position to another. Uses linear curve by default (panning is already psychoacoustic, exp not needed).
unit_index: AU index. start_beat: Start position in beats. duration_beats: Sweep length in beats (default 8 = 2 bars). start_pan: Starting pan position -1.0 (full left) to 1.0 (full right). Default -1. end_pan: Ending pan position -1.0 to 1.0. Default 1 (full sweep L→R). curve: "linear" (default — even stereo movement), "exp" (accelerating), "log" (decelerating). steps: Number of automation points (default 24 = smooth).
Returns events created, pan range, and preview.
Examples: create_pan_sweep(unit_index=0, duration_beats=16) → 16-beat full L→R pan sweep, linear create_pan_sweep(unit_index=2, start_pan=0.5, end_pan=-0.5, duration_beats=4) → Quick 4-beat R→L sweep from half-right to half-left
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | linear | |
| steps | No | ||
| end_pan | No | ||
| start_pan | No | ||
| start_beat | No | ||
| unit_index | Yes | ||
| duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the core behavior (creates automation events on the AU's panning parameter) and explains default curve choice, plus it states the return value. However, it does not mention whether existing automation is overwritten, if the operation is undoable, or any required permissions, leaving some important side effects undocumented.
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 well-organized: a one-sentence summary, a use-case paragraph, a clear parameter list, return type mention, and two concrete examples. Every sentence adds valuable information, and the front-loaded summary ensures the agent quickly understands 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?
The description covers the essential details needed to invoke the tool correctly: parameters, defaults, return value, and examples. It does not address edge cases like invalid unit_index or behavior when existing automation overlaps, but these are minor for a focused pan-sweep tool. The presence of an output schema also reduces the need to explain return 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?
With 0% schema description coverage, the description fully compensates by defining every parameter: unit_index, start_beat, duration_beats, start_pan/end_pan ranges (-1.0 to 1.0), curve options, and steps. It also provides practical examples that demonstrate how to call the function, exceeding what the schema titles alone offer.
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 begins with a clear, specific verb ('Create a panning automation sweep') and resource ('panning parameter'), explicitly stating the action's scope. It distinguishes itself from sibling tools like create_filter_sweep and create_volume_fade by focusing on panning movement, 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 provides clear context on when to use the tool, citing it as a classic technique for intros, guitar solos, EDM builds, and section transitions. It does not explicitly state exclusions or alternatives (e.g., when to use set_track_panning instead), but the context is strong enough to guide an agent toward appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_passacagliaA
Create a passacaglia — repeating bass ostinato with evolving harmonies above.
A foundational Baroque form (Bach BWV 582, Buxtehude) adapted to modern contexts (film scoring, metal, electronic). A short bass pattern (4-8 notes) repeats throughout while chords or arpeggiations evolve above it, creating cumulative tension. Distinct from ostinato (single repeating pattern), pedal_point (single sustained note), and bordun (drone chord).
bass_pattern: Space-separated MIDI pitches for the bass ostinato (e.g. "36 43 41 36" = C2 G2 F2 C2). Default is a classic descending bass. bass_rhythm: Space-separated durations in beats matching bass_pattern (e.g. "1 1 1 1" = quarter notes, "0.5 0.5 1 2" = syncopated). bass_repeats: How many times the bass pattern repeats (1-16, default 4). chord_pattern: Comma-separated chord names for the upper voices (e.g. "Cm,Ab,Eb,Bb"). Supports: maj, min, m7, maj7, dom7, sus2, sus4, dim, aug. If fewer chords than repeats, chords cycle. chord_octave: Octave for chord notes (1-8, default 4). variation_style: How upper harmonies are voiced — "block" (sustained chords), "arpeggiated" (broken chord pattern), "melodic" (stepwise counter-melody). beats_per_bar: Time signature beats (3/4=3, 4/4=4, 6/8=6, default 4). bass_velocity: Velocity of bass notes (0-1, default 0.75). chord_velocity: Velocity of chord/variation notes (0-1, default 0.55). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the passacaglia begins.
Returns notes created, bass pattern length, total bars, variation style.
| Name | Required | Description | Default |
|---|---|---|---|
| start_beat | No | ||
| unit_index | No | ||
| bass_rhythm | No | 1 1 1 1 | |
| track_index | No | ||
| bass_pattern | No | 36 43 41 36 | |
| bass_repeats | No | ||
| chord_octave | No | ||
| bass_velocity | No | ||
| beats_per_bar | No | ||
| chord_pattern | No | Cm,Ab,Eb,Bb | |
| chord_velocity | No | ||
| variation_style | No | block |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It explains how the tool generates notes: repeating bass pattern, evolving chords, variation styles, velocities, and placement parameters. It also mentions return values. However, it doesn't explicitly state whether it adds to existing MIDI data or clears/overwrites notes, which could be relevant for an agent deciding whether to call this 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 long but every sentence earns its place. It opens with a concise definition, gives historical/modern context, differentiates from similar tools, then lists all parameters with examples and defaults. The structure is logical and front-loaded with the core purpose, followed by necessary parameter details. No fluff or redundant 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?
Given the tool's complexity (12 parameters, no annotations, no output schema in the provided schema), the description is remarkably complete. It covers the musical concept, parameter semantics, variation styles, time signature handling, and even states return values. The agent has enough information to invoke the tool correctly and interpret 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 for all 12 parameters. It does so thoroughly: each parameter is explained with format, examples, defaults, and sometimes constraints (e.g., 'bass_repeats: 1-16', 'chord_octave: 1-8', 'variation_style: block/arpeggiated/melodic'). The inclusion of concrete musical examples like '36 43 41 36' and 'Cm,Ab,Eb,Bb' makes the parameter semantics exceptionally clear.
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+resource: 'Create a passacaglia — repeating bass ostinato with evolving harmonies above.' It clearly defines the musical form and provides examples of context (Bach, Buxtehude, film scoring, metal, electronic). It also explicitly distinguishes this tool from related sibling tools (ostinato, pedal_point, bordun), making its purpose 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?
The description provides explicit usage context and differentiates from alternatives: 'Distinct from ostinato (single repeating pattern), pedal_point (single sustained note), and bordun (drone chord).' This tells the agent exactly when to choose this tool over its siblings. It also gives genre/context examples where passacaglia is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_pedal_pointA
Create a pedal point — sustained bass tone under changing chords.
A foundational technique in film scoring (Hans Zimmer drones), organ preludes (Bach), and rock ballads. A single low note sustains (or retriggers) while chords change above it, creating harmonic tension and release. The pedal anchors the harmony while the chords create movement.
pedal_pitch: Sustained bass note (default 36 = C2, low and powerful). chord_pattern: Comma-separated chord names (e.g. "Cm,Ab,Eb,Bb"). Supports: maj, min, m7, maj7, dom7, sus2, sus4, dim, aug. bars_per_chord: Bars each chord lasts (1-8, default 1). beats_per_bar: Time signature beats (3/4=3, 4/4=4, 6/8=6, default 4). pedal_velocity: Velocity of pedal note (0-1, default 0.75). chord_velocity: Velocity of chord notes (0-1, default 0.6). chord_octave: Octave for chord notes (1-8, default 4 = C4 range). retrigger_pedal: If true, pedal re-triggers at each chord change. If false, one long sustained note for the entire duration. unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the pedal point begins.
Returns notes created, chord count, pedal duration.
| Name | Required | Description | Default |
|---|---|---|---|
| start_beat | No | ||
| unit_index | No | ||
| pedal_pitch | No | ||
| track_index | No | ||
| chord_octave | No | ||
| beats_per_bar | No | ||
| chord_pattern | No | Cm,Ab,Eb,Bb | |
| bars_per_chord | No | ||
| chord_velocity | No | ||
| pedal_velocity | No | ||
| retrigger_pedal | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It does disclose important behavioral traits: the retrigger_pedal distinction ("pedal re-triggers at each chord change. If false, one long sustained note") and return values ("Returns notes created, chord count, pedal duration"). However, it fails to disclose potential side effects for a write operation in a DAW — crucially, whether existing notes are overwritten or preserved, and what prerequisites must hold for the target track/AU.
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 well-structured: purpose definition → musical context → parameter breakdown → return values. The front-loaded definition is immediately clear. The musical context paragraph is illustrative but somewhat verbose relative to the agent's needs; it could be condensed to one sentence. The parameter section is necessarily long because schema coverage is 0%, so the length is largely justified.
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 11-parameter compositional tool, and the description covers its function, musical contexts, complete parameter semantics, and return values (output schema exists, so detailed return docs aren't required). The notable gap is the lack of explicit side-effect disclosure — whether the tool appends notes, replaces existing content, or creates new regions — which matters for a DAW writer tool with no annotations. This prevents a perfect score.
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 fully compensates by documenting all 11 parameters with rich semantics: defaults and ranges ("bars_per_chord: Bars each chord lasts (1-8, default 1)"), value formats ("Comma-separated chord names (e.g. "Cm,Ab,Eb,Bb")"), supported chord types ("maj, min, m7, maj7, dom7, sus2, sus4, dim, aug"), time signature examples ("3/4=3, 4/4=4, 6/8=6"), and MIDI meaning ("36 = C2, low and powerful"). This far exceeds what the schema 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 opens with a specific verb+resource: "Create a pedal point — sustained bass tone under changing chords." This precisely defines the tool's function and its musical concept, distinguishing it from similar compositional siblings like create_ostinato, create_bordun, and create_ground_bass by describing a sustained bass under changing harmony (not a repeated pattern). The cultural examples (Hans Zimmer drones, Bach organ preludes, rock ballads) further anchor 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?
The description provides clear usage context: "A foundational technique in film scoring (Hans Zimmer drones), organ preludes (Bach), and rock ballads" — telling the agent when this technique is stylistically appropriate. However, it does not explicitly name sibling alternatives or state when not to use it (e.g., vs. create_ground_bass or create_chord_progression), 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.
mcp_opendaw_create_phase_shiftA
Create a phase-shifted copy of a region — Steve Reich phasing.
Copies the source phrase and places it on a parallel track (or cross-track) with a gradually accumulating time offset. Each bar, the copy shifts by shift_per_bar beats, creating the classic "slipping" phase pattern of minimalism.
Steve Reich's "It's Gonna Rain", "Piano Phase", and "Clapping Music" use this technique. Also the foundation of techno loop phasing, ambient drift, and IDM polyrhythmic evolution.
Unlike displace_rhythm (single fixed offset), phase_shift creates a SECOND copy that drifts further each bar — the two streams start in unison and gradually separate.
Args: unit_index: Audio unit index track_index: Note track index with source phrase region_index: Region index (-1 = first region) shift_per_bar: Time shift per bar in beats (0.03125-0.5, default 0.0625 = 1/16 note per bar). Smaller = slower drift, larger = faster separation. bars: Number of bars to generate (2-16, default 8). Each bar is one repeat of the source phrase with cumulative offset. direction: Phase drift direction — "forward": copy moves later each bar (lags behind) "backward": copy moves earlier each bar (anticipates) cross_track: If >= 0, place the phased copy on this track. If -1 (default), creates a new track on the same AU for the copy. Recommended: use cross_track for explicit control. velocity_scale: Velocity multiplier for the phased copy (0.1-1.0, default 0.85 — slightly softer to distinguish from the original).
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| direction | No | forward | |
| unit_index | Yes | ||
| cross_track | No | ||
| track_index | Yes | ||
| region_index | No | ||
| shift_per_bar | No | ||
| velocity_scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the tool copies the source phrase, places it on a parallel or cross-track, and how shift_per_bar, bars, direction, and velocity_scale affect the result. It does not cover edge cases like pre-existing content on the destination track, but it is otherwise quite 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 well-structured: a one-line summary, an explanatory paragraph, a sibling comparison, and a detailed Args section. While the historical/genre references add length, they serve to clarify the intended musical use, so no part is wasted.
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 complex (8 parameters) with no annotations, but the description thoroughly covers the operation, parameter effects, and placement behavior. An output schema exists, so return-value details are handled separately; the description could mention prerequisites or error behavior, but it's largely 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?
All 8 parameters are described in detail despite the schema having 0% description coverage. Each parameter gets a meaning, and shift_per_bar, bars, direction, cross_track, and velocity_scale include ranges, defaults, or recommendations.
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 'Create a phase-shifted copy of a region' – a specific verb and resource. It clearly explains the accumulating time offset and explicitly contrasts with displace_rhythm, distinguishing the tool from its sibling.
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 names displace_rhythm as an alternative and explains that phase_shift creates a second copy that drifts further each bar, unlike the single fixed offset of displace_rhythm. It also provides musical context (Steve Reich, techno) and recommends using cross_track for explicit control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_phonk_arrangementA
Create a full drift phonk arrangement — 3 tracks: drums + 808 + cowbell lead.
Drift phonk (Kordhell, MC Slvr, LXST CXNTURY) is the TikTok-era evolution of Memphis rap — dark, distorted, high-energy, with signature elements:
120-140 BPM, usually minor key
Memphis-style drums: punchy kick on 1 and 3, snare/clap on 2 and 4, fast 16th hats with occasional rolls, lo-fi texture
808 bass with slides (glide between notes, sustained resonance)
Cowbell melody — the iconic phonk sound, catchy repetitive riffs in minor pentatonic, often detuned/dark
Sidechain feel — bass ducks when kick hits
Distorted, lo-fi aesthetic
Creates 3 tracks:
Drums (drum_track): Memphis-style — punchy kick, clap on 2&4, 16th hats with rolls at phrase ends, occasional perc hits.
808 bass (bass_track): Sliding 808 with sustained resonance. Follows root with chromatic slides, octave drops, and gaps where drums fill. The glide is simulated by short overlapping notes at pitch transitions.
Cowbell lead (cowbell_track): Repetitive minor pentatonic riff in high octave, catchy and driving. 1-bar or 2-bar cycle.
bpm: Tempo (110-150, default 130). bars: Arrangement length (4-32, default 8). root: Root note (default F = common phonk key). octave: MIDI octave for 808 (2 = C2=36).
Example: create_phonk_arrangement(bpm=130, root="F", bars=8) create_phonk_arrangement(bpm=140, root="D#", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| cowbell_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 of behavioral disclosure. It does disclose the output structure (three named tracks), pattern characteristics, and even a simulation detail ('glide is simulated by short overlapping notes'). However, it does not explain what happens to existing tracks, whether the tool is additive or overwriting, or how start_beat and unit_index influence placement, which are relevant for a multi-track mutation/generation 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 long but well-structured and front-loaded with the core purpose. The genre style block, per-track breakdown, parameter list, and examples each carry relevant information for generating a stylistically accurate arrangement. It could be slightly trimmed, but it is not wasteful.
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 high-complexity tool with 10 parameters and no parameter descriptions, the description is not fully complete. It does an excellent job covering the musical content and four key parameters, and the output schema exists for return values, but the unexplained parameters and missing placement/overwrite behavior leave gaps that make the tool only partially self-contained.
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 10 parameters with 0% schema description coverage, and the description only explains 4 of them (bpm, bars, root, octave). It provides helpful ranges and defaults for those four, but omits velocity, bass_track, drum_track, start_beat, unit_index, and cowbell_track entirely. Because the schema offers no descriptions and titles alone are weak, this leaves a significant gap for an agent trying to set track indices or timing.
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: 'Create a full drift phonk arrangement — 3 tracks: drums + 808 + cowbell lead.' It clearly distinguishes this tool from sibling genre-arrangement tools by naming drift phonk and listing exact track types and style references (Kordhell, MC Slvr, LXST CXNTURY).
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 states when to use this tool: when a drift phonk arrangement with drums, 808, and cowbell is needed. It provides rich genre context and parameters, but it does not explicitly call out alternatives or exclusion criteria (e.g., 'use create_trap_arrangement for trap'), so it stops short of a full when/why-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_pitch_stretched_clipA
Create a pitch-stretched audio clip in session view.
Pitch-stretched clips maintain pitch alignment with the project tempo. Uses AudioPitchStretchBox for play mode.
sample_id: ID from mcp_opendaw_load_audio. unit_index: Audio unit index. clip_index: Slot index in clip launcher. track_index: Audio track index within AU. bpm: Source BPM of the sample.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| sample_id | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It adds some context (pitch alignment, AudioPitchStretchBox mode) but omits important side effects such as whether creating the clip overwrites an existing clip in the slot, prerequisites like engine running, or what the return value signifies.
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-organized: an action sentence, two behavioral/technical context sentences, then a bullet-like parameter list. Every line is useful and there is no 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?
Parameter explanations are helpful, but the description lacks broader workflow context: it doesn't mention that audio must be loaded first, whether indices are zero-based, what happens if a clip already occupies the slot, or how unit/track/clip indices interrelate. The presence of an output schema reduces the need to explain return values, but behavioral completeness is still limited.
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 compensates by explaining each parameter's role. sample_id is tied to mcp_opendaw_load_audio, clip_index is defined as a slot index, and bpm is described as source BPM. Some ambiguity remains around unit_index and track_index relationship, but overall adds substantial meaning beyond titles.
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 'Create a pitch-stretched audio clip in session view' with a specific verb, resource, and location. It distinguishes itself from sibling tools like create_time_stretched_clip by emphasizing pitch alignment with project tempo and noting the use of AudioPitchStretchBox.
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 is only implied through the description of pitch-stretched behavior (maintaining pitch alignment with tempo). No explicit alternatives or 'when not to use' guidance is given, even though related tools like create_time_stretched_clip exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_pitch_stretched_regionA
Place a pitch-stretched audio region on a track.
Pitch-stretch preserves the original timing but allows pitch manipulation via warp markers. Use this when you want to tune audio to project key without changing its duration.
sample_id: The ID returned by mcp_opendaw_load_audio. unit_index: Audio unit index (default 0). start_beat: Beat position to place the region. track_index: Track index within the audio unit (default 0). bpm: Source BPM of the sample (for warp marker calculation).
Returns position and duration in PPQN.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| sample_id | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the core behavior (pitch stretch preserving timing via warp markers) and states the return value (position and duration in PPQN). However, it does not mention prerequisites beyond sample_id, potential side effects, or failure modes, leaving some ambiguity 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 well-structured and concise: a one-line purpose, a single use-case sentence, a parameter list with one-line definitions, and a return statement. No filler words, and all information is relevant and 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?
The description covers the essential information: what the tool does, when to use it, parameter semantics, and return format. The output schema exists, so return values are formally documented. Minor gaps include lack of error conditions and more explicit prerequisites (e.g., whether the track must exist), but overall it is sufficiently complete for effective tool 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 description provides a concise explanation for every parameter, including defaults for unit_index and track_index, and the purpose of bpm. Since the schema has 0% coverage, the description fully compensates by adding semantic meaning for all five parameters, making it easy for an agent to construct valid arguments.
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 begins with a clear, specific statement: 'Place a pitch-stretched audio region on a track.' It then clarifies the key distinction from time-stretching by explaining that pitch-stretch preserves timing while allowing pitch manipulation. This differentiates it from sibling tools like create_time_stretched_region and place_audio_region.
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 the tool: 'Use this when you want to tune audio to project key without changing its duration.' This provides clear usage context. It does not explicitly name alternatives, but the contrast with time-stretch is implied, which is sufficient for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_playfield_sampleA
Add a drum pad to a Playfield drum machine.
midi_note: MIDI note number for this pad (36=C1, 38=D1, 42=F#1, etc). sample_name: Name for the sample slot. duration_seconds: Duration hint for the sample slot. unit_index: Audio unit index (-1 = auto-detect Playfield).
Returns the new pad index and MIDI note.
| Name | Required | Description | Default |
|---|---|---|---|
| midi_note | Yes | ||
| unit_index | Yes | ||
| sample_name | Yes | ||
| duration_seconds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions the return value but does not state side effects, prerequisites (e.g., an existing Playfield), or failure behavior when auto-detection fails. For a mutation operation, 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 compact and well-structured: a single purpose sentence, followed by a bullet-like parameter legend, and a return value note. Every line adds value, and there is no redundant or filler content.
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 aspects: purpose, parameters, and return value. However, it does not explain what 'duration hint' actually controls, nor does it provide guidance on error cases or prerequisites. Given that the operation is straightforward and the output schema exists, the description is 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?
The input schema has 0% description coverage, but the description compensates by explaining all four parameters. It provides concrete examples for midi_note and the special meaning of unit_index = -1. However, sample_name and duration_seconds are described only as 'name for the sample slot' and 'duration hint', leaving some ambiguity about their exact 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?
The first sentence uses the specific verb 'Add' and the resource 'drum pad to a Playfield drum machine', clearly stating what the tool does. This distinguishes it from sibling tools like list_playfield_samples and set_playfield_sample_enabled. The description also clarifies that 'create_playfield_sample' means adding a pad/sample slot, not just creating a sample.
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 implies when to use the tool (when you want to add a drum pad to a Playfield), but no explicit guidance is given about when not to use it or which alternatives to choose. There is no mention of sibling tools like copy_playfield_sample or create_drum_pattern, so the usage 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.
mcp_opendaw_create_polyrhythmA
Create a polyrhythm — two rhythmic streams with different subdivision counts playing simultaneously.
A polyrhythm divides the same time span into two different numbers of equal parts. The classic 3:4 means 3 notes in the time of 4 — creating cross-rhythms used in jazz, electronic, African, and progressive music.
Creates notes on a single track: primary stream uses primary_pitch, secondary uses secondary_pitch. Both streams span the same total duration (bars × 4 beats).
primary_count: Number of primary subdivisions (2-16). E.g., 3 in a 3:4 polyrhythm. secondary_count: Number of secondary subdivisions (2-16). E.g., 4 in a 3:4 polyrhythm. bars: Total length in bars (1-8). unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. primary_pitch: MIDI pitch for primary stream (default 60 = C4). secondary_pitch: MIDI pitch for secondary stream (default 72 = C5, one octave up). primary_velocity: Velocity for primary notes 0-1. secondary_velocity: Velocity for secondary notes 0-1. duration: Note duration in beats.
Returns total notes created and polyrhythm ratio.
Common polyrhythms: 3:4 — classic cross-rhythm (jazz, electronic) 2:3 — hemiola (African, Latin) 3:5 — complex polyrhythm (progressive) 4:5 — dense polyrhythm (modern jazz) 7:8 — extreme polyrhythm (math rock)
Example: create_polyrhythm(primary_count=3, secondary_count=4, bars=2, primary_pitch=60, secondary_pitch=67)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| duration | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| primary_count | Yes | ||
| primary_pitch | No | ||
| secondary_count | Yes | ||
| secondary_pitch | No | ||
| primary_velocity | No | ||
| secondary_velocity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses useful behavior: it creates notes on a single track, spans the same total duration, and returns note count and ratio. However, it does not mention prerequisites (e.g., an existing note track), whether notes are added or replace existing content, or error handling, so the behavioral picture is incomplete.
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 lengthy but well-organized: definition, parameter details, return value, common ratios, and example. The parameter list and examples are useful, though the common polyrhythms section is somewhat optional. It is structured enough to navigate without being wasteful.
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 11 parameters, no annotations, and a rich musical concept, the description covers the core functionality well: concept, parameter semantics, common uses, and an example. It lacks prerequisites and error conditions, but the provided information is sufficient for typical use. An output schema exists, so the 'Returns' line is a bonus, not a necessity.
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 thoroughly explains every parameter, including ranges, defaults, and musical meaning (e.g., primary_count=3 in a 3:4 polyrhythm, pitch defaults with note names). This adds substantial meaning 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 clearly states the tool creates a polyrhythm with two simultaneous rhythmic streams, which is specific and unambiguous. It explains the concept and key parameters, but does not explicitly distinguish from similar sibling tools like create_cross_rhythm or create_metric_modulation, so it falls 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?
The description provides musical context (jazz, electronic, African, progressive) and defines when a polyrhythm is appropriate, but it does not explicitly state when to use this tool over alternatives or mention any exclusions. Usage is implied rather than directly contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_pop_arrangementA
Create a full pop arrangement with verse-chorus-bridge song structure across 4 tracks.
Pop music with real song form — fundamentally different from all loop-based arrangements:
Track 0: Drums — verse (sparse: kick+hat) → chorus (full: kick+snare+hat+crash) → bridge (build: rising energy) → final chorus (maximum density)
Track 1: Bass — verse (root notes, sparse) → chorus (octave jumps, driving) → bridge (walking, building) → final chorus (full energy)
Track 2: Chords — I-V-vi-IV progression (the "four chords of pop"), played differently per section: verse (light arpeggios), chorus (full block chords), bridge (sus/resolution)
Track 3: Melody — catchy hook that varies per section: verse (sparse, low) → chorus (anthemic, high register) → bridge (tension, chromatic) → final chorus (hook + variation)
At 120 BPM (default), this creates a modern pop feel. The I-V-vi-IV progression is the most used chord sequence in pop music (I=0, V=7, vi=9, IV=5) — different from rock's I-IV-V and jazz's ii-V-I. Song structure (verse-chorus-bridge) is the key difference from all loop-based arrangements.
Sections (16 bars default):
Verse 1: bars 1-4 (sparse, intimate)
Chorus 1: bars 5-8 (full energy, hook)
Verse 2: bars 9-12 (sparse + variation)
Chorus 2: bars 13-16 (full energy, hook)
Bridge: bars 17-20 (tension, build)
Final Chorus: bars 21-24 (maximum, hook + variation)
bpm: Tempo (90-140, default 120 = modern pop). bars: Total length in bars (16-32, default 16 = standard pop song). root: Root note (C is the most common pop key). octave: MIDI octave for bass (2 = C2=36, standard bass register). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / melody_track: Track indices.
Returns notes created per track and total.
Example: create_pop_arrangement(bpm=120, root="C", bars=16) create_pop_arrangement(bpm=128, root="G", bars=24)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No | ||
| melody_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 details how each track behaves across sections, the chord progression, and section lengths. However, it does not mention whether existing notes on target tracks are overwritten or if there are any destructive 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?
The description is well-structured with sections, bullets, and an example, but it is verbose. The musical theory explanations (chord progression comparisons) are informative but could be trimmed without losing essential guidance. Every sentence earns its place, but some could be more 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 complex 4-track arrangement tool with 11 parameters, the description covers track behaviors, section structure, parameter ranges, and an example. Given that an output schema exists, return values are not over-explained. Missing operational details like prerequisites for unit_index and handling of existing notes keep it from a 5.
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 descriptions are absent (0% coverage), so the description compensates by explaining most parameters: bpm range, bars range, root note, octave MIDI value, and track indices. It misses velocity and start_beat, and does not deeply explain unit_index, but overall adds substantial 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 tool creates a full pop arrangement with verse-chorus-bridge structure across 4 tracks. It is specific about the output and distinguishes itself from loop-based arrangements and other genre arrangements.
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 this tool is appropriate (pop music with real song form) and differentiates it from loop-based arrangements, rock (I-IV-V), and jazz (ii-V-I). It does not explicitly name alternative tools, but the context 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.
mcp_opendaw_create_progression_from_keyA
Auto-generate a diatonic chord progression from a detected key — no manual chord typing.
Takes key + mode (from detect_key output) and generates a genre-appropriate diatonic progression using scale degrees. Eliminates the need to manually write [["Am","min"],["F","maj"]...] — just pass key="A", mode="minor".
key: Root note name (C, C#, D, D#, E, F, F#, G, G#, A, A#, B). mode: "major" or "minor" (natural minor scale). style: Progression style:
"pop" — I-V-vi-IV (major) / i-VI-III-VII (minor) — "four chords of pop"
"jazz" — ii-V-I (major) / ii-V-i (minor) — jazz turnaround
"rock" — I-IV-V (major) / i-iv-V (minor) — blues/rock
"synthwave" — i-VI-III-VII (minor) — synthwave/emotional
"folk" — I-IV-vi-V (major) / i-iv-VII-III (minor) — folk/americana
"lofi" — ii-V-i (minor) or I-vi-IV-V (major) — lofi/jazzy unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the progression starts (0 = bar 1). chord_duration: Length of each chord in beats (4 = one bar at 4/4).
Returns: notes_created, chords, voicings, progression (chord names), key, mode.
Pipeline: detect_key("track.wav") → {key: "A", mode: "minor"} → create_progression_from_key("A", "minor", "synthwave") → create_harmonic_arrangement("Am-F-C-G")
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| mode | No | major | |
| style | No | pop | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| chord_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does explain that the tool generates diatonic progressions, takes a unit/track index, and returns notes/chords/voicings. However, it does not disclose whether existing notes are overwritten, if the tool is non-destructive, or any side effects of placing notes on a track. This is a notable 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?
The description is well-structured: summary, parameter breakdown, return values, and a pipeline example. Even though it's lengthy, each sentence earns its place—especially the style enum details, which are essential for correct usage. It is front-loaded with the core purpose and remains scannable via bullet-like lines.
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 7 parameters and no annotations, the description is remarkably complete: it explains the origin of inputs (detect_key), all parameter semantics, expected return fields, and even a full usage pipeline. It also gives concrete style examples with roman numeral progressions. The only minor absence is error handling or edge cases, but the description covers the core usage thoroughly.
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 fully compensate. It does: every parameter (key, mode, style, unit_index, track_index, start_beat, chord_duration) is explained with ranges, defaults, and detailed examples. The style parameter is exceptionally well documented with degree patterns and genre labels, providing far more than the schema's bare titles.
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 phrase: 'Auto-generate a diatonic chord progression from a detected key' — clearly stating what the tool does and its input. It distinguishes itself from siblings like create_chord_progression by explicitly linking to detect_key output and the 'no manual chord typing' value proposition.
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: it says the tool takes key+mode from detect_key output, shows an explicit pipeline (detect_key → create_progression_from_key → create_harmonic_arrangement), and explains the style options. It does not explicitly name alternatives or state when-not-to-use, but the usage context is strong enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_psytrance_arrangementA
Create a psytrance arrangement — 145 BPM hypnotic Goa/psychedelic.
Psytrance (psychedelic trance) is a subgenre of trance born in Goa, India (early 1990s) and developed in Israel, Europe. Key:
145-150 BPM, 4/4 time, driving and hypnotic
Rolling bassline: 16th notes with a specific "k-b-k-b" pattern (kick on downbeat, bass on offbeat, creating a rolling feel)
Layered percussion: tight hats, snare rolls, shakers
Hypnotic lead: repeated motifs, evolving filter sweeps
FM synth sounds, alien textures, sci-fi atmosphere
Often in F minor or E minor
Creates 4 tracks:
Drums (track_index): Kick on every beat, snare on 2&4, tight 16th hats, shaker pattern, snare roll at end of phrases
Bass (track_index+1): Rolling 16th bassline — kick-aligned bass notes with offbeat syncopation, creating the psytrance "gallop" feel
Lead (track_index+2): Hypnotic repeated motif with filter sweep simulation (velocity variations), octave jumps
Atmosphere (track_index+3): Sparse sustained notes, sci-fi pad-like textures on bar starts
Default key: F minor.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| key_root | No | F | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 generated musical content in detail (kick pattern, bassline syncopation, lead motifs, atmosphere textures) and default key, but omits side effects such as whether existing notes on the target tracks are overwritten, or if any prerequisites exist. This is a notable gap for a creation 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 well-structured with a clear summary, bullet points on genre traits, and a numbered list of tracks. While the genre history adds length, it provides useful musical context and each section earns its place. Slightly verbose but not excessively so.
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 thoroughly covers the musical output and track structure, but falls short on explaining all parameters and their constraints. Since there is an output schema, return values are not required to be described, but the lack of parameter semantics for 4 of 7 parameters makes the tool less complete 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?
Schema description coverage is 0%, so the description must compensate. It explains track_index usage (offsets for the 4 tracks) and implies bpm and key_root defaults (145 BPM, F minor). However, it does not explain bars, velocity, start_beat, unit_index, or their effect on the generated arrangement, leaving most parameters without semantic 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 clearly states the tool's function: 'Create a psytrance arrangement' with explicit details on genre characteristics and the 4 tracks it creates (Drums, Bass, Lead, Atmosphere). It distinguishes this from sibling genre tools by specifying psytrance-specific elements like 145 BPM, rolling bassline, and hypnotic lead.
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 creating a psytrance arrangement, with specific musical attributes and track layout. However, it does not explicitly mention alternatives or when not to use it, though the genre-specific name and content implicitly distinguish it from siblings like create_trance_arrangement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_random_walk_melodyA
Create a melody using a random walk through a scale — stochastic generation.
Each note is chosen by walking up or down the scale from the previous note. The walk is constrained by max_step (how many scale degrees can move per step) and direction_bias (probability of ascending vs descending).
This produces melodies that feel coherent (smooth stepwise motion) yet unpredictable — the hallmark of generative music. Brian Eno's generative systems, Xenakis's stochastic pieces, ambient textures, IDM melodies.
Unlike generate_melody (contour-guided weighted random), random walk produces stepwise motion where each note depends on the previous one — creating the melodic continuity that contour guidance doesn't guarantee.
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, phrygian, lydian, mixolydian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues). bars: Number of bars (1-32). At default duration=0.5, 4 bars = 32 notes. octave: Starting MIDI octave (1-6, default 4 = C4=60). max_step: Maximum scale steps per move (1-7, default 3). 1 = only adjacent scale tones (very smooth, stepwise). 2 = allow skips of up to a third. 3 = up to a fourth (mix of steps and skips). 5 = up to a sixth (dramatic leaps). 7 = full octave (free movement). direction_bias: -1.0 to +1.0 (default 0 = equal up/down). Negative = tend downward, positive = tend upward. 0.5 = 75% chance up, 25% down. duration: Note duration in beats (0.0625-4.0, default 0.5 = eighth). duration_variation: "none" (uniform), "slight" (+/-50%), "wide" (16th to half), "dotted" (mix of dotted and straight). rest_probability: 0-0.5 (default 0 = no rests). Inserts rests instead of notes at the given probability. velocity: Base velocity 0-1. velocity_variation: "none" (uniform), "slight" (+/-0.1), "dynamic" (+/-0.3), "human" (gaussian-ish, +/-0.15). boundary_behavior: "reflect" (bounce back at octave limits), "wrap" (wrap around), "clamp" (stay at boundary). seed: PRNG seed for reproducibility. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, walk statistics (range, average interval, direction ratio), and seed for reproducibility.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| seed | No | ||
| scale | No | minor | |
| octave | No | ||
| duration | No | ||
| max_step | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| direction_bias | No | ||
| rest_probability | No | ||
| boundary_behavior | No | reflect | |
| duration_variation | No | none | |
| velocity_variation | No | none |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the stochastic algorithm: notes depend on previous ones, max_step constrains movement, direction_bias sets probability, and boundary behavior controls octave limits. It even mentions return statistics (range, average interval, direction ratio), giving a clear picture of the tool's behavior beyond its name and 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 long but well-structured: a clear opening definition, algorithm explanation, artistic context, sibling comparison, and a systematically formatted Args list. Given 16 parameters, every section earns its place without 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?
Despite 16 parameters, zero schema descriptions, and no annotations, the description covers all parameters, provides defaults, ranges, relationships (e.g., bars vs duration), musical use cases, and return values. The output schema is noted as present, so not explaining exact return structure is acceptable. It is complete for a complex generative 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 0%, but the description documents every parameter with ranges, defaults, and examples. For instance, 'max_step: Maximum scale steps per move (1-7, default 3). 1 = only adjacent scale tones...' and 'direction_bias: -1.0 to +1.0... 0.5 = 75% chance up.' This fully compensates for the schema's lack of 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 exactly what the tool does: 'Create a melody using a random walk through a scale — stochastic generation.' It uses a specific verb, resource, and method, and clearly distinguishes itself from the sibling generate_melody by contrasting stepwise dependence with contour-guided weighted random.
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 rich usage context, naming aesthetic applications (Eno, Xenakis, ambient textures, IDM melodies) and explicitly comparing to generate_melody: 'Unlike generate_melody (contour-guided weighted random), random walk produces stepwise motion where each note depends on the previous one.' This tells the agent when to choose this tool over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ratchetA
Create a ratchet — repeated notes with changing subdivision rate.
A ratchet (also called "accelerando repeat" or "Bach ratchet") is a series of repeated notes where the spacing between notes gradually decreases (accelerate) or increases (decelerate), creating a sense of acceleration or deceleration. Used extensively in Baroque music (Bach cadences), electronic build-ups, and drum fills.
Args: unit_index: Audio unit index track_index: Note track index pitch: MIDI pitch for all ratchet notes (0-127) start_beat: Start position in beats length_beats: Total length in beats subdivisions: Subdivision mode — "accelerate" = start slow, get faster (16th→32nd→64th) "decelerate" = start fast, get slower (64th→32nd→16th) "constant" = even subdivision (no change, like a roll) "exponential" = exponential acceleration max_subdivisions: Maximum notes per beat at the fastest point (4=16th, 8=32nd, 16=64th, 32=128th) velocity: Base velocity (0-1) velocity_decay: Velocity reduction per note (0=uniform, 0.02=gradual fade) pitch_drift: Semitones to drift per note (0=same pitch, 1=ascending chromatic, -1=descending, 12=ascending octaves) region_index: Target region (-1 = auto-create/append)
Returns: JSON with notes_created, pitch, subdivision_points, total_beats.
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | Yes | ||
| pitch_drift | No | ||
| track_index | Yes | ||
| length_beats | No | ||
| region_index | No | ||
| subdivisions | No | accelerate | |
| velocity_decay | No | ||
| max_subdivisions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It explains the generative behavior (repeated notes with changing subdivision), parameter effects (velocity decay, pitch drift), region handling ('-1 = auto-create/append'), and expected return fields. It lacks explicit disclosure about whether existing notes in the target region are preserved or replaced, but it goes beyond a basic create 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 well-structured: a one-line definition, then contextual background, then a parameter dictionary. It is relatively lengthy and includes some illustrative elaboration, but given the complexity (11 parameters, no schema descriptions), the length is justified and each section 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?
For a complex tool with 11 parameters and no schema descriptions, the description provides comprehensive coverage: concept, use cases, parameter semantics, and return values. Minor details are omitted (e.g., exact exponential subdivision algorithm, interaction with existing region contents), but overall it is sufficiently complete 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?
Schema description coverage is 0%, so the Args section must compensate, and it does thoroughly. Every one of the 11 parameters is given a meaningful definition with examples, ranges, and special values (e.g., max_subdivisions mapping 4=16th, region_index -1 semantics, subdivisions modes with arrows). This fully compensates for the schema's lack of 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 begins with a specific verb-object pair: 'Create a ratchet — repeated notes with changing subdivision rate.' It further defines the term with examples (accelerando repeat, Bach ratchet) and scope (Baroque, electronic build-ups, drum fills), making it clearly distinct from other creation tools in the sibling set.
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 the tool ('Used extensively in Baroque music... electronic build-ups, and drum fills'), implying appropriate scenarios. However, it does not explicitly name alternative tools or state when not to use it, leaving the exclusion guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_reggae_arrangementA
Create a full reggae arrangement — one-drop drums + melodic bass + skank guitar + organ across 4 tracks.
Roots reggae with the signature one-drop feel — fundamentally different from all other arrangements:
Track 0: Drums — one-drop pattern: kick AND snare TOGETHER on beat 3 (the "drop"), with hi-hat on all 8ths. No kick on beat 1 — the emptiness on 1 is the reggae feel. Organ bubble on 8th off-beats.
Track 1: Bass — THE lead instrument in reggae: melodic, repetitive, driving. Root-based with octave and fifth walks, full bar sustain. In reggae, bass carries the melody — not the guitar.
Track 2: Guitar — skank: staccato chops on the off-beats (the "and" of 1, the "and" of 2, etc.). The signature reggae guitar sound — short, percussive, on every off-beat. This is the rhythmic backbone, not the drums.
Track 3: Keys — organ bubble: Hammond-style sustained chords with a shuffle feel, filling the space between guitar skanks. Adds harmonic richness and the classic roots sound.
At 80 BPM (default), this creates the classic roots reggae pocket — slow, heavy, meditative. The one-drop (kick+snare together on 3) is the fundamental difference from all 10 other arrangements: rock puts kick on 1 & 3, funk puts kick on 1 with syncopation, reggae drops everything on 3 and leaves 1 empty. The bass is the lead instrument — unique among all genres.
bpm: Tempo (65-95, default 80 = classic roots reggae). bars: Arrangement length (4-16, default 8). root: Root note (A is a classic reggae key — Am). octave: MIDI octave for bass (2 = A2=45, standard reggae bass register). unit_index: AU index with note tracks. drum_track / bass_track / guitar_track / keys_track: Track indices.
Returns notes created per track and total.
Example: create_reggae_arrangement(bpm=80, root="A", bars=8) create_reggae_arrangement(bpm=72, root="D", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | A | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| keys_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| guitar_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 burden of behavioral disclosure. It thoroughly describes the musical output (patterns per track, BPM feel, bass role) and states returns ('notes created per track and total'). However, it does not disclose critical side effects: whether existing notes on the specified tracks are overwritten, whether tracks must already exist, or whether the tool creates tracks. 'unit_index: AU index with note tracks' implies an existing unit, but the mutation behavior is unstated.
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 long but well-structured with bullet points per track and a clear opening summary. It includes examples and front-loads the primary purpose. However, it is somewhat repetitive: the 'one-drop' concept and 'bass is the lead' are explained multiple times (in the intro, in track descriptions, and in the BPM paragraph). Some trimming could improve conciseness without losing substance.
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 11 parameters, 0% schema coverage, and no annotations, the description is largely complete: it covers musical style, defaults, parameter meanings, and return behavior. It also references the output schema ('Returns notes created per track and total'). Gaps remain: two parameters undescribed and no mention of prerequisite/destructive behavior. Despite these gaps, the description provides enough context for an agent to decide whether and how to invoke 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?
Schema coverage is 0%, so the description must compensate. It adds meaningful context for 9 of 11 parameters: bpm (65-95 range, 80 = classic roots), bars (4-16), root ('A is a classic reggae key — Am'), octave ('2 = A2=45, standard reggae bass register'), unit_index, and all four track indices. However, it omits 'velocity' and 'start_beat', leaving those two parameters without any additional explanation beyond the schema 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 opens with a specific verb and resource: 'Create a full reggae arrangement — one-drop drums + melodic bass + skank guitar + organ across 4 tracks.' It clearly distinguishes this tool from siblings by explicitly contrasting reggae's one-drop feel with rock and funk, and by stating 'fundamentally different from all 10 other arrangements.' The musical specifics (track 0 = drums, track 1 = bass lead, etc.) remove any ambiguity about the tool's 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 implies clear usage context: use for roots reggae arrangements at 65-95 BPM, with examples of classic keys (A) and tempos (72, 80). It differentiates from other genres by explaining how rock and funk handle kick placement versus reggae's drop on 3. However, it does not explicitly name alternative tools (e.g., create_rock_arrangement) or state when NOT to use this tool, so it falls short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_reggae_percussionA
Create Jamaican reggae percussion patterns across 6 styles.
Reggae drum patterns are the rhythmic backbone of Jamaican popular music. The one-drop is the most iconic — kick and snare together on beat 3, creating the characteristic "drop" that defines roots reggae.
Styles:
one_drop: Roots reggae (Bob Marley, Burning Spear). Kick+snare on beat 3 of each bar. Hi-hat 8th notes. The "drop" = beat 3 hits hard, beats 1/2/4 are empty or sparse. 65-80 BPM.
rockers: Late roots/early dancehall (Sly Dunbar, Robbie Shakespeare). Kick on 1 and 3, snare on 2 and 4. Steady four-on-the-floor feel but with reggae push. 75-90 BPM.
steppers: Dub/roots (Burning Spear "Marcus Garvey"). Four-on-the-floor kick on every beat, snare on 3. Driving, hypnotic. 70-85 BPM.
ska: Early Jamaican ska (Skatalites, Prince Buster). Fast, upbeat emphasis. Kick on 1+3, snare on 2+4, riding hi-hat with heavy syncopation. 120-180 BPM.
rocksteady: Transition era (Alton Ellis, Hopeton Lewis). Slower than ska, laid-back. Kick on 1+3, snare on 3, hi-hat 8ths with slight behind-the-beat feel. 70-85 BPM.
dancehall: Modern Jamaican (Shabba Ranks, Sean Paul). Programmed feel, kick on 1, 3-and, snare on 2, 4, with syncopated hi-hat. 90-120 BPM.
swing: 0.0-0.6, offsets off-beat hats (reggae rarely swings heavy, but ska can use 0.3-0.5).
Creates drum notes on track_index using GM percussion pitches: 36 (kick), 38 (snare), 42 (closed hat), 46 (open hat).
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | one_drop | |
| swing | No | ||
| velocity | No | ||
| tempo_bpm | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclose key behaviors: it creates notes on a specified track_index using specific GM percussion pitches, and explains how swing offsets off-beat hats. However, it does not clarify whether existing notes are overwritten, how tempo_bpm interacts with style-specific BPM ranges, or what unit_index means, leaving notable behavioral 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?
The description is front-loaded with a clear purpose and organized as a readable list of styles with consistent formatting. While the historical context sentence and detailed per-style BPM ranges add some length, the information is relevant and earns its place, with only minor 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 rich for the core purpose—it explains all six styles, swing behavior, and target pitches—but it omits semantics for several parameters (bars, velocity, start_beat, unit_index) and does not clarify the relationship between tempo_bpm and style-defined BPM ranges. Given the tool’s complexity and optionality, the description is helpful 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?
Since schema coverage is 0%, the description must compensate for missing property descriptions. It explicitly defines the style values, swing range, and track_index, and lists the GM pitches used, but leaves bars, velocity, tempo_bpm, start_beat, and unit_index unexplained, so it only partially covers the parameter space.
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 clear, specific statement: 'Create Jamaican reggae percussion patterns across 6 styles.' It names the resource (reggae percussion) and the action (create), and the detailed style list distinguishes it from sibling genre-creation tools like create_reggae_arrangement and create_clave.
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 by enumerating six reggae styles with characteristics and tempo ranges, which implicitly tells the user when to select each style. However, it does not explicitly compare alternatives or state when to use this over sibling tools like create_reggae_arrangement or create_drum_pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_riffA
Create a genre-specific riff — catchy repeated melodic fragment.
A riff is a short, memorable, repeated musical phrase that defines a song's identity. Unlike a melody (which develops through a section) or an ostinato (which repeats a scale pattern), a riff is a self-contained hook with rhythmic character and pitch content that immediately identifies the song.
rock: Power chord-based riffs, palm-mute aesthetic, bluesy bends, syncopated rests. Deep Purple, Led Zeppelin, Black Sabbath.
funk: Sixteenth-note syncopation, ghost notes, staccato stabs, octave jumps, tight pocket. James Brown, Funkadelic, Tower of Power.
metal: Galloping rhythms, palm-muted low strings, tritone intervals, fast alternate picking. Iron Maiden, Metallica, Slayer.
blues: Shuffle feel, pentatonic bending, call-response phrases, turnaround aesthetic. B.B. King, Freddie King, Albert King.
hip_hop: Sample-chop aesthetic, short repeating loop, melodic minor pentatonic, sparse placement. Dr. Dre, RZA, J Dilla.
riff_type: rock | funk | metal | blues | hip_hop key_root: Root note scale_type: minor_pentatonic | major_pentatonic | blues | minor | phrygian bars: Riff length (1-4, default 2) octave: MIDI octave (3 = C3=48, good for guitar range) velocity: Base velocity 0-1 seed: PRNG seed for reproducibility
Example: create_riff(riff_type="rock", key_root="E", bars=2) create_riff(riff_type="funk", key_root="D", scale_type="minor_pentatonic", bars=1) create_riff(riff_type="metal", key_root="E", scale_type="phrygian", bars=2)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| seed | No | ||
| octave | No | ||
| key_root | No | E | |
| velocity | No | ||
| riff_type | No | rock | |
| scale_type | No | minor_pentatonic | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It describes musical style and parameter ranges, but never states whether the operation writes to a track, overwrites existing notes, requires permissions, or is reversible. The lack of side-effect disclosure is a significant gap for a creation 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 well-structured with a clear opening, genre bullet points, parameter list, and examples. Each section serves a purpose, though it is longer than minimal; the genre details and examples add value but could be trimmed without losing the core message.
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 musical concept and primary parameters, but it completely omits the placement parameters (start_beat, unit_index, track_index), leaving agents uncertain how the riff integrates with a track or region. It also does not clarify whether the riff is appended, replaces existing notes, or creates a new region, making the invocation context 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?
The schema provides zero property descriptions, so the description compensates by explaining riff_type, key_root, scale_type, bars, octave, velocity, and seed, including allowed values and defaults. However, it omits start_beat, unit_index, and track_index, leaving those parameters underexplained despite being 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 opens with 'Create a genre-specific riff — catchy repeated melodic fragment,' a specific verb+resource statement. It further distinguishes a riff from a melody and an ostinato, clearly separating this tool from siblings like create_melody and create_ostinato.
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 this tool by contrasting riff against melody and ostinato, and it gives genre-specific guidance with examples. However, it does not explicitly name alternative tools or state when not to use this tool, 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.
mcp_opendaw_create_riserA
Create a riser — ascending pitch sweep for build-up transitions.
Generates a sequence of notes with ascending pitch from start_pitch to end_pitch over the specified length. Velocity ramps up proportionally. Useful for:
Build-ups before a drop/chorus
Transition between sections
Tension creation
unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the riser begins. length_beats: Duration of the riser in beats (1-16). start_pitch: Starting MIDI pitch (default 36 = C2). end_pitch: Ending MIDI pitch (default 84 = C6). steps: Number of notes in the sweep (8-128, default 32 = sixteenths over 4 beats). curve: Pitch curve — "linear" (even), "exp" (slow start, fast end), "log" (fast start, slow end). velocity: Base velocity (0-1, ramped proportionally with pitch).
Returns notes created and pitch range.
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | exp | |
| steps | No | ||
| velocity | No | ||
| end_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| start_pitch | No | ||
| track_index | No | ||
| length_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 generates a sequence of notes, ramps velocity proportionally, and returns the created notes and pitch range. However, it does not specify whether existing notes are preserved or overwritten, leaving a minor ambiguity about 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?
The description is front-loaded with a clear one-sentence purpose, followed by concise mechanism and use-case bullets, then a parameter list. 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?
Despite lacking annotations and having 9 parameters, the description covers all parameter semantics, usage context, and return value, making it self-sufficient for an agent to select and 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?
All 9 parameters are individually documented with meanings, defaults, ranges, and examples (e.g., start_pitch default 36 = C2, steps 32 = sixteenths over 4 beats), fully compensating for the 0% schema description 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 defines the tool as creating a riser with an ascending pitch sweep, explicitly differentiating it from sibling tools like create_buildup by specifying the velocity ramp and pitch progression. It also provides concrete use cases.
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 lists specific use cases (build-ups, transitions, tension creation) but does not mention when not to use it or name alternative tools, so it lacks explicit exclusion/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_rnb_arrangementA
Create a full modern R&B arrangement — trap-influenced drums + deep sub bass + extended chords + vocal-style lead.
Contemporary R&B (The Weeknd / Frank Ocean / SZA / Brent Faiyaz) — dark, atmospheric, slow-burn:
Track 0: Drums — half-time R&B groove: kick on 1 with syncopated ghost, snare/clap on 3, triplet hi-hat rolls. Programmable feel — not live, but loose. Half-time at 68 BPM feels like 34 BPM.
Track 1: Bass — deep sub bass: long sustained root notes, occasional octave/fifth movement. More sustain than soul, less movement than funk. The low-end foundation — felt more than heard.
Track 2: Chords — dark extended voicings (min9, maj7, dom9, min7b5) on i-VI-III-VII minor-key progression. Rhodes/synth pad texture with long sustains. The Weeknd's signature dark harmony — minor key with lush 9ths.
Track 3: Lead — vocal-style melodic phrases: wide interval leaps, pentatonic minor with blue notes, long sustained notes with melismatic fills. Call-and-response phrasing — the "sung" quality without actual vocals.
At 68 BPM (default), this creates the contemporary R&B pocket — slow, atmospheric, dark. The i-VI-III-VII progression (same as synthwave but with extended chords and half the tempo) is the modern R&B harmonic language. Half-time drums + sub bass + dark 9ths = The Weeknd "After Hours" aesthetic.
bpm: Tempo (55-85, default 68 = modern R&B sweet spot). bars: Arrangement length (4-16, default 8). Must be multiple of 4. root: Root note (C minor = dark R&B key, common for The Weeknd). octave: MIDI octave for bass (2 = C2=36, sub bass register). unit_index: AU index with note tracks. drum_track / bass_track / chord_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_rnb_arrangement(bpm=68, root="C", bars=8) create_rnb_arrangement(bpm=75, root="Ab", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| chord_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose side effects and prerequisites, but it does not. It mentions 'Programmable feel — not live, but loose' and return values, yet never clarifies whether writing to the specified tracks overwrites existing content, whether tracks must already exist, or what occurs on invalid track indices. This is a critical transparency gap for a tool that writes notes.
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 well-structured with a clear opener, bullet-like track breakdown, and a parameter heading, but it is overly long with artist references and theoretical explanations (e.g., 'i-VI-III-VII... same as synthwave') that carry the message without adding tool-specific operational value. It is informative but not 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?
Despite 11 parameters and no annotations, the description supplies substantial context: track-by-track creation details, parameter ranges, examples, and return type. It lacks precondition/error-handling notes, but the combination of genre spec, parameter semantics, and examples makes it sufficient for an agent to invoke correctly in most 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 documents 9 of 11 parameters with useful semantics (bpm range, bars multiple of 4, root note, octave register, track indices) and gives example calls. However, it omits velocity and start_beat, which remain only schema titles. The coverage is strong but not complete, so it earns a mid score.
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 'Create a full modern R&B arrangement' followed by a specific genre recipe (trap-influenced drums, sub bass, extended chords, vocal lead). The name and content clearly distinguish it from sibling genre arrangement tools like create_reggae_arrangement or create_synthwave_arrangement.
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?
Strong usage context is provided via tempo ranges (55-85), artist references (The Weeknd, Frank Ocean), and explicit track-by-track musical specifications. However, it never explicitly states when NOT to use this tool or contrasts it with alternative genre tools, leaving the agent to infer applicability from genre.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_rock_arrangementA
Create a full rock arrangement — rock beat drums + bass + power chords + riff across 4 tracks.
Classic rock with blues-based harmony and guitar-driven energy:
Track 0: Drums — rock beat: kick on 1 & 3, snare on 2 & 4, with crash on downbeats and fills at bar transitions. The backbone.
Track 1: Bass — root-fifth bassline locking with kick drum, with walks between chord changes. Blues-based, driving.
Track 2: Guitar — power chords (root+fifth) on chord changes, with palm-muted downstrokes between. The defining instrument.
Track 3: Keys — sustained chord pads backing the guitar, filling the midrange. Optional but adds depth.
At 120 BPM (default), this creates a mid-tempo rock feel. The I-IV-V blues-based harmony (A-E-D for key of A, or E-A-D for key of E) is the foundation of rock from Beatles to AC/DC. Power chords are the signature — root+fifth voicings, no third (ambiguous major/minor).
bpm: Tempo (90-160, default 120 = mid-tempo rock). bars: Arrangement length (4-16, default 8). root: Root note (E is the most common rock guitar key — open strings). octave: MIDI octave for bass (2 = E2=40, standard bass register). unit_index: AU index with note tracks. drum_track / bass_track / guitar_track / keys_track: Track indices.
Returns notes created per track and total.
Example: create_rock_arrangement(bpm=120, root="E", bars=8) create_rock_arrangement(bpm=140, root="A", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | E | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| keys_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| guitar_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the tracks created, optional keys track, and return value, but doesn't state whether existing notes on those tracks are overwritten or if specific prerequisites (such as pre-created tracks) are needed beyond the unit_index note.
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 a clear summary and then organized by track, but includes extended musical theory paragraphs (e.g., Beatles to AC/DC) that could be trimmed without losing essential info.
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 complexity (11 params, 4 tracks) and presence of an output schema, the description provides extensive detail on arrangement structure, defaults, and examples. It lacks explicit side-effect warnings but covers most operational 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 coverage is 0%, and the description compensates by explaining 9 of 11 parameters (bpm, bars, root, octave, unit_index, and track indices) with ranges and musical context. However, velocity and start_beat are 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 clearly states 'Create a full rock arrangement — rock beat drums + bass + power chords + riff across 4 tracks,' with a specific verb and resource. It distinguishes from sibling genre tools by detailing the rock-specific track layout and musical style.
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 (when a rock arrangement is needed) but doesn't explicitly contrast with sibling tools like create_reggae_arrangement or provide exclusions. It gives examples and parameter guidance but no 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_rondoA
Create a rondo — recurring theme alternating with contrasting episodes.
A rondo is a structural form where a principal theme (A) alternates with contrasting episodes (B, C, D). The theme always returns, providing unity while episodes provide contrast and development.
Form types:
simple: ABA (3 sections). Miniature rondo, common in character pieces.
classical: ABACA (5 sections). Standard classical rondo (Mozart, Beethoven). A=tonic, B=dominant/relative, C=more distant.
seven_part: ABACABA (7 sections). Large rondo, Beethoven Op.51, Chopin Op.16. Extended with second return of B before final A.
pop_rock: ABABCB (6 sections). Pop/rock structure masquerading as rondo — verse-chorus-verse-chorus-bridge-chorus. A=verse, B=chorus, C=bridge.
jazz: ABAC (4 sections). Jazz standard form — theme, improvisation feel, theme, contrast. A=head, B=solo section, C=trading.
Key root: C, C#, Db, D, ... B. Scale: major, minor, dorian, phrygian, lydian, mixolydian, aeolian, locrian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues, whole_tone.
The A theme uses tonic scale degrees (0, 2, 4, 2, 0). B episode uses dominant/relative degrees (4, 6, 2, 6, 4) — brighter. C episode uses more distant degrees (5, 1, 3, 1, 5) — contrasting. Each section is bars_per_section bars long.
Creates sections sequentially on track_index (melody on track_index, bass on track_index+1).
| Name | Required | Description | Default |
|---|---|---|---|
| key_root | No | C | |
| velocity | No | ||
| form_type | No | classical | |
| tempo_bpm | No | ||
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| bars_per_section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that sections are created sequentially on track_index (melody) and track_index+1 (bass), and it details scale-degree patterns for A, B, and C sections. However, it does not state whether the tool overwrites existing notes, requires pre-created tracks, or has 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?
The description is long but well-structured and front-loaded with a one-sentence definition. The detailed form list, scale list, and harmonic-degree explanations are useful and relevant. It could trim some redundancy with schema defaults, but overall it earns its length for a complex music-generation 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?
Given the tool's complexity and the complete lack of schema descriptions or annotations, the description provides a rich amount of context: form definitions, scale-degree patterns, track placement, and section length. It omits side-effect and prerequisite details, but the presence of an output schema reduces the need to describe return values, and the content is comprehensive enough for an agent 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?
Schema description coverage is 0%, and the description partially compensates by enumerating valid key_root values, scale_name options, and form_type variants, as well as explaining bars_per_section and track_index placement. It does not clarify velocity, tempo_bpm, start_beat, or unit_index, leaving some parameters 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 opens with 'Create a rondo' and immediately explains the concept as 'recurring theme alternating with contrasting episodes.' It clearly identifies a specific resource/action and distinguishes itself from siblings like create_sonata_form and create_ternary_form by focusing on rondo structure and providing form 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?
The description gives substantial musical context and form-type options, but it never explicitly states when to use this tool over other compositional siblings like create_sonata_form or create_variations. The guidance is implied through the definition of rondo and its forms, but no direct alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_samba_patternA
Create a Brazilian samba percussion ensemble pattern — multi-instrument layered groove.
Samba is the heartbeat of Brazilian music — a multi-instrument percussion ensemble where each drum has its own pattern, and the layers interlock to create a dense, driving groove. Unlike songo (a single drum-kit pattern), samba is an ensemble: each instrument plays independently, and the combination creates the full sound. Batucada (the carnival samba style) can have 300+ percussionists, each on one drum.
The 5 core instruments:
SURDO — The bass drum. Plays on beats 1 and 3 (the "floor"). Low, resonant, the heartbeat. Surdo marcado (marked) = steady, surdo virado (turned) = syncopated.
CAIXA — The snare drum. Plays continuous 16th notes with a backbeat accent on beats 2 and 4. The "glue" of the ensemble, filling the middle register.
TAMBORIM — Small handheld drum. Plays a syncopated 16th pattern with rim taps, the "conversation" layer. Often uses "virada" (turn) fills.
CHOCALHO — Shaker. Plays continuous 16th notes, the "wash" that keeps the time steady. Always present, rarely varied.
REPIQUE — Lead drum. Plays calls, fills, and syncopated accents that cue the ensemble. The "conductor" of the bateria.
styles: "batucada" — Carnival samba (Rio de Janeiro). Dense, fast, all 5 instruments. Surdo on 1+3, caixa 16ths, tamborim syncopated, chocalho 16ths, repique accents. "samba_enredo" — Samba school parade style. More structured, surdo patterns more varied, repique has call-and-response. "pagode" — Backyard samba (informal). Lighter, no repique, tamborim simpler. More swing, less density. "samba_funk" — Samba-funk fusion. Surdo pattern funkier, caixa with ghost notes, tamborim 16ths, chocalho offbeats.
bars: Pattern length (2-16, even for 2-bar cycle). velocity: Base velocity (0-1). surdo_pitch: Surdo (bass drum) MIDI pitch (36 = C1). caixa_pitch: Caixa (snare) MIDI pitch (38 = D1). tamborim_pitch: Tamborim MIDI pitch (42 = F#1). chocalho_pitch: Chocalho (shaker) MIDI pitch (46 = A#1). repique_pitch: Repique (lead drum) MIDI pitch (50 = D2).
Args: bars: Pattern length in bars (2-16, even). style: Samba style (batucada, samba_enredo, pagode, samba_funk). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. surdo_pitch: Surdo MIDI pitch. caixa_pitch: Caixa MIDI pitch. tamborim_pitch: Tamborim MIDI pitch. chocalho_pitch: Chocalho MIDI pitch. repique_pitch: Repique MIDI pitch.
Returns notes created, instrument breakdown, and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | batucada | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| caixa_pitch | No | ||
| surdo_pitch | No | ||
| track_index | No | ||
| repique_pitch | No | ||
| chocalho_pitch | No | ||
| tamborim_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the tool's generative behavior in detail: it creates multi-instrument layered grooves, explains the role of each instrument, and describes style-specific pattern variations. It also states the return value ('Returns notes created, instrument breakdown, and pattern info'), which adds transparency. However, it does not mention potential side effects like overwriting existing notes or prerequisites such as requiring a valid note 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 longer than average but well-structured into sections for instrument roles, styles, and parameter descriptions. The educational content about samba and the instruments is relevant and not filler, as it helps the agent understand the nuances of pattern generation. It could be slightly trimmed (e.g., the '300+ percussionists' note), but it remains focused and organized.
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 complexity (11 parameters, 0% schema coverage, no annotations), the description is remarkably complete. It covers the tool's purpose, the musical context, instrument behaviors, style variants, all parameter meanings, and the return value. The presence of an output schema reduces the need to detail return structures, but the description still mentions what is returned, making it self-sufficient for an agent to select and 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?
Schema description coverage is 0%, but the description includes an 'Args' section that lists all 11 parameters with meaningful explanations, such as 'bars: Pattern length in bars (2-16, even)' and 'style: Samba style (batucada, samba_enredo, pagode, samba_funk)'. It also maps pitch parameters to MIDI note names, adding context beyond the raw schema. A couple of parameters like 'unit_index: AU index' are terse, but overall the description compensates well for the schema 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 opens with 'Create a Brazilian samba percussion ensemble pattern — multi-instrument layered groove', which is a specific verb + resource + qualifier. It further distinguishes itself from songo ('Unlike songo... samba is an ensemble'), clarifying that it creates multi-instrument patterns rather than a single drum-kit pattern, which differentiates it from sibling tools like create_songo_pattern.
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 that samba is an ensemble pattern and contrasts it with songo, implying this tool is for samba ensembles rather than single-drum patterns. It also enumerates four styles with detailed characteristics, guiding selection based on musical context. However, it does not explicitly name alternative tools or say 'use this when X instead of Y', 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.
mcp_opendaw_create_scale_runA
Create a scale run — ascending or descending scale sequence for fills and transitions.
Generates a sequence of scale notes moving up or down across one or more octaves. Used for drum fills, melodic transitions, lead build-ups, and bass walks.
scale: Scale type (major, minor, dorian, phrygian, blues, etc. — 14 types from music_theory). root: Root note name (C, C#, D, ... B). direction: "up" (ascending) or "down" (descending). octaves: Number of octaves to span (1-4). 1 = 7-8 notes, 2 = 14-15 notes, etc. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. step_duration: Duration of each note in beats (0.125 = 8th triplet, 0.25 = 16th). velocity: Note velocity 0-1. octave: Starting octave (1-7, default 4).
Returns total notes created and scale info.
Example: create_scale_run(scale="minor", root="A", direction="up", octaves=2, step_duration=0.0625)
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| scale | Yes | ||
| octave | No | ||
| octaves | No | ||
| velocity | No | ||
| direction | No | up | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| step_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses that the tool 'generates a sequence of scale notes moving up or down across one or more octaves' and returns total notes and scale info, with parameter-driven placement. It does not detail whether existing notes are overwritten or how tracks are managed, but the core creation behavior and note-count scaling are clearly communicated.
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 well-structured with a one-line summary, a parameter list, return-value note, and an example. Despite being long, every sentence adds value—no redundant filler. The front-loaded summary immediately identifies 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?
For a 10-parameter tool, the description covers every parameter with meaningful guidance, provides an example, and states the return format. It is self-contained and complete enough for an agent to invoke correctly without external context, even though the output schema is not shown 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?
Schema description coverage is 0%, but the description compensates thoroughly by listing all 10 parameters with types, defaults, and examples. It explains meaning beyond schema, such as '1 = 7-8 notes, 2 = 14-15 notes' for octaves and duration notation for step_duration, plus a full usage example.
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 'Create a scale run — ascending or descending scale sequence for fills and transitions,' which is a specific verb+resource combination. It clearly differentiates this from sibling tools by focusing on scale-based note sequences and their musical applications.
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 use cases: 'Used for drum fills, melodic transitions, lead build-ups, and bass walks.' This gives contextual guidance on when to use the tool. It does not explicitly list alternatives or when NOT to use it, but the application context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_second_lineA
Create a New Orleans second line percussion ensemble — street parade groove.
The New Orleans second line beat is one of the foundational rhythms of American music — the root of funk, R&B, and rock drumming. Born from jazz funeral parades and brass band street processions, it combines African rhythmic sensibility with European march tradition.
Instruments:
BASS DRUM — Deep boom. Plays the "street beat": downbeat + syncopated "and" of 2 and 4. The backbone that drives the parade forward.
SNARE DRUM — Backbeat on 2 and 4 with ghost notes on the "e" and "a" of beats. Loose, funky, slightly behind the beat feel.
HI-HAT — Charleston rhythm (beat 1, "and" of 2, beat 3, "and" of 4) or straight 8ths depending on style. The pulse-keeper.
TOM-TOM — Fills at phrase ends, rhythmic calls in Indian style. Adds melodic colour to the percussion arrangement.
CYMBAL — Crash accents on phrase starts. Sparse, ceremonial.
styles: "traditional" — Classic street parade (early 20th century). Steady Charleston hi-hat, backbeat snare, syncopated bass. The original second line groove. "brass_band" — Modern brass band style (Dirty Dozen, Rebirth). Denser, funkier. More ghost notes, tom rolls, 8th-note hi-hat. "mardi_gras_indian" — Mardi Gras Indian style (Wild Tchoupitoulas). Call-and- response between tom and snare. Ritualistic, tribal. Sparse bass, tom-driven. "jazz_funeral" — Dirge to celebration. Bar 1: slow, sparse (dirge on the way to the cemetery). Bar 2: upbeat, driving (celebration on the way back). Dramatic dynamic shift. "bounce" — New Orleans bounce (1980s+, DJ Jimi, Magnolia Shorty). "Triggerman" double-time bass drum, 16th-note hi-hat, backbeat snare. The foundation of NOLA hip-hop.
Args: bars: Pattern length (4-16, even). style: Style name. velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. bass_pitch: Bass drum MIDI pitch (36 = C1). snare_pitch: Snare drum MIDI pitch (38 = D1). hi_hat_pitch: Hi-hat MIDI pitch (42 = F#1). tom_pitch: Tom-tom MIDI pitch (45 = A1). cymbal_pitch: Crash cymbal MIDI pitch (49 = C#2).
Returns notes created, instrument breakdown, and style info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | traditional | |
| velocity | No | ||
| tom_pitch | No | ||
| bass_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| snare_pitch | No | ||
| track_index | No | ||
| cymbal_pitch | No | ||
| hi_hat_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 describes the instrument behaviors and style variations in detail (e.g., 'BASS DRUM — Deep boom. Plays the street beat'), which is valuable. However, it does not disclose operational side effects such as whether existing notes are overwritten, whether a target track must pre-exist, or how the tool mutates project state beyond 'Create'.
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 purpose, followed by well-organized sections for instruments, styles, args, and return value. Though it includes a historical paragraph that may be extraneous for tool invocation, the structure is clear and every section 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?
For an 11-parameter tool with 5 style options and an output schema, the description covers all parameters with constraints, enumerates styles with musical detail, and mentions the return value. It lacks explicit operational prerequisites or side-effect warnings, but given the available output schema and complexity, it is largely 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 coverage is 0%, so the description must compensate. It adds constraints and examples: bars ('4-16, even'), velocity ('0-1'), pitches ('36 = C1'), and style values are enumerated with character descriptions. However, unit_index and track_index are only minimally described as 'AU index' and 'Note track index', which is terse but understandable.
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+resource: 'Create a New Orleans second line percussion ensemble — street parade groove.' This clearly states the tool's function and distinguishes it from sibling tools like create_drum_pattern or create_clave, which are generic or for other genres.
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 implies usage context: 'Create a New Orleans second line percussion ensemble' tells the agent when to invoke it. However, it does not explicitly exclude alternatives or mention when not to use it, such as preferring a different genre tool, so it falls short of providing explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_section_transitionA
Create a complete section transition in one call — combines multiple automation tools.
The most common arrangement technique: moving from one section to another (verse→chorus, breakdown→drop, intro→main). Each preset combines filter sweeps, volume fades, mute automation, and impacts into a single coordinated transition. Replaces 3-5 individual calls.
transition_type: One of: "drop" — Breakdown→drop: filter close on synths, drums muted, then filter open + unmute + impact "buildup" — Verse→chorus: filter open on lead, volume fade in on pads, snare roll implied "breakdown" — Main→breakdown: filter close on drums, volume fade out on bass, mute synths "intro" — Silence→intro: volume fade in on all, filter open on pads "outro" — Main→outro: volume fade out on all, filter close on lead start_beat: Transition start position in beats. duration_beats: Total transition length in beats (default 16 = 4 bars). unit_indices: Comma-separated AU indices. Convention: drums=0, bass=1, lead/synth=2, pads=3. Adjust to match your arrangement. Default "0,1,2,3".
Returns summary of all automation created across units.
Examples: create_section_transition("drop", start_beat=32, duration_beats=16) → 32-48: filter close on synth, drums muted at 32, filter open at 44, unmute+impact at 48 create_section_transition("intro", start_beat=0, duration_beats=8) → 0-8: volume fade in on all, filter open on pads
| Name | Required | Description | Default |
|---|---|---|---|
| start_beat | No | ||
| unit_indices | No | 0,1,2,3 | |
| duration_beats | No | ||
| transition_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses what the tool does (filter sweeps, volume fades, mute automation, impacts) and details the exact behavior per preset (e.g., 'filter close on synths, drums muted, then filter open + unmute + impact'). It also states the return value ('Returns summary of all automation created across units'). Missing is whether existing automation is overwritten or if any prerequisites exist, but overall it paints a clear behavioral picture.
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 well-structured with a high-level summary, a 'why use' statement, parameter details, and examples. No sentence is wasted; the formatting with arrows and line breaks makes the preset definitions scannable. It's longer than average, but every element 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?
Given the tool's complexity (4 params, multiple automation behaviors) and lack of annotations, the description is quite complete. It covers all presets, timing parameters, unit index conventions, and provides examples. The output schema exists, so the description's note on the return value is sufficient. A minor gap is lack of info about how existing automation is handled, but this doesn't significantly detract.
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 fully compensates. transition_type is enumerated with detailed meanings for each value. start_beat, duration_beats, and unit_indices all have clear definitions, defaults, and additional context (e.g., the unit index convention 'drums=0, bass=1, lead/synth=2, pads=3'). Examples demonstrate parameter usage concretely.
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: 'Create a complete section transition in one call' and explicitly contrasts it with individual automation tools ('Replaces 3-5 individual calls'). It identifies the specific resource (section transitions) and the verb (create), and distinguishes itself from related tools like create_filter_sweep and create_volume_fade by framing itself as a composite.
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 clear usage context: 'The most common arrangement technique: moving from one section to another' and implies when to use it over manual calls by saying it 'combines multiple automation tools' and 'Replaces 3-5 individual calls'. It doesn't state explicit when-not-to-use scenarios, but the guidance is strong and helps select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_sendA
Create a parallel FX send bus from an audio unit.
Creates a NEW AudioBusBox (FX bus) with its own AudioUnitBox, then sends a copy of src_unit's signal to that FX bus via AuxSendBox. The dry signal continues to the main output unchanged — this is a parallel send, not a redirect.
After creating the send, add effects (Reverb, Delay) to the FX bus unit using add_effect(fx_unit_index, effect_type). The FX bus unit index is returned.
src_unit: Source audio unit index (the instrument sending signal). name: Name for the FX bus (e.g. "Reverb Bus", "Delay Bus"). send_level_db: Send level in dB (-∞ to +12). -6dB is a good starting point. routing: 'pre' (pre-fader) or 'post' (post-fader, default).
Returns send_index on src AU, and fx_unit_index (the new FX bus AU index for adding effects).
Workflow: create_instrument_track → create_send → add_effect(Reverb on fx_unit_index)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| routing | Yes | ||
| src_unit | Yes | ||
| send_level_db | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and does so excellently. It discloses exactly what gets created (new AudioBusBox, AudioUnitBox, AuxSendBox), what happens to the dry signal, that it's a parallel send not a redirect, and what it returns (send_index and fx_unit_index). This is rich, honest 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 longer than average but well-structured: summary sentence, detailed behavior, parameter definitions, return values, and workflow. Each section adds value, and the front-loaded summary helps immediate comprehension. It could be slightly trimmed but is appropriately sized for the tool's complexity.
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, behavior, all parameters, return values, and a workflow, making it fully self-contained despite the bare schema and lack of annotations. The output schema exists, but the description already explains the key return fields. It's hard to imagine a gap that an agent would need filled.
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 fully explain the parameters. It does: src_unit is described as the source audio unit index, name includes examples, send_level_db gives a range (-∞ to +12) and a suggested starting point (-6dB), and routing enumerates 'pre' vs 'post' with default. All four params are meaningfully explained.
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+resource: 'Create a parallel FX send bus from an audio unit.' It then explains the mechanics (new AudioBusBox, AuxSendBox, dry signal continues) and explicitly distinguishes from a redirect, making the tool's purpose unmistakable and differentiating it from sibling tools like create_audio_bus.
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: it's a parallel send workflow, and it states 'not a redirect'. It also gives a sequential workflow (create_instrument_track → create_send → add_effect) and explains that the FX bus unit index is used for adding effects. It doesn't explicitly list alternative tools for when not to use it, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_sequenceA
Create a melodic sequence — repeat a pattern at transposed pitch levels.
The most fundamental compositional technique in Western music: take a melodic fragment, repeat it at a different pitch (usually up/down a 4th or 5th). Think baroque sequences (Pachelbel), jazz ii-V-I chains, film score ascending quint sequences, or EDM build-ups with rising motifs.
pattern: Comma-separated MIDI pitches (e.g. "60,62,64,67"). transposition: Semitones to shift each repeat (default 5 = perfect 4th up). Common: 5 (4th), 7 (5th), 2 (major 2nd), -2 (down), -5 (4th down). repeats: Number of transposed repetitions (1-8, default 3). direction: "up" (transpose up), "down" (transpose down), "alternating" (up/down/up...). segment_beats: Duration of each pattern repetition in beats (0.5-16, default 2). velocity_decay: Velocity change per repeat (-0.3 to 0.3). Positive = louder, negative = quieter (fade-out). 0 = constant. unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the sequence begins. velocity: Base velocity 0-1 (default 0.8).
Returns notes created, repeat count, total transposition.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | No | 60,62,64,60 | |
| repeats | No | ||
| velocity | No | ||
| direction | No | up | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| segment_beats | No | ||
| transposition | No | ||
| velocity_decay | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds substantial context about how parameters affect behavior (e.g., velocity_decay meaning, unit_index fallback to first AU). However, it does not address side effects like whether notes are appended or replaced, or error conditions when no AU/track is found, leaving some behavioral 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?
The description is well-structured and every sentence earns its place. It front-loads the core purpose, follows with useful musical context, and then provides a clear, parameter-by-parameter breakdown. This is appropriately sized for a 10-parameter tool with an empty 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 complex tool with 10 parameters and no annotations, the description is mostly complete: it covers all parameters, provides return value information, and gives musical context. However, it lacks explicit statements about whether the tool creates new regions or appends to existing ones, and how errors are surfaced, leaving minor gaps in a complete mental model.
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 thoroughly by explaining every parameter with meaningful detail: patterns, ranges, defaults, and examples (e.g., transposition common values, direction options, velocity_decay semantics). This fully bridges the gap left by 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 opens with a specific verb and resource: 'Create a melodic sequence — repeat a pattern at transposed pitch levels.' This clearly distinguishes the tool from siblings like create_melody or create_ostinato by focusing on transposition as the core operation. The additional musical examples (baroque sequences, jazz ii-V-I chains) reinforce the 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 ('the most fundamental compositional technique'), with genre examples that suggest appropriate scenarios. However, it does not explicitly mention alternatives or when not to use it, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_soliA
Create a soli — ensemble unison passage with octave doublings.
A soli is a section where all instruments play the same melodic line in rhythmic unison, typically at different octaves. Common in jazz big band (Basie, Ellington, Herman), orchestral tutti passages, and rock/metal unison riffs. Unlike a fugue (polyphonic imitation) or canon (delayed entry), a soli is simultaneous and homorhythmic.
Melody pattern: space-separated scale degrees (0=root, 2=2nd, 4=3rd, -1=7th below, etc.). Negative = below root. Rhythm pattern: space-separated durations in beats. Key root: C, C#, Db, D, ... B. Scale: major, minor, dorian, phrygian, lydian, mixolydian, aeolian, locrian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues, whole_tone. Voices: 2-5 (e.g. 3 = root octave + 1 octave up + 2 octaves up). Octave spread: how many octaves between lowest and highest voice.
Creates voices on track_index, track_index+1, ... track_index+voices-1.
| Name | Required | Description | Default |
|---|---|---|---|
| voices | No | ||
| key_root | No | C | |
| velocity | No | ||
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| octave_spread | No | ||
| melody_pattern | No | 0 2 4 2 0 -1 0 3 | |
| rhythm_pattern | No | 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency. It discloses the core behavior (unison melody with octave doublings), the pattern syntaxes, and the exact track placement ('Creates voices on track_index, track_index+1, ... track_index+voices-1'). However, it does not state whether existing notes are overwritten or whether target tracks must already exist, which is a minor 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 well-structured with a definition, parameter explanations, and a clear side-effect note. The genre history and fugue/canon comparison are useful albeit slightly lengthy. Every section contributes to understanding, but it could be tightened without losing 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 10-parameter tool with no annotations, and while the description covers most core concepts, it omits explanations for unit_index, start_beat, and velocity. It also does not clarify what happens if melody and rhythm pattern lengths differ. The output schema exists, so return values are covered, but the missing parameter semantics are notable for a tool of this 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%, but the description compensates well by explaining most parameters: melody/rhythm patterns, key root, scale names, voices, octave spread, and track_index. It leaves velocity, start_beat, and unit_index undefined, so it is not fully complete, but the added detail is substantial.
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: 'Create a soli — ensemble unison passage with octave doublings.' It defines what a soli is, provides musical context, and explicitly distinguishes it from fugue and canon, which are sibling tools. The verb and resource are specific 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 gives rich musical context (jazz big band, orchestral tutti, rock/metal riffs) and contrasts soli with fugue/canon, implying when to choose this tool over polyphonic or imitative alternatives. However, it does not explicitly name sibling tools or state clear 'use this when...'/'instead of...' 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.
mcp_opendaw_create_soloA
Create a genre-specific melodic solo over a chord progression.
Generates a complete solo line using vocabulary appropriate to the chosen style. Unlike generate_melody (contour-guided) or create_random_walk (stepwise), this tool uses genre-specific soloing techniques:
bebop: Chromatic approach tones, chord-tone targeting on strong beats, enclosure (upper+lower chromatic neighbor), bebop scale passing notes, ii-V-I arpeggio fluency. Charlie Parker, Dizzy Gillespie, Clifford Brown.
blues: Minor pentatonic + blue notes (b5, b3 bent), repetition of short motifs with variation, call-response phrasing, string-bending aesthetic via pitch slides. B.B. King, Eric Clapton, Stevie Ray Vaughan.
rock: Pentatonic positions, repeated riffs, wide interval jumps, rhythmic syncopation, climax-building through register shifts. Jimmy Page, Hendrix, Gilmour.
jazz_swing: Swing 8th notes, guide-tone lines, chord-tone on beat 1+3, arpeggio + approach patterns. Lester Young, Sonny Rollins.
fusion: Mixolydian/dorian modes, odd-meter phrasing, wide intervals, chromatic passing, rhythmic displacement. Metheny, Brecker, Holdsworth.
solo_type: bebop | blues | rock | jazz_swing | fusion key_root: Root note (C, C#, D, ... B) scale_type: major | minor | dorian | mixolydian | blues | pentatonic_minor bars: Solo length (4-32, default 8) octave: MIDI octave for solo (4 = C4=60) velocity: Base velocity 0-1 seed: PRNG seed for reproducibility
Returns notes created and solo characteristics.
Example: create_solo(solo_type="bebop", key_root="F", scale_type="major", bars=8) create_solo(solo_type="blues", key_root="A", scale_type="blues", bars=12) create_solo(solo_type="rock", key_root="E", scale_type="pentatonic_minor", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| seed | No | ||
| octave | No | ||
| key_root | No | C | |
| velocity | No | ||
| solo_type | No | bebop | |
| scale_type | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains what the tool generates (genre-specific solo line, techniques per style) and states the return value ('Returns notes created and solo characteristics'). However, it does not disclose potential side effects such as whether notes are appended to an existing region, whether existing notes are overwritten, or how track/unit selection affects placement. This is a moderate gap for a generation tool without 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?
The description is long but extremely well-structured: it opens with a clear one-sentence purpose, uses a bulleted breakdown of genre techniques, lists parameters, and closes with examples. Every section earns its place for a complex music-generation tool. The length is justified, though slightly verbose for a single-tool description, hence not a perfect 5.
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 10 parameters and no annotation support, the description is remarkably complete: it explains what the tool does, how it differs from siblings, defines all parameters, provides examples, and mentions the return type. However, it does not explicitly state prerequisites such as needing an existing chord progression or a selected track/unit, which are implied by the presence of track_index and unit_index. Given the schema and output schema exist, the description is strong but not fully 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 schema itself has 0% description coverage, so the description is the sole source of parameter meaning. It compensates fully by defining each parameter inline (solo_type with its allowed values, key_root, scale_type, bars, octave, velocity, seed) and includes real usage examples. This adds significant semantic value beyond the raw schema fields.
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: 'Create a genre-specific melodic solo over a chord progression.' It clearly distinguishes itself from siblings by explicitly naming generate_melody and create_random_walk and contrasting its genre-specific approach, making the tool's unique purpose 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?
The description provides explicit usage guidance: it states when to use this tool versus alternatives ('Unlike generate_melody... or create_random_walk... this tool uses genre-specific soloing techniques'). It also lists the five supported genres with detailed stylistic descriptions, giving the agent the necessary context to choose the right style and tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_solo_automationA
Mute all tracks except the solo track for a beat range, then restore.
Essential production technique: spotlight one element (bass solo, drum break, vocal spotlight) while everything else drops out. Without this you need N separate create_mute_automation calls with coordinated timing — this tool does it in one shot and guarantees all tracks return audible after.
Internally calls create_mute_automation for each non-solo track with events [[0, false], [start_beat, true], [end_beat, false]] — audible before solo, muted during, audible after.
solo_track: Track index that stays audible throughout (0-based). total_tracks: Total number of tracks to manage (e.g. 4 for a 4-track arrangement). start_beat: Beat position where solo begins (others mute). end_beat: Beat position where solo ends (others unmute). unit_indices: Optional comma-separated AU indices (e.g. "0,1,2,3"). If empty, uses 0..total_tracks-1.
Returns per-track mute schedule and confirmation.
Examples:
Drum break: drums solo for 4 beats (1 bar at 120 BPM)
create_solo_automation(solo_track=0, total_tracks=4, start_beat=8, end_beat=12)
Bass spotlight at bar 9
create_solo_automation(solo_track=1, total_tracks=4, start_beat=32, end_beat=40)
| Name | Required | Description | Default |
|---|---|---|---|
| end_beat | Yes | ||
| solo_track | Yes | ||
| start_beat | Yes | ||
| total_tracks | Yes | ||
| unit_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It goes into significant detail about internal behavior: 'Internally calls create_mute_automation for each non-solo track with events [[0, false], [start_beat, true], [end_beat, false]] — audible before solo, muted during, audible after.' This discloses the exact event sequence and guarantees restoration, far exceeding typical 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 well-structured: summary, use case, internal mechanics, parameter list with examples, return value, and examples. It is longer than a two-liner, but every sentence adds value given the low schema coverage. The front-loaded first sentence conveys the core purpose immediately, and the structure is 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?
This tool has 5 parameters, no annotations, and a non-trivial behavior (multi-track mute automation). The description covers the use case, internal implementation, each parameter, return value, and practical examples, making it fully self-contained. It even mentions the output in prose, aligning with the 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 0%, but the description manually explains every parameter: solo_track, total_tracks, start_beat, end_beat, unit_indices — including types, defaults, and examples. It even provides two code examples showing realistic parameter values, fully compensating for the schema's lack of 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 opens with a precise action statement: 'Mute all tracks except the solo track for a beat range, then restore.' It clearly identifies the resource (tracks) and the operation (mute/restore), and it distinguishes itself from the sibling tool create_mute_automation by emphasizing it is a one-shot solution.
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 use this tool: 'Essential production technique: spotlight one element... Without this you need N separate create_mute_automation calls with coordinated timing — this tool does it in one shot.' It names the alternative and gives concrete musical examples (drum break, bass spotlight), making the use case unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_sonata_formA
Create sonata form — exposition, development, recapitulation.
Sonata form is the structural foundation of classical symphonies, sonatas, string quartets, and concertos from Haydn through Mahler. Three main sections:
EXPOSITION (bars 1-N): Two contrasting themes.
Theme 1 in the home key (tonic): stepwise, lyrical, conjunct
Transition: modulates from tonic to dominant (or relative major if minor key)
Theme 2 in the new key: more rhythmic, wider intervals
Closing group: cadential figures in the new key
DEVELOPMENT (bars N+1 to N+M): Fragmentation and modulations.
Takes fragments from Theme 1 and Theme 2
Sequences through related keys (iii, vi, ii, IV)
Builds tension through rising sequences
Retransition: dominant pedal leading back to tonic
RECAPITULATION (bars N+M+1 to end): Both themes in the tonic.
Theme 1 returns in tonic (as in exposition)
NO modulation — Theme 2 now in tonic (not dominant)
Closing group in tonic
Optional coda (4 bars): final cadential reinforcement
Melody track: track_index. Bass track: track_index + 1. The development section uses sequence-based modulation, the hallmark of classical development technique.
Scale options: major, minor, dorian, phrygian, lydian, mixolydian, aeolian, locrian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues, whole_tone.
| Name | Required | Description | Default |
|---|---|---|---|
| key_root | No | C | |
| velocity | No | ||
| recap_bars | No | ||
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| exposition_bars | No | ||
| development_bars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 useful behavioral details such as melody on track_index and bass on track_index+1, and that the development section uses sequence-based modulation. However, it does not state whether existing notes are cleared or replaced, what prerequisites exist, or what side effects occur on the target tracks.
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 well-structured with clear numbered sections and front-loaded purpose. However, it is verbose: the music-theory tutorial details (e.g., 'stepwise, lyrical, conjunct', 'closing group: cadential figures') exceed what is operationally needed for tool invocation and could be condensed without losing essential guidance.
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 compositional tool, the description richly covers the musical form, scale options, and track layout – strong contextual grounding. But it omits operational details for 3 parameters and does not describe whether the tool overwrites existing region content. The presence of an output schema covers return values, but these gaps prevent full completeness.
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 substantial meaning for scale_name (full list of valid values), track_index (melody/bass relationship), and the bar-count parameters (exposition/development/recap implied by the structural explanation). However, velocity, start_beat, and unit_index are never explained, leaving a meaningful 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 first sentence 'Create sonata form — exposition, development, recapitulation' uses a specific verb + resource and clearly distinguishes this tool from sibling form-creating tools like create_binary_form, create_ternary_form, and create_rondo. The detailed structural description reinforces exactly what is being generated.
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 ('structural foundation of classical symphonies, sonatas, string quartets, and concertos from Haydn through Mahler'), implicitly signaling classical-era composition. However, it never explicitly names alternatives or states when not to use this tool versus other form generators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_songo_patternA
Create a songo drum pattern — the Cuban drum-kit fusion that revolutionized Latin music.
Songo emerged in the 1970s with Los Van Van (drummer Changuito). It fused son montuno, rumba, jazz, and rock drumming into a single drum-kit pattern — the first time Cuban percussion was adapted to a Western kit. Unlike clave (a timeline), tumbao (congas), or cascara (timbale shell), songo is a complete drum-kit groove: kick + snare + hi-hat + tom accents working together as one synchronized engine. It became the foundation of modern salsa, timba, and Latin jazz drumming.
The pattern is 2 bars in 4/4. Kick plays syncopated bombo notes, snare alternates between rim clicks and open hits, hi-hat plays a continuous 8th-note pattern with accents, and toms fill rhythmic gaps with tonal accents. The feel is loose but locked — every stroke relates to the 3-2 clave without explicitly playing it.
variations: "classic" — Original Los Van Van songo. Kick on 1, 2.5, 4, 6.5. Snare rim clicks on 3, 7. Open snare on 4.5. HH 8ths. "modern" — Timba-era songo (1990s+). Denser kick, ghost snare notes, tom fills on bar 2. More aggressive, busier. "fusion" — Jazz-influenced. Ride-like HH pattern, syncopated kick displacements, brush snare. Los Hermanos approach. "songo_funk" — Songo with funk inflection. Kick on 1, 1.75, 3.5, 4.75. Ghost snare 16ths. Backbeat on 2 and 4. Groove-oriented.
bars: Pattern length (2-16, must be even for 2-bar cycle). velocity: Base velocity (0-1). kick_pitch: MIDI pitch for kick drum (36 = C1). snare_pitch: MIDI pitch for snare (38 = D1). hh_pitch: MIDI pitch for hi-hat (42 = F#1). tom_pitch: MIDI pitch for tom accents (45 = A1).
Args: bars: Pattern length in bars (2-16, even). variation: Pattern variation (classic, modern, fusion, songo_funk). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. kick_pitch: Kick MIDI pitch. snare_pitch: Snare MIDI pitch. hh_pitch: Hi-hat MIDI pitch. tom_pitch: Tom MIDI pitch.
Returns notes created, stroke breakdown, and pattern info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| hh_pitch | No | ||
| velocity | No | ||
| tom_pitch | No | ||
| variation | No | classic | |
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| snare_pitch | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavior details. It explains the pattern structure, note placements, and available variations, and discloses the return value ('Returns notes created, stroke breakdown, and pattern info'). However, it doesn't disclose side effects like whether existing notes are overwritten/appended, or how unit_index/track_index affect the insertion target, which is a notable 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?
The description includes extensive historical and musical background (two paragraphs on the history and feel of songo) that isn't necessary for invoking the tool. While the opening is clear and sections are labeled, the length makes it much less concise than needed for an agent to process quickly.
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 the verbosity, the description is functionally complete: it explains all parameters, variations, and output expectations. The presence of an output schema and the description's return-value statement cover the result. It's missing minor operational details (e.g., whether notes are inserted or replace existing content), but overall it's sufficient for an agent to use 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?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It covers all 10 parameters with ranges and defaults (bars 2-16 even, velocity 0-1, pitch defaults), and provides one-line definitions in the Args section, fully compensating for the schema's lack of 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 opening sentence 'Create a songo drum pattern' states a specific verb and resource. The description further differentiates from related tools by contrasting songo with clave, tumbao, and cascara, explicitly noting it is a complete drum-kit groove, which distinguishes it from sibling tools like create_clave and create_tumbao.
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 strong context by distinguishing songo from clave, tumbao, and cascara and detailing the variations (classic, modern, fusion, songo_funk), helping agents choose the right pattern. It doesn't explicitly state when to avoid this tool or name alternative tools, 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.
mcp_opendaw_create_song_structureA
Create song structure markers for arrangement (intro/verse/chorus/bridge/outro).
Creates labeled markers at section boundaries, enabling agents to reason about song form. Reduces 5-10 marker calls to one structured call.
sections: JSON array of section objects: [{"name": "Intro", "bars": 4}, {"name": "Verse 1", "bars": 8}, ...]. If bars omitted, defaults to 8. Names are used as marker labels. unit_index: AU index (unused but kept for API consistency).
Returns created markers with positions and total duration.
Example: sections='[{"name":"Intro","bars":4},{"name":"Verse","bars":8},{"name":"Chorus","bars":8},{"name":"Outro","bars":4}]'
| Name | Required | Description | Default |
|---|---|---|---|
| sections | Yes | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the main behavior (creating labeled markers at section boundaries), the default bar length (8), and return values (markers with positions and total duration). It also candidly notes the unit_index is unused. It could further clarify whether markers are placed at song start or the playhead, and whether existing markers are affected, but the disclosed information is solid.
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 efficiently organized: a concise purpose statement, a brief rationale, clearly separated parameter explanations, a return note, and a useful example. Every sentence adds value, and nothing is redundant.
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 moderately complex with two parameters, one of which requires a structured JSON format. The description covers purpose, parameter semantics, defaults, and return values, making it sufficient for an agent to invoke correctly. It could be more complete by specifying where markers are anchored (e.g., beginning of arrangement) and whether the tool overwrites or appends to existing markers, but overall it provides a strong operational 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 description coverage is 0%, so the description fully compensates. It explains the sections parameter with a precise JSON format, the default for omitted bars, and the meaning of names. It also clarifies that unit_index is ignored. A concrete example is provided, leaving no ambiguity about the expected format.
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+resource: 'Create song structure markers for arrangement (intro/verse/chorus/bridge/outro)'. It explicitly mentions creating labeled markers at section boundaries, and the claim of reducing '5-10 marker calls to one structured call' differentiates it from the sibling add_marker tool.
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 a clear use case ('enabling agents to reason about song form') and explicitly positions itself as a batch alternative to individual marker calls. It also explains that unit_index is unused 'for API consistency', guiding the agent to ignore it. However, it doesn't explicitly say when not to use it or mention alternative tools for single-marker operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_song_with_variationsA
Build a complete song with real musical variations between sections — one call.
Unlike create_genre_sections (which repeats the same loop at different velocities), this creates a song where each section has actual musical variation: drum density changes, bass octave shifts, melody transforms, and track exclusion. All 14 genres supported.
sections: Comma-separated section specs. Each spec is: name:bars:velocity:preset
name: Section label (e.g. "verse1", "chorus", "bridge")
bars: Length in bars (4-32)
velocity: Base velocity 0-1
preset: One of:
"full" — all tracks, normal density
"drums_only" — drums only, others silenced
"drums_bass" — drums + bass, no harmony/melody
"full_busy" — all tracks, busy drums (density 1.5)
"breakdown" — sparse drums (0.3), no bass, inverted melody
"melody_transpose5" — full, melody transposed +5 semitones
"melody_transposeN" — full, melody transposed N semitones
"melody_invert" — full, melody inverted around middle C
"melody_reverse" — full, melody retrograde
"melody_octave_up" — full, melody up one octave
"bass_octave_up" — full, bass up one octave
"bass_sub" — full, bass down two octaves (sub bass)
"fade" — drums + bass, sparse, low velocity (outro)
"drop" — all tracks, busy drums, octave-up bass (climax)
Default: "intro:4:0.5:drums_only,verse1:8:0.8:full,chorus:8:1.0:full_busy, verse2:8:0.8:melody_transpose5,bridge:4:0.6:breakdown,outro:4:0.4:fade" = 36-bar song with 6 varied sections.
apply_mix: If True, calls apply_genre_mix after all sections. apply_humanize: If True, calls apply_genre_humanization after mix. apply_master: If True, calls add_mastering_chain after humanize.
Returns sections created, transforms per section, total notes, and pipeline status.
Example:
36-bar DnB song with 6 varied sections
create_song_with_variations("dnb")
48-bar house epic with custom sections
create_song_with_variations("house", sections="intro:8:0.4:drums_only,build:8:0.7:drums_bass,drop:8:1.0:drop, breakdown:8:0.5:breakdown,drop2:8:1.0:full_busy,outro:8:0.3:fade")
24-bar minimal techno
create_song_with_variations("techno", sections="intro:4:0.5:drums_only,main:8:0.8:full,drop:4:1.0:full_busy,outro:8:0.4:fade", apply_mix=True, apply_humanize=True, apply_master=True)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| root | No | ||
| genre | Yes | ||
| sections | No | intro:4:0.5:drums_only,verse1:8:0.8:full,chorus:8:1.0:full_busy,verse2:8:0.8:melody_transpose5,bridge:4:0.6:breakdown,outro:4:0.4:fade | |
| apply_mix | No | ||
| bass_track | No | ||
| drum_track | No | ||
| unit_index | No | ||
| apply_master | No | ||
| melody_track | No | ||
| harmony_track | No | ||
| apply_humanize | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It details what happens inside the tool: section variations, track exclusion, and that booleans trigger downstream calls (apply_genre_mix, apply_genre_humanization, add_mastering_chain). It does not explicitly state necessary project state or destructive behavior, but for a generative creation tool the stated behavior is largely 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 long but well-structured: purpose, differentiation, parameter format, default value, downstream flags, return value, and examples. The preset list earns its place because it is essential for correctly constructing the sections parameter. Information is front-loaded with the core purpose and alternative distinction.
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 complex 12-parameter tool with no annotations, the description covers the central workflow, defaults, and expected returns. The presence of an output schema reduces the need to elaborate the return structure. Gaps remain for genre-specific required parameters and track/unit selections, but examples and detailed sections documentation make the tool usable for primary 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?
Schema description coverage is 0%, so the description must compensate. It thoroughly documents 'sections', including the spec format and all 14 presets, plus apply_mix/humanize/master. However, bpm, root, bass_track, drum_track, unit_index, melody_track, and harmony_track are left unexplained, leaving significant parameter semantics unresolved.
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+resource: 'Build a complete song with real musical variations between sections — one call.' It clearly distinguishes from sibling create_genre_sections by contrast ('Unlike create_genre_sections...') and states all 14 genres supported.
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?
Explicit guidance is provided: it tells when to use this tool over create_genre_sections, explains the sections format with preset options, includes defaults, and shows three practical examples for different genres. Pipeline order for apply_mix, apply_humanize, and apply_master is also specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_soul_arrangementA
Create a full soul arrangement — gospel drums + melodic bass + Rhodes chords + horn stabs across 4 tracks.
Motown / Stax / Atlantic soul — Otis Redding, Aretha Franklin, Marvin Gaye style:
Track 0: Drums — gospel-influenced: steady kick with ghost notes, backbeat snare, ride cymbal with triplet feel. Soul groove is laid-back but deep — the pocket is behind the beat.
Track 1: Bass — melodic walking bass: root → fifth → octave → walk to next chord tone. Not just root pumping — soul bass sings.
Track 2: Keys — Rhodes/Wurlitzer chord stabs on I-IV-vi-V gospel changes. Warm, gospel-tinged voicings (maj7, min9). The harmonic foundation — church-meets-R&B.
Track 3: Horns — Motown horn section: stabs on chord changes, melodic fills at phrase ends. Tight, arranged, call-and-response with vocals.
At 72 BPM (default), this creates the classic slow soul groove — deep pocket, gospel changes, warm Rhodes. The I-IV-vi-V progression is the gospel quartet influence that separates soul from funk (which vamps on one chord) and from pop (which uses I-V-vi-IV). Soul is about feel and melody, not rhythm complexity.
bpm: Tempo (65-90, default 72 = classic slow soul). bars: Arrangement length (4-16, default 8). Must be multiple of 4 for chord changes. root: Root note (C is a warm soul key). octave: MIDI octave for bass (2 = C2=36, standard soul bass register). unit_index: AU index with note tracks. drum_track / bass_track / keys_track / horns_track: Track indices.
Returns notes created per track and total.
Example: create_soul_arrangement(bpm=72, root="C", bars=8) create_soul_arrangement(bpm=80, root="F", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| keys_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| horns_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description takes on the burden of explaining effects. It details the exact musical output per track, the default BPM's effect, and the constraint that bars must be a multiple of 4. It also states the return value ('Returns notes created per track and total'). However, it does not specify whether notes are appended or overwrite existing notes on the target tracks, which is a notable 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 well-organized: a one-sentence summary, followed by per-track breakdown, stylistic rationale, parameter list, return value, and usage examples. While lengthy, every section adds useful information and the structure aids scanning.
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 (4 tracks, 11 parameters), the description is largely complete: it covers most parameters, provides musical character, constraints, and examples. Gaps include the undocumented velocity and start_beat parameters and lack of detail on whether existing track content is preserved or replaced, preventing a perfect score.
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?
Despite the schema having zero parameter descriptions, the tool description compensates well: it explains bpm with a range and default, bars with a validity constraint, octave with MIDI note mapping, root with a suggested key, and the track parameters with their roles. It fails to mention the velocity and start_beat parameters, leaving those to defaults without explanation.
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 'Create a full soul arrangement — gospel drums + melodic bass + Rhodes chords + horn stabs across 4 tracks,' which clearly identifies the tool's function and distinguishes it from genre siblings by specifying the genre and instrumentation. It further lists each track's role, leaving no ambiguity about what the 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 description provides clear stylistic context by naming Motown/Stax/Atlantic soul and specific artists, and explicitly contrasts soul with funk and pop ('The I-IV-vi-V progression is the gospel quartet influence that separates soul from funk...'). It does not name alternative tools directly, but the genre distinction implicitly guides when to use this tool versus other arrangement creators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_stabA
Create rhythmic stabs — short chord jabs that define house, disco, funk.
Generates short chord hits on a rhythmic grid. Each 'x' in the rhythm pattern triggers a stab (a short chord with fast decay). Perfect for:
House/disco off-beat stabs
Funk syncopated chord punches
Garage/shuffle stabs
Filling gaps between melody notes
chords: JSON array of chord specs, cycled through. Each chord is [root_name, chord_type]. Root names: C, C#, D, D#, E, F, F#, G, G#, A, A#, B (or flats) Chord types: maj, min, dom7, maj7, min7, sus2, sus4, add9, dim, aug Example: '[["C","min7"],["F","min7"]]' cycles between Cm7 and Fm7. Single chord: '[["F","dom7"]]' — same stab repeated. rhythm: Grid pattern using 'x' (stab), '-' (rest), '.' (ghost/light stab). 16th-note grid for one bar (16 chars) or 8th-note grid (8 chars). Examples: "x-x-x-x-" (off-beat 8th stabs), "x---x---" (backbeat), "..x-..x-" (ghost stabs), "xxxx-xxx" (funky busy pattern) unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the pattern starts. octave: Octave for chord voicing (3-6, default 4 = C4 root). velocity: Base velocity for stabs (0-1, ghost stabs use 0.5x). length_beats: Total length of the stab pattern in beats (default 4 = one bar). stab_duration: Duration of each stab in beats (0.0625-1.0, default 0.5 = eighth note).
Returns notes created, chord voicings, and rhythm hits.
| Name | Required | Description | Default |
|---|---|---|---|
| chords | Yes | ||
| octave | No | ||
| rhythm | No | x-x- | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| length_beats | No | ||
| stab_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: how rhythm characters are interpreted ('x' triggers a stab, '.' is a ghost/light stab), how chords cycle, that velocity is halved for ghosts, and that it returns notes, voicings, and rhythm hits. It stops short of detailing edge cases or whether it overwrites existing notes, but covers the core 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 front-loaded with a one-sentence summary, followed by use cases and parameter detail. Each sentence adds value; the parameter explanations are thorough. It's longer than average but justified for 9 parameters, though the genre list could be trimmed.
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 tool with no annotations and 0% schema description coverage, the description covers all parameters, provides examples, and notes the return value. It's practical and complete for agent invocation, though it doesn't address error handling or invalid input behavior.
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%, yet the description explains every parameter with formats, examples, ranges, and defaults. For instance, chords includes root names and chord types, rhythm includes grid notation and examples, and octave/velocity/stab_duration have explicit ranges. This fully compensates for the sparse 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 opens with a specific verb+resource: 'Create rhythmic stabs — short chord jabs' and elaborates with 'Generates short chord hits on a rhythmic grid.' This clearly distinguishes it from sibling creation tools (e.g., create_chop, create_chorale) by focusing on stabs and their musical context.
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 'Perfect for' list gives explicit musical contexts (house/disco off-beat stabs, funk syncopation, garage/shuffle, filling gaps between melody notes), signaling when to use this tool. It doesn't explicitly name alternative tools, but the contexts are clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_stutterA
Create a stutter edit — rapid rhythmic repetitions with evolving rate and dynamics.
The classic stutter edit (BT, Imogen Heap, Deadmau5, Skrillex): take a note and repeat it with changing rhythmic density. Unlike create_chop (equal segments) or create_trill (alternating two notes), stutter edit evolves over time — accelerating, decelerating, or shifting accents. Essential for:
Build-up transitions before drops
Glitch fills at end of phrases
Vocal-chop style rhythmic patterns
Energy ramps in EDM/hip-hop
pitches: Comma-separated MIDI pitches (1-8, default "60"). Cycles through if repeat_count > len. rate: Base rhythmic subdivision — "16th" (0.25 beats), "32nd" (0.125), "64th" (0.0625), "triplet" (0.167), "triplet32" (0.083). pattern: How rate evolves — "constant" (same spacing throughout), "accelerate" (notes get closer — classic stutter build), "decelerate" (notes spread out — reverse stutter), "ping_pong" (alternate fast/slow), "random" (jittered spacing, seeded). repeat_count: Total repetitions (4-64, default 16). accent_pattern: Velocity accent structure — "none" (all equal), "downbeat" (every 4th accented), "1_and" (1st + 3rd accented), "1_e_and_a" (1st strongest, 3rd medium), "every_other" (alternating accent). velocity_ramp: Dynamic envelope — "constant", "fade_in", "fade_out", "fade_in_out", "build" (exponential increase). gate: Portion of each step with sound (0.3-1.0, default 0.85). Lower = more gaps = choppy. pitch_jitter: Random pitch variation in semitones (0-12, default 0). 0 = exact repeat. unit_index: AU index with note track (-1 = auto-find). track_index: Note track index. start_beat: Position in beats. velocity: Base velocity (0-1). seed: Random seed.
Returns notes created, pattern, rate, total length.
| Name | Required | Description | Default |
|---|---|---|---|
| gate | No | ||
| rate | No | 16th | |
| seed | No | ||
| pattern | No | accelerate | |
| pitches | No | 60 | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| pitch_jitter | No | ||
| repeat_count | No | ||
| velocity_ramp | No | build | |
| accent_pattern | No | downbeat |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 succeeds: it explains the algorithmic behavior (rate evolution patterns, accent structures, velocity ramps, gate, pitch jitter), and discloses that it uses a seeded random generator for reproducibility. It also describes return values, so the agent knows what to expect.
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 long but every sentence earns its place. It is front-loaded with a one-line purpose, then context, then a structured parameter list. The line breaks and bullet lists make it easily scannable despite the 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?
All 13 parameters are fully explained, usage context is given, and return values are specified. The description is completely self-sufficient given the abundant defaults and the output schema note.
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%, but the description compensates thoroughly by documenting each of the 13 parameters with plain-language meaning, valid ranges, defaults, and musical intent. It adds meaning far beyond the schema's type/default 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 opens with a precise verb+resource: 'Create a stutter edit' and defines it as 'rapid rhythmic repetitions with evolving rate and dynamics.' It distinguishes from sibling tools by explicitly contrasting with create_chop and create_trill, and lists specific musical use cases.
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 when-to-use guidance: 'Unlike create_chop... or create_trill... stutter edit evolves over time' and includes a bulleted list of essential use cases (build-up transitions, glitch fills, vocal-chop patterns, energy ramps). This clearly directs the agent to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_synth_trackA
Create a new instrument audio unit with a synthesizer device and a note track.
Unlike create_instrument_track (which creates a Tape device for audio playback), this creates a MIDI synthesizer that responds to notes from create_note.
synth_type: 'vaporisateur' (subtractive synth, default), 'nano' (simple synth), 'soundfont' (SF2 player, needs sample), 'apparat' (FM synth). name: Display name for the instrument.
Returns unit_index and track_index for use with create_note.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| synth_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the creation behavior, the synth type options (including the soundfont sample requirement), and the return values. It does not mention potential side effects like whether existing tracks are affected, but for a creation tool the primary behavior is well 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 efficiently structured: a main purpose sentence, a differentiation paragraph, parameter explanations, and a return-value note. Every sentence adds value, 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 covers purpose, usage context, parameters, and return values, and includes cross-references to related tools (create_instrument_track, create_note). Given the tool's moderate complexity and the presence of an output schema, this is fully 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 description coverage is 0%, so the description must compensate fully. It does: synth_type is explained with all four valid values and their meanings, and name is defined as the display name. This adds all needed 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?
The description clearly states the tool creates a new instrument audio unit with a synthesizer device and a note track, and explicitly contrasts it with create_instrument_track (Tape device vs. MIDI synth). This provides a specific verb, resource, and scope, fully distinguishing it from 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 explicitly says to use this over create_instrument_track when a MIDI synthesizer is desired, and notes that the resulting track responds to notes from create_note. This gives clear when-to-use guidance and names an alternative, making the decision easy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_synthwave_arrangementA
Create a full synthwave arrangement — retro drums + arpeggiated bass + dreamy pads + nostalgic lead across 4 tracks.
80s-inspired synthwave with the signature nostalgic feel — fundamentally different from other electronic genres:
Track 0: Drums — retro four-on-floor: kick on every quarter (softer than house), snare on beats 2 & 4, closed hats on all 8ths. The classic 80s drum machine feel — driving but not aggressive, nostalgic not punchy.
Track 1: Bass — ARPEGGIATED 16th notes: the engine of synthwave. Root → octave → fifth → octave pattern, driving and relentless. Not sustained like reggae, not sub-drone like techno — arpeggiated movement.
Track 2: Pads — sustained minor chords, full bar length. Dreamy, long release, filling the harmonic space. The nostalgic wash underneath.
Track 3: Lead — simple nostalgic melody following chord changes, with echo-like call-and-response. Memorable phrases that breathe.
Uses the classic synthwave progression i-VI-III-VII (Am-F-C-G in A minor) — the four chords that define the genre. Different from pop's I-V-vi-IV (same chords, different order and tonal centre — synthwave is minor-key, pop is major).
At 110 BPM (default), this creates the classic synthwave groove — mid-tempo, nostalgic, driving. The arpeggiated bass is the fundamental difference from all 11 other arrangements: house has off-beat stabs, techno has sub drones, synthwave has relentless 16th-note arpeggios.
bpm: Tempo (90-130, default 110 = classic synthwave). bars: Arrangement length (4-16, default 8). Must be multiple of 4 for chord cycle. root: Root note (A is the classic synthwave key — Am). octave: MIDI octave for bass (2 = A2=45, standard synthwave bass register). unit_index: AU index with note tracks. drum_track / bass_track / pad_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_synthwave_arrangement(bpm=110, root="A", bars=8) create_synthwave_arrangement(bpm=100, root="D", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | A | |
| octave | No | ||
| velocity | No | ||
| pad_track | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency weight. It richly details the musical pattern generation (drum hits, arpeggios, chord voicings, BPM range) and mentions return values, but it omits critical operational behaviors such as whether existing notes on the target tracks are cleared, overwritten, or appended, and whether the tracks must pre-exist. This is a notable gap for a DAW 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 well-structured with a summary and bullet points, but it is verbose and contains redundancy, such as repeating 'fundamental difference' and elaborating on genre distinctions at length. It front-loads the key purpose but would benefit from trimming redundant prose to focus on essentials.
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 comprehensive for a genre-creation tool: it covers all musical parameters, provides two usage examples, states constraints (bars multiple of 4, BPM range), and describes return values. However, it lacks operational context like track prerequisites and overwrite behavior, and doesn't explain velocity or start_beat, which prevents a perfect score.
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%, but the description compensates by explaining bpm, bars, root, octave, unit_index, and all four track indices with ranges, defaults, and musical rationale. However, velocity and start_beat are absent from the description, leaving those parameters reliant on their self-explanatory names and schema 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 opens with 'Create a full synthwave arrangement — retro drums + arpeggiated bass + dreamy pads + nostalgic lead across 4 tracks,' which is a precise verb+resource+style statement. It also distinguishes itself from sibling arrangement tools by repeatedly contrasting the arpeggiated bass with house, techno, and reggae, making it unmistakable what this tool is for.
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 explicit genre differentiation: 'The arpeggiated bass is the fundamental difference from all 11 other arrangements: house has off-beat stabs, techno has sub drones, synthwave has relentless 16th-note arpeggios.' It also contrasts synthwave with pop to clarify harmonic context, offering clear guidance on when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_taiko_ensembleA
Create a Japanese taiko ensemble — kumi-daiko group drumming with dramatic dynamics.
Taiko (literally "fat drum") is Japanese percussion with a history spanning over a millennium. Modern kumi-daiko (group taiko) was created in the 1950s by Daihachi Oguchi, combining multiple drum types into an ensemble. The defining characteristic is dramatic dynamic contrast — from near silence to thunderous power — and the use of silence (ma) as a structural element.
The four core instruments:
ODAIKO — The largest drum. Deep, resonant, thunderous. Plays sparse, powerful hits that mark structural points. The "earthquake" of the ensemble. Very low pitch.
CHU-DAIKO — Medium drum. The workhorse — plays the main rhythmic patterns. Mid-range pitch, full-bodied tone. Most of the notes.
SHIME-DAIKO — Small, high-pitched drum. Plays fast, tight patterns and timekeeping. The "metronome" of the ensemble. High, snappy.
ATARIGANE — Hand gong (metal). Plays accents and calls. Bright, metallic, piercing. Used for dramatic punctuation.
Stroke vocabulary (kakegoe): DON — Loud center hit (chu-daiko, odaiko) KA — Rim hit (shime-daiko) DOKO — Double hit (don-ko) TSU — Soft, muted stroke SU — Silence / rest (ma)
styles: "miyake" — Miyake-style: steady chu-daiko pulse with dramatic odaiko accents. Low stance, powerful, sustained. 4/4 with syncopated odaiko on 2.5 and 4. Shime plays continuous 8th notes. Atarigane calls on bar starts. "yatai" — Yatai-bayashi: festival style. Faster, more joyous. Shime plays 16th notes, chu-daiko alternates don/doko, odaiko on downbeats. Atarigane on offbeats. "edo" — Edo-bayashi: Edo period festival. Steady, march-like. Chu-daiko on 1 and 3, shime on all 8ths, odaiko sparse (only on phrase ends). Atarigane sparse. "hachijo" — Hachijo-style: soloistic, dramatic. Long odaiko rolls with chu-daiko accents. Ma (silence) between phrases. Sparse but powerful. Slow tempo feel. "omega" — Modern taiko (Kodo-style). Dense, aggressive, contemporary. All four instruments at high density. Odaiko on every beat, chu-daiko 16ths, shime 32nd rolls, atarigane accents. Maximum energy.
Args: bars: Pattern length in bars (4-32, even). style: Style name (miyake, yatai, edo, hachijo, omega). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. odaiko_pitch: Odaiko (large drum) MIDI pitch (35 = B0). chu_daiko_pitch: Chu-daiko (medium drum) MIDI pitch (38 = D1). shime_pitch: Shime-daiko (small drum) MIDI pitch (42 = F#1). atarigane_pitch: Atarigane (gong) MIDI pitch (50 = D2).
Returns notes created, instrument breakdown, and style info.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| style | No | miyake | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| shime_pitch | No | ||
| track_index | No | ||
| odaiko_pitch | No | ||
| atarigane_pitch | No | ||
| chu_daiko_pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that notes will be created and returns an instrument breakdown, but it does not state whether existing notes are preserved or overwritten, or whether it requires an existing track/unit. The description focuses on musical behavior rather than concrete side effects, leaving some operational ambiguity.
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 long but well-organized into clear sections (instruments, strokes, styles, args). Each section adds necessary value for a complex genre-generation tool. Some historical background could be trimmed, but the overall structure front-loads the purpose and remains focused.
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 10 parameters and zero annotations, the description provides comprehensive guidance: instrument roles, stroke vocabulary, style-specific rhythmic patterns, all parameter explanations with defaults, and the return value. An agent can confidently select styles and set parameters without needing additional external knowledge.
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 zero parameter descriptions, but the 'Args' section compensates fully by explaining every parameter with musical context and defaults. Style parameter is exceptionally well-defined with detailed descriptions of each style's rhythmic patterns, and pitch parameters are given default MIDI 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 opening sentence clearly states 'Create a Japanese taiko ensemble' with further elaboration on kumi-daiko group drumming. It thoroughly distinguishes this tool from sibling percussion tools by providing genre-specific instrument names (odaiko, chu-daiko, shime-daiko, atarigane) and style names.
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 extensive style descriptions (miyake, yatai, edo, hachijo, omega) give an agent clear musical context for when to choose each style, effectively guiding usage. However, it does not explicitly mention when not to use this tool or compare it to alternative percussion ensemble tools like create_djembe_ensemble or create_korean_percussion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_talaA
Create an Indian classical tala — cyclic rhythmic structure with vibhag sections and tali/khali markings.
A tala is a cyclic rhythmic framework in Indian classical music. Unlike Western meter (which groups beats into uniform bars), a tala divides its cycle into vibhags (sections) of unequal length, each marked by tali (clap) or khali (wave). The theka — a sequence of named tabla strokes (bols) — defines the characteristic pattern of each tala.
The cycle (avartan) repeats, with the sam (first beat) being the strongest point. Tali beats are played with emphasis; khali beats are played softly (the "empty" section). This dynamic contrast gives Indian rhythm its distinctive breathing quality.
Talas: teental — 16 beats, 4+4+4+4 vibhags. The most common tala. Tali at beats 1, 5, 13; khali at beat 9. Dha-Dhin-Dhin-Dha pattern. ektal — 12 beats, 2+2+2+2+2+2 vibhags. Used in classical vocal and sitar. Tali at 1, 5, 9, 11; khali at 3, 7. jhaptal — 10 beats, 2+3+2+3 vibhags. Asymmetric grouping. Tali at 1, 3, 8; khali at 6. rupak — 7 beats, 3+2+2 vibhags. Unusual — starts with khali (no clap on sam). Tali at 4, 6; khali at 1. dadra — 6 beats, 3+3 vibhags. Light classical, semi-classical. Tali at 1; khali at 4. kehartwa — 8 beats, 4+4 vibhags. Tali at 1; khali at 5.
Laya (tempo): vilambit — slow, 2-beat note duration (sustained strokes) madhya — medium, 1-beat note duration drut — fast, 0.5-beat note duration
Each bol maps to a MIDI pitch representing the tabla stroke character: Dha/Dhin (bayan+dayan) -> lower register (36-38) Ti/Na/Tin/Ta (dayan) -> higher register (46-52)
Args: tala_name: Tala name (teental, ektal, jhaptal, rupak, dadra, kehartwa). cycles: Number of avartan cycles (1-16). laya: Tempo (vilambit, madhya, drut). velocity: Base velocity 0-1. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, vibhag structure, tali/khali positions, and bols sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| laya | No | madhya | |
| cycles | No | ||
| velocity | No | ||
| tala_name | No | teental | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden and succeeds admirably. It details generative behavior: laya maps to note durations (vilambit=2-beat, madhya=1-beat, drut=0.5-beat), bols map to specific MIDI pitch ranges (bayan+dayan at 36-38, dayan at 46-52), and the cycle repeats with sam as the strongest beat. It also states what the return value contains (notes, vibhag structure, tali/khali positions, bols).
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 lengthy (~300 words) but well-structured: purpose, then background, then tala catalog, laya definitions, pitch mapping, args, and returns. Nearly every sentence earns its place because the domain knowledge directly informs parameter selection (e.g., choosing tala_name requires knowing beat structures). Slight redundancy exists (cyclicity emphasized repeatedly), but the front-loaded opening and clear hierarchy prevent it from being bloated.
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 7-parameter domain-specific creation tool with no annotations, the description is remarkably complete. It covers domain background, all parameter semantics, value options, behavior implications, and return contents. Even with an output schema available (per context), the description pre-emptively states return values. The only minor omission is explicit definition of 'AU index,' but the DAW context and sibling tool naming conventions make it inferable.
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% (no param descriptions), placing full burden on the description. The Args section explains all 7 parameters, and the body enriches them substantially: tala_name's six valid values each get structural breakdowns (beats, vibhag divisions, tali/khali positions), laya gets duration semantics, velocity gets range 0-1, and cycles gets range 1-16. This far exceeds the bare schema titles.
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 opening sentence 'Create an Indian classical tala — cyclic rhythmic structure with vibhag sections and tali/khali markings' provides a specific verb (create) + resource (Indian classical tala) with defining characteristics. This clearly distinguishes it from sibling tools like create_clave, create_colotomic, and create_euclidean_rhythm, which serve different rhythmic traditions.
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 establishes unmistakable context: it is for Indian classical rhythm composition, listing specific talas and their traditional uses (e.g., 'ektal — used in classical vocal and sitar'). However, it never explicitly names alternatives or states when NOT to use this tool vs. other rhythmic pattern creators, stopping short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_techno_arrangementA
Create a full techno arrangement — drums + sub-bass drone + percussive stabs across 3 tracks.
Berlin/Detroit techno with hypnotic, minimalist elements locked together:
Track 0: Drums — relentless four-on-floor with industrial hats and claps, the engine
Track 1: Bass — sustained sub-bass drone with root shifts per phrase, not rhythmic but continuous — the hypnotic foundation that drives the groove underground
Track 2: Stabs — percussive atonal stabs on off-beats, the signature Detroit sound
At 130 BPM (default), this creates the classic warehouse techno feel. The sub-bass drone is the key difference from house — instead of off-beat bass notes, it's a continuous low-end that shifts root notes across phrases, creating tension and release.
bpm: Tempo (125-145, default 130 = classic techno). bars: Arrangement length (8-32, default 8). Techno needs longer forms. root: Root note (C is the classic techno key for sub-bass). octave: MIDI octave for sub-bass (2 = C2=36, low but audible). unit_index: AU index with note tracks. drum_track / bass_track / stab_track: Track indices.
Returns notes created per track and total.
Example: create_techno_arrangement(bpm=130, root="C", bars=8) create_techno_arrangement(bpm=138, root="A", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | C | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| stab_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It describes the musical output in detail and says it returns notes created per track and total. However, it does not state whether it overwrites existing notes, requires pre-existing tracks, or any destructive side effects, leaving operational behavior 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 well-structured with a clear opening, bullet-pointed track breakdown, parameter docs, and examples. Some stylistic phrases could be trimmed, but overall every section earns its place given the tool's complexity.
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, musical style, parameters, and return value, which is strong for a 10-parameter tool. It misses prerequisites (e.g., that tracks must already exist) and the two undocumented parameters, so it's 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 coverage is 0%, so the description compensates by explaining bpm, bars, root, octave, unit_index, and track indices with ranges and defaults. It does not mention velocity or start_beat, which leaves two parameters 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 first sentence states it creates a full techno arrangement with specific elements (drums, sub-bass drone, percussive stabs) across 3 tracks. It clearly distinguishes from siblings by naming the tracks and explicitly noting the sub-bass drone is the key difference from house.
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 context for when to use it: for Berlin/Detroit techno, and notes the difference from house. It provides recommended parameter ranges (130 BPM, longer forms) but does not explicitly list when not to use or alternatives beyond the house comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_tempo_rampA
Create a smooth tempo ramp (ritardando or accelerando) across a beat range.
Adds a series of tempo change events with linear interpolation, creating a gradual BPM transition. This is the musical foundation for ritardando (slowing down) and accelerando (speeding up) — essential for expressive transitions, endings, and dramatic section changes.
Uses the same ValueEventBox mechanism as add_tempo_change, but creates multiple events along the beat range for a smooth curve.
start_beat: Beginning of the ramp in beats. end_beat: End of the ramp in beats. start_bpm: Starting BPM (60-240). end_bpm: Target BPM (60-240). curve: "linear" (smooth, default), "exp" (ease-in, gradual start), "log" (ease-out, fast start then settle). steps: Number of tempo events to create (default 16 = smooth ramp). Fewer steps = more stepped/quantized feel.
Returns events created, ramp config, and BPM preview at key points.
Examples: create_tempo_ramp(start_beat=60, end_beat=64, start_bpm=120, end_bpm=90) -> Ritardando: 120->90 BPM over 4 beats (ending slowdown) create_tempo_ramp(start_beat=0, end_beat=8, start_bpm=100, end_bpm=140, curve="exp") -> Accelerando: 100->140 BPM over 8 beats, exp curve (gradual start) create_tempo_ramp(start_beat=32, end_beat=48, start_bpm=140, end_bpm=140) -> No-op ramp (same BPM) — useful as placeholder or for testing
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | linear | |
| steps | No | ||
| end_bpm | Yes | ||
| end_beat | Yes | ||
| start_bpm | Yes | ||
| start_beat | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains the mechanism: it adds a series of tempo change events via ValueEventBox, describes interpolation behavior, and mentions return data. The no-op example adds useful behavioral insight. However, it doesn't disclose potential side effects such as interaction with existing tempo events or whether the operation is reversible.
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 well-organized, starting with a clear purpose, followed by parameter explanations, return info, and three illustrative examples. Every section adds value, and the examples are particularly informative. Although long, it is appropriately sized for a tool with this complexity.
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 all six parameters, provides usage examples, describes the return value, and places the tool in a musical context. The presence of an output schema means detailed return structure isn't required, making this description complete for correct selection and 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 description thoroughly explains every parameter: start_beat, end_beat, start_bpm, end_bpm with ranges, curve options with meanings, and steps with default and effect. This fully compensates for the 0% schema description 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 clear, specific action: 'Create a smooth tempo ramp (ritardando or accelerando) across a beat range.' It also distinguishes itself from add_tempo_change by stating it creates multiple events for a smooth curve, making the tool's unique purpose 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?
The description provides strong usage context by naming musical scenarios (ritardando, accelerando) and includes three examples covering different use cases including a no-op. It differentiates from add_tempo_change by explaining the multi-event mechanism, but it doesn't explicitly state when not to use this tool or formally recommend alternatives beyond the implicit contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_ternary_formA
Create ternary form — ABA with contrasting middle section.
Ternary form (ABA) is one of the most fundamental structures in Western music. The outer A sections are related (often identical, or A' with ornamentation), while the middle B section provides contrast. Used in:
Minuet & Trio (Haydn, Mozart): A=minuet, B=trio, A=minuet da capo
Da capo aria (Baroque opera): A=main aria, B=contrasting middle emotion, A=ornamented return
Chopin Nocturnes: A=lyrical theme, B=agitated middle, A=ornamented
Pop/jazz ballads: A=head, B=bridge/solo, A=head out
B section contrast types:
trio: Subdominant key (IV), smoother rhythm, thinner texture. Classical minuet & trio.
dominant: Dominant key (V), more active rhythm, builds tension. Beethoven scherzo style.
relative: Relative minor/major, darker/lighter character. Schubert impromptu middle sections.
episode: Same key, completely different melodic material. Chopin nocturne B sections.
development: Fragmentation of A material, modulating. Late classical/romantic expansion.
A' (return): If a_prime_ornamented=True, adds passing tones, trill-like ornaments, and slight rhythmic variation to the A material. Da capo aria / Chopin nocturne practice.
Melody on track_index, bass on track_index+1.
| Name | Required | Description | Default |
|---|---|---|---|
| a_bars | No | ||
| b_bars | No | ||
| key_root | No | C | |
| velocity | No | ||
| b_contrast | No | trio | |
| scale_name | No | major | |
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| a_prime_ornamented | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses key behaviors: melody is placed on track_index and bass on track_index+1, a_prime_ornamented adds ornaments to the return, and each b_contrast type has distinct musical characteristics. It does not mention side effects like overwriting existing notes, but provides substantial behavioral clarity.
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 lengthy but well-structured, with clear sections for form definition, usage examples, B section types, A' behavior, and track placement. It front-loads the primary purpose, and each section earns its place. Slightly verbose but appropriate for the musical complexity.
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 (10 params, no schema descriptions, no annotations), the description covers most essential aspects: the form's structure, historical/usage contexts, parameter semantics for key musical choices, and output placement. An output schema exists, so return values are not required in the description. It is nearly complete but could mention prerequisites or unit behavior.
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 deep meaning for b_contrast (five types with detailed musical descriptions), a_prime_ornamented (ornamentation effect), and track_index (placement). However, parameters like a_bars, b_bars, velocity, scale_name, start_beat, and unit_index are not explained beyond their names, leaving gaps.
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 'Create ternary form — ABA with contrasting middle section,' clearly stating the verb (create), resource (ternary form), and structure (ABA). It distinguishes this tool from siblings like create_binary_form and create_sonata_form by specifying the ABA layout.
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 rich usage context, listing musical genres where ternary form is appropriate (minuet & trio, da capo aria, Chopin nocturnes, pop/jazz ballads). It explains B section contrast types and A' ornamentation, helping users decide when to use this tool. However, it does not explicitly contrast with alternative form-generation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_time_stretched_clipA
Create a time-stretched audio clip in session view.
sample_id: ID from mcp_opendaw_load_audio. unit_index: Audio unit index. clip_index: Slot index in clip launcher. track_index: Audio track index within AU. bpm: Source BPM of the sample. playback_rate: Playback rate (1.0 = normal, 0.5 = half speed, 2.0 = double). transient_mode: "Pingpong", "Monoton", "Cycles", or "Plode".
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| sample_id | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| playback_rate | Yes | ||
| transient_mode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It explains that the tool creates a time-stretched clip in session view and lists parameter semantics, but it does not mention side effects such as replacing an existing clip at clip_index, the need for a valid audio unit/track, or the outcome of the operation (though an output schema exists elsewhere). This leaves some ambiguity about what state changes will 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 efficiently structured: a one-sentence purpose statement followed by a clean list of parameter explanations. There is no redundant or filler content. Every line adds clarificatory value, making it easy to scan and parse quickly.
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 all parameters and states the session view context, but it lacks important prerequisite and side-effect information: it doesn't warn that the sample must be already loaded via mcp_opendaw_load_audio (though implied by 'ID from'), that the slot must be empty or will be overwritten, or that the audio unit and track must exist. Given the tool's complexity and the absence of annotations, these gaps prevent it from being fully self-contained.
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 explicitly defines each of the 7 parameters, including concrete examples for playback_rate (1.0, 0.5, 2.0) and enumerated values for transient_mode. The schema itself has no descriptions (0% coverage), so the description fully compensates and even adds semantic meaning beyond the schema's basic type information.
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 a time-stretched audio clip in session view.' This is a specific verb+resource+location combination that distinguishes it from related tools like create_pitch_stretched_clip or create_audio_clip. The session view qualifier helps differentiate it from create_time_stretched_region.
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: it creates a clip in session view and references mcp_opendaw_load_audio for sample_id, indicating a prior dependency. However, it does not explicitly mention when to use this tool versus alternatives like create_time_stretched_region, and there are no exclusions stated. Still, the context is sufficient for a user to understand the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_time_stretched_regionA
Place a time-stretched audio region on a track.
Unlike place_audio_region (which uses TimeBase.Seconds), this creates a musically-timed region with warp markers. Audio plays back at a different speed while staying in sync with the project tempo.
sample_id: The ID returned by mcp_opendaw_load_audio. unit_index: Audio unit index (default 0). start_beat: Beat position to place the region. track_index: Track index within the audio unit (default 0). playback_rate: Rate multiplier (1.0 = original, 0.5 = half-speed, 2.0 = double). transient_mode: "once", "repeat", or "pingpong" (default). bpm: Source BPM of the sample (for warp marker calculation).
Returns position, duration in PPQN, and playback rate.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| sample_id | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| playback_rate | Yes | ||
| transient_mode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 reveals key behaviors: audio plays back at a different speed while syncing to tempo, warp markers are created, and it returns position/duration/playback rate. However, it does not mention prerequisites (beyond sample_id), potential side effects on existing regions, or error conditions, leaving some gaps for an agent to discover.
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 well-structured: a one-sentence summary, a contrast paragraph, a clear parameter list, and a return statement. Despite covering 7 parameters, it remains tight and readable. Each section earns its place, with no 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?
For a 7-parameter tool with no annotations, the description covers purpose, usage, parameter semantics, and return values. It even mentions that sample_id comes from mcp_opendaw_load_audio, providing a prerequisite. The presence of an output schema is noted, but since the output schema itself is not shown, the description's explicit mention of return fields is valuable. Minor gaps remain in edge-case behavior, but overall it is quite 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 fully compensate. It does: every parameter is explained with types, defaults, and examples (e.g., playback_rate: '1.0 = original, 0.5 = half-speed, 2.0 = double'; transient_mode: '"once", "repeat", or "pingpong"'). This adds substantial semantic meaning beyond the schema's bare titles and 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 opens with a clear, specific action: 'Place a time-stretched audio region on a track.' It explicitly contrasts with the sibling place_audio_region (which uses TimeBase.Seconds), distinguishing its unique behavior of musically-timed regions with warp markers. This gives the agent a precise understanding of what the tool does and how it differs.
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: when a time-stretched region should be musically timed with warp markers and stay in sync with project tempo. It names the alternative place_audio_region and explains the difference ('unlike place_audio_region...'), providing clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_track_regionA
Create a region on any track (note or value) using the generic createTrackRegion API.
Automatically detects track type and creates the appropriate region:
Note track → NoteRegionBox with NoteEventCollection
Value track → ValueRegionBox with ValueEventCollection Returns Option.None (error) for audio tracks — use place_audio_region instead.
unit_index: Audio unit index (-1 = search all AUs). track_index: Track index within the AU. start_beat: Beat position for the region. duration_beats: Duration in beats. name: Display name (empty = auto: "Notes" or "Automation"). hue: Color 0-360 (-1 = auto from track type).
Returns region UUID, type, and position.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| name | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| duration_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses the error condition for audio tracks, the auto-detection of track type, default naming and hue behavior, and the return payload (region UUID, type, position). This goes well beyond a simple 'creates a region' statement.
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 well-organized with an opening summary, bullet points for track-type behavior, a parameter list, and a return-value note. Every sentence serves a purpose, with no redundancy or 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?
Given the tool's complexity (6 parameters, no annotations, output schema present), the description covers the core function, auto-detection behavior, error condition, parameter semantics, and return values. It is sufficient for an agent to invoke the tool correctly 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?
Schema description coverage is 0%, but the description fully compensates by explaining all six parameters: unit_index (-1 = search all AUs), track_index, start_beat, duration_beats, name (empty = auto), and hue (0-360, -1 = auto). This gives the agent everything needed to fill the 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 tool creates a region on any track (note or value) using a generic API, and explicitly distinguishes it from audio-track region creation by directing the user to place_audio_region instead. The verb 'Create' plus resource 'region' and scope 'track' are 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 usage context: automatically detects track type, supports note and value tracks, and for audio tracks it returns an error and directs to the alternative tool (place_audio_region). This is a clear when-to-use and when-not-to-use guideline, unmatched by siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_trance_arrangementA
Create a full trance arrangement — driving drums + rolling bass + supersaw arp + pluck lead across 4 tracks.
Uplifting trance with the signature euphoric energy — fundamentally different from other electronic genres:
Track 0: Drums — driving four-on-floor: kick on every quarter (hard, consistent), clap on 2 & 4, open hat on off-beats (0.5, 1.5, 2.5, 3.5). The relentless pulse of trance — harder than synthwave, faster than house. Optional snare rush buildup on last bar of each 4-bar phrase.
Track 1: Bass — rolling off-beat pattern: 8th notes on the "and" of every beat (0.5, 1.5, 2.5, 3.5), NOT on the quarter. Creates the "rolling" feel that drives trance forward. Root → octave alternation per bar. Different from house (off-beat stabs) — trance bass is sustained 8ths.
Track 2: Supersaw arp — layered chord stabs on quarter notes: root position triad (root + third + fifth) played as 16th-note arpeggio pattern per beat. The euphoric wall of sound. i-VI-III-VII progression.
Track 3: Pluck lead — staccato synth plucks: short melodic phrases following chord changes, mostly off-beat with occasional downbeats. The "-answer" to the supersaw's "call". Echo-like spacing.
Uses the classic trance progression i-VI-III-VII (Am-F-C-G transposed) — same as synthwave but faster and euphoric, not nostalgic. The energy is in the supersaw arp (wall of sound) and rolling bass (relentless 8ths).
At 138 BPM (default), this creates classic uplifting trance — fast, driving, euphoric. The rolling off-beat bass is the fundamental difference from all 12 other arrangements: house has off-beat stabs (short), techno has sub drones (sustained), synthwave has 16th arpeggios (melodic), trance has rolling 8ths (driving, off-beat, sustained).
bpm: Tempo (128-145, default 138 = classic uplifting trance). bars: Arrangement length (8-16, default 8). Must be multiple of 4. root: Root note (F is a classic trance key — Fm). octave: MIDI octave for bass (2 = F2=41, standard trance bass register). unit_index: AU index with note tracks. drum_track / bass_track / arp_track / lead_track: Track indices.
Returns notes created per track and total.
Example: create_trance_arrangement(bpm=138, root="F", bars=8) create_trance_arrangement(bpm=140, root="C", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F | |
| octave | No | ||
| velocity | No | ||
| arp_track | No | ||
| bass_track | No | ||
| drum_track | No | ||
| lead_track | No | ||
| start_beat | No | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 provides extensive behavioral detail: exact drum pattern, bass pattern, arp pattern, lead style, chord progression, and output (notes per track). However, it does not disclose whether the tool overwrites existing notes on the specified tracks or requires empty tracks, which is a notable gap in side-effect transparency for a generative 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 well-structured: it opens with a one-line summary, then uses bullet points for each track, includes a genre differentiation paragraph, and ends with concise parameter definitions and examples. While lengthy, every section adds valuable information for an AI agent to understand and invoke the tool correctly.
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 for invocation: it explains the musical output, parameter meanings, and mentions the return value (notes per track and total). It hints at prerequisites ('unit_index: AU index with note tracks') and gives examples. However, it lacks clarification on velocity and start_beat, and does not specify behavior if tracks already contain notes, which is a minor completeness 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?
Since schema description coverage is 0%, the description must explain the parameters. It covers bpm, bars, root, octave, unit_index, and the four track indices, with ranges and musical rationale (e.g., 'root: Root note (F is a classic trance key — Fm)'). However, it omits velocity and start_beat entirely, which are present in the schema but not explained in the 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 immediately states the tool's function: 'Create a full trance arrangement — driving drums + rolling bass + supersaw arp + pluck lead across 4 tracks.' It clearly identifies the genre and differentiates from sibling arrangement tools through detailed musical comparisons (e.g., 'house has off-beat stabs, techno has sub drones, synthwave has 16th arpeggios, trance has rolling 8ths'). This makes the purpose 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?
The description explicitly explains when to use this tool: for uplifting trance with a rolling off-beat bass, and contrasts it with other genres ('same as synthwave but faster and euphoric... different from house, techno, synthwave'). It also provides default BPM and key context, giving the agent clear criteria for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_trap_arrangementA
Create a full trap arrangement — drums + 808 bass + bell melody across 3 tracks in one call.
Trap arrangement with all elements locked together:
Track 0: Drums — trap hi-hat rolls with triplet bursts, syncopated kick, snare on 3
Track 1: Bass — 808 sub-bass slides: long sustained notes with pitch slides, characteristic trap bass that glides between root notes
Track 2: Melody — bell/glockenspiel plucks in minor key, sparse and atmospheric
At 140 BPM (default), this creates the modern trap sound. The 808 bass slides are the signature — long glides between root notes that create the dark, menacing low-end. The bell melody floats above with sparse minor-key phrases.
bpm: Tempo (130-160, default 140 = modern trap). bars: Arrangement length (4-32, default 8). root: Root note (F# minor is the most common trap key). octave: MIDI octave for 808 bass (1 = C1=24, sub-bass territory). unit_index: AU index with note tracks. drum_track / bass_track / melody_track: Track indices.
Returns notes created per track and total.
Example: create_trap_arrangement(bpm=140, root="F#", bars=8) create_trap_arrangement(bpm=150, root="A", bars=16)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| root | No | F# | |
| octave | No | ||
| velocity | No | ||
| bass_track | No | ||
| drum_track | No | ||
| start_beat | No | ||
| unit_index | No | ||
| melody_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the musical output (notes, tracks, patterns) and return value ('Returns notes created per track and total'), but it does not clarify operational behavior such as whether existing notes on the target tracks are overwritten, whether tracks are expected to exist beforehand, or if the tool creates new tracks. With no annotations to rely on, these are meaningful gaps for a mutation tool that writes 3 tracks of notes.
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 well-structured with an initial summary, bullet points for track content, a parameter list, output note, and examples. It is slightly verbose due to repeated emphasis on the 808 bass's musical character, but for a tool with 10 parameters the length is justified and 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 the tool's complexity (10 params, no annotations, output schema present but not detailed), the description covers the main functionality, parameter meanings, and examples, but leaves two parameters unexplained and does not state prerequisites (e.g., whether note tracks must exist or be empty). These are clear gaps for a creative generation tool that writes to specific tracks.
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 compensates for the 0% schema description coverage by explaining 8 of the 10 parameters with concrete ranges, defaults, and musical context (e.g., 'octave: MIDI octave for 808 bass (1 = C1=24)', 'root: Root note (F# minor is the most common trap key)'). However, it omits 'velocity' and 'start_beat', which remain undocumented in both the schema and 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 clearly states a specific action ('Create a full trap arrangement') with a defined scope ('drums + 808 bass + bell melody across 3 tracks in one call'). It distinguishes itself from sibling arrangement tools by naming the exact genre and characteristic elements like 'trap hi-hat rolls' and '808 sub-bass slides'.
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 contextual guidance for when to use this tool: to generate a modern trap arrangement. It gives concrete parameter guidance with ranges and defaults ('bpm: Tempo (130-160, default 140)', 'bars: Arrangement length (4-32)'), plus usage examples. It does not explicitly mention alternatives for other genres, but the naming and context make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_trap_rollsB
Create trap hi-hat roll patterns — the evolving density technique that defines modern trap.
Trap rolls are hi-hat patterns that start sparse and build density through triplet bursts, 32nd-note runs, and "skrrt" stutter patterns. The hats evolve within each bar — from steady 8ths to 16ths to triplet rolls — creating the cascading, restless energy of modern trap. Kicks syncopate underneath, snares/claps anchor on beat 3.
roll_type: "modern" — Modern trap: steady 16ths with triplet rolls on bar transitions. Hats evolve 8th→16th→triplet within each 2-bar phrase. Kick on 1, "and of 2", and 3.5. Snare on 3. Travis Scott "Sicko Mode", Drake "God's Plan". The default trap sound of 2018-2025. "migos" — Migos style: rapid triplet bursts on every "and" of beats 1-2, sparse on 3-4, then fill into next bar. Kick on 1 and 3. Snare on 2 and 4. Offset/Migos "Bad and Boujee" triplet flow. "bubble" — Atlantan "bubble" hats: continuous 16ths with periodic doubles (two 32nd hits) creating a bouncing feel. Kick on 1 and 3.5. Snare on 3. Young Thug / Future "Mask Off" style. "skrrt" — Skrrt pattern: stuttering hat bursts that mimic the sound of screeching tires. Short rapid groups (3-4 hits) with gaps. Kick on 1, 2.66, 3. Snare on 3. Playboi Carti / 21 Savage. "evolving" — Evolving density: starts with just 8th hats in bar 1, adds 16ths in bar 2, triplet rolls in bar 3, full 32nd cascade in bar 4. Builds tension across 4 bars. Metro Boomin production style.
bars: Pattern length (2-16, 2 = one phrase cycle, 4 recommended for evolving). kick_pitch: MIDI pitch for kick (36 = C1). snare_pitch: MIDI pitch for snare/clap (38 = D1). hat_pitch: MIDI pitch for hi-hats (42 = F#1). velocity: Base velocity 0-1. Hats -0.15, ghost hats -0.3.
Returns notes created, roll type, and stroke breakdown.
Example: create_trap_rolls(roll_type="modern", track_index=0) create_trap_rolls(roll_type="evolving", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| hat_pitch | No | ||
| roll_type | No | modern | |
| kick_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| snare_pitch | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses return values and velocity offsets, but does not state whether notes are appended or replace existing notes, nor does it explain track_index, start_beat, or unit_index behavior. With no annotations, these operational details are missing, making the tool's DAW side effects 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 thorough and logically structured (purpose, roll types, parameters, return, example), but is longer than necessary with cultural references and song examples. It is front-loaded with the core action, so it remains 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?
For a 9-parameter tool with no schema descriptions and no annotations, the description covers the musical style thoroughly but leaves out operational essentials (track targeting, start position, unit context). The presence of an output schema is mentioned but its structure isn't described, so the agent still lacks full invocation clarity.
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 deep meaning for roll_type (five styles with rhythmic breakdowns), plus pitch and velocity semantics. However, three parameters (start_beat, unit_index, track_index) are entirely unexplained in the description, leaving critical placement information to the schema, which also lacks 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 opens with 'Create trap hi-hat roll patterns' and provides detailed variants (modern, migos, bubble, skrrt, evolving), clearly distinguishing this from generic drum tools. It specifies the resource (trap hi-hat rolls) and the verb (create), 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 implies usage for trap production with specific style examples, but does not explicitly contrast with sibling tools like create_drum_pattern or create_trap_arrangement. It gives within-tool guidance for choosing roll_type, but no when-to-use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_trillA
Create a trill — rapid alternation between two notes.
A fundamental ornament used across classical (baroque trills, mordents), jazz (shake), metal (tremolo picking), and electronic (LFO-like patterns). Two notes alternate at the specified rate for the given duration. Upper note can be accented (baroque style) or both equally loud.
lower_pitch: Lower MIDI note of the trill (default 60 = C4). upper_pitch: Upper MIDI note, typically 1-2 semitones above (default 62 = D4). rate: Trill speed — "32nd", "16th", "8th", "32t" (triplet 32nd), "16t" (triplet 16th). duration_beats: Total length of the trill in beats (0.5-32, default 4 = 1 bar at 4/4). accent_upper: If true, upper note is louder (baroque style). If false, equal velocity. start_with_upper: If true, trill starts on upper note (some baroque conventions). velocity: Base velocity 0-1 (default 0.85). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the trill begins.
Returns notes created, rate, note count.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | 16th | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| lower_pitch | No | ||
| track_index | No | ||
| upper_pitch | No | ||
| accent_upper | No | ||
| duration_beats | No | ||
| start_with_upper | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does well: it explains alternation behavior, accent/start options, target track selection, and return value ('Returns notes created, rate, note count'). It does not disclose all edge-case side effects (e.g., overwrites, failures), but enough is provided for safe invocation.
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 a one-line definition, then uses a compact parameter listing. The genre context is relevant and not bloated; every section 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 has 10 optional parameters and no annotations, but the description covers every parameter, provides target selection semantics, and states the output summary. This is complete enough 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?
Schema description coverage is 0%, but the free-text description enumerates and explains all 10 parameters with defaults, ranges, and semantics (e.g., rate values '32nd','16t', duration 0.5-32). This fully compensates for the schema's lack of param 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 opens with 'Create a trill — rapid alternation between two notes,' providing a specific verb and resource. It clearly distinguishes this from ornament-generation siblings like create_mordent or create_turn by defining the trill concept and its musical contexts.
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 context for when a trill is appropriate (baroque, jazz, metal, electronic) and explains the mechanism. However, it never names alternative sibling tools or states when NOT to use it, so exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_tumbaoA
Create an Afro-Cuban tumbao (conga) pattern — the rhythmic foundation of salsa.
The tumbao is played on congas and interacts with the clave to create the Afro-Cuban groove. The pattern features open tones (resonant, sustained), closed tones (muffled, short), and slaps (sharp, percussive). The open tone on the "and of 4" is the signature — it anticipates the downbeat.
tumbao_type: "salsa" — Standard salsa tumbao. 2-bar pattern: Bar 1: tone on &2, open on &4 Bar 2: tone on &2, open on 4 (downbeat) "salsa_slap" — Salsa with slap on beat 2 of bar 2 "rumba" — Rumba tumbao (guaguancó). Simpler, more open tones. "bolero" — Bolero tumbao. Slower feel, fewer strokes.
bars: Pattern length (2 = one tumbao cycle, repeat for longer). low_pitch: MIDI pitch for closed tones (low conga). open_pitch: MIDI pitch for open tones (mid conga). slap_pitch: MIDI pitch for slaps (high conga). velocity: Base velocity 0-1. Open tones +0.1, slaps +0.15.
Returns notes created, tumbao type, and stroke breakdown.
Example: create_tumbao(tumbao_type="salsa", track_index=0) create_tumbao(tumbao_type="salsa_slap", track_index=1, bars=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| velocity | No | ||
| low_pitch | No | ||
| open_pitch | No | ||
| slap_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| tumbao_type | No | salsa |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It explains the pattern characteristics and mentions it returns notes created, tumbao type, and stroke breakdown. However, it does not disclose side effects like whether it replaces existing notes, creates new regions, or has prerequisites such as a selected 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 well-structured and front-loaded: concise purpose, contextual background, parameter list, return value, and example. Each section earns its place, and the length is justified given the need to compensate for missing schema descriptions.
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 9 parameters and no annotations, and the description covers most but not all relevant aspects. It omits clarifications for start_beat, unit_index, and track_index, and does not explain how the tool integrates with existing DAW state (e.g., whether it creates a new region or modifies an existing one). The output schema reduces the need to describe return values, but 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?
The schema has 0% description coverage, so the description must compensate. It explains tumbao_type, bars, low_pitch, open_pitch, slap_pitch, and velocity in detail, and track_index appears in the example. However, start_beat, unit_index, and track_index are not explicitly described, leaving a gap for those 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 tool's purpose: 'Create an Afro-Cuban tumbao (conga) pattern'. The verb 'create' is specific and the resource is well-defined, distinguishing it from sibling tools like create_clave or create_cascara by focusing on a tumbao specifically.
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 by explaining that tumbao is the rhythmic foundation of salsa and describes each tumbao_type variant. However, it does not explicitly compare with alternatives or state when not to use this tool, 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.
mcp_opendaw_create_tuplet_groupA
Create a tuplet group — irrational rhythm subdivision within a time span.
A tuplet divides a time span into N equal parts instead of the normal subdivision. Triplets (3 in 2), quintuplets (5 in 4), septuplets (7 in 4) create rhythmic tension by violating the expected duple meter.
Unlike polyrhythm (multiple voices with different periods) or additive rhythm (unequal groupings), tuplets subdivide a single time span into an irrational number of equal parts — creating a "squeezed" or "stretched" feel within one voice.
Common tuplets: 3 in 2 — triplet (most common, jazz swing, Irish jigs) 5 in 4 — quintuplet (Chopin, Ligeti, modern jazz) 7 in 4 — septuplet (Ferneyhough, new complexity) 11 in 4 — undecuplet (extreme irrational meter) 2 in 3 — duplet (2 notes in triplet space, compound meter)
Args: root: Root note name (C, C#, D, ...). scale: Scale name (major, minor, dorian, etc.). tuplet_number: Number of notes to fit in the span (2-16). 3=triplet, 5=quintuplet, 7=septuplet, etc. span_beats: Time span in beats that the tuplet occupies (0.25-8.0). 1.0 = quarter note span, 2.0 = half note span. base_division: The normal subdivision the tuplet replaces (1-8). 2 = duplet (normal), so triplet = 3 in 2. 4 = sixteenths, so quintuplet = 5 in 4. repeats: Number of times the tuplet repeats (1-16). octave: Starting MIDI octave (1-6). pitch_mode: Pitch assignment mode (scale_asc, scale_desc, chord, repeated, alternating). rest_positions: Comma-separated tuplet positions that are rests (0-indexed). E.g., "2,4" = positions 2 and 4 are rests. velocity: Base velocity 0-1. accent_first: If True, first note of each tuplet gets accent. unit_index: AU index. track_index: Note track index. start_beat: Starting beat position.
Returns notes created, tuplet ratio, and timing info.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| octave | No | ||
| repeats | No | ||
| velocity | No | ||
| pitch_mode | No | scale_asc | |
| span_beats | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| accent_first | No | ||
| base_division | No | ||
| tuplet_number | No | ||
| rest_positions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It states the operation is creating a group and ends with 'Returns notes created, tuplet ratio, and timing info', providing some outcome transparency. However, it does not explicitly describe insertion/targeting side effects, whether existing notes are modified/overwritten, or any prerequisites on unit_index/track_index.
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 a clear definition and uses headings/bullets for readability. The common-tuplets list and genre references add useful context but make it longer than strictly necessary; still, no sentence is pure 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?
It includes conceptual explanation, parameter semantics, return info, and sibling differentiation, which is substantial for a 14-parameter creation tool. It lacks precise details about unit/track targeting semantics and edge-case constraints, but the presence of an output schema and thorough arg descriptions keeps it largely 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%, yet the Args section documents all 14 parameters with ranges, defaults, and examples (e.g., 'tuplet_number: Number of notes to fit in the span (2-16)', 'base_division... 3 in 2'). This fully compensates for the bare schema and adds real 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 opens with 'Create a tuplet group — irrational rhythm subdivision within a time span', giving a specific verb+resource. It further distinguishes tuplets from polyrhythm and additive rhythm, and the tool name maps directly to this 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?
It explicitly contrasts tuplets with polyrhythm and additive rhythm ('Unlike polyrhythm... or additive rhythm...'), which helps the agent choose among sibling rhythm tools. It also lists common tuplet ratios and musical contexts, but stops short of a direct 'use this when / use create_polyrhythm when' formulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_turnA
Create a turn — circular ornament: main → neighbor → main → other neighbor → main.
The turn (gruppetto) is one of the four essential baroque ornaments (trill, mordent, turn, appoggiatura). It circles around the main note in a four-note flourish. An upper turn goes up first (main → upper → main → lower → main), a lower turn goes down first (main → lower → main → upper → main).
Think Mozart piano concertos, Beethoven sonatas, Bach partitas. The turn adds elegance and circular motion to a sustained note.
main_pitch: The primary MIDI note (default 60 = C4). direction: "upper" (main→up→main→down→main) or "lower" (main→down→main→up→main). interval: Semitones to neighbors (default 2 = whole step). 1 = half step (diatonic). duration_beats: Total length in beats (0.5-4, default 1.0 = quarter note). velocity: Base velocity 0-1 (default 0.85). unit_index: AU index with note track (-1 = find first AU with note tracks). track_index: Note track index within the AU. start_beat: Position in beats where the turn begins.
Returns notes created, pitches used.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | ||
| velocity | No | ||
| direction | No | upper | |
| main_pitch | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure responsibility. It does describe the note sequence, parameter effects, and return values, but it omits important side-effect traits such as whether existing notes at the target beat are overwritten, whether a new region is created, or what happens if the specified unit/track index is invalid.
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 well-structured: a concise opening definition, a brief explanatory paragraph about the ornament's musical role, and a compact parameter list. Every sentence earns its place, with no 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?
Given the tool's 8 parameters and lack of annotations, the description is largely complete: it covers the ornament pattern, all parameter semantics, and return values ('Returns notes created, pitches used'). The presence of an output schema reduces the need for detailed return documentation. It lacks some environmental side-effect details, but overall it is sufficient for selecting and 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?
Schema coverage is 0%, but the description provides clear, human-readable definitions for all 8 parameters with defaults and ranges (e.g., interval: 'Semitones to neighbors (default 2 = whole step). 1 = half step (diatonic)' and duration_beats: '0.5-4, default 1.0"). This fully compensates for the schema's lack of 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 opens with a specific verb+resource: 'Create a turn — circular ornament: main → neighbor → main → other neighbor → main.' It immediately distinguishes the turn from sibling tools like create_trill and create_mordent by explaining the unique note sequence and character of the ornament.
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 that a turn is one of the four essential baroque ornaments and provides musical context ('Think Mozart piano concertos, Beethoven sonatas, Bach partitas'), which subtly indicates when to use it. It also clarifies upper vs. lower turn variants but does not explicitly state when not to use it compared to a trill or mordent, 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.
mcp_opendaw_create_two_hand_pianoA
Create a two-hand piano arrangement — left hand accompaniment + right hand melody.
The fundamental piano pattern: left hand plays accompaniment (Alberti bass, arpeggios, block chords, or bass+chord), right hand plays melody or chord tones. Unlike create_chord_progression (block chords only) or create_melody (single line), this combines both hands into one coherent arrangement.
chords: JSON array of chord specs, same format as create_chord_progression. Example: '[["C","maj7"],["A","min7"],["D","min7"],["G","dom7"]]' left_hand: Accompaniment pattern for left hand: "block" — full chord sustained for chord_duration "arpeggio_up" — ascending arpeggio (root-third-fifth-octave) "arpeggio_down" — descending arpeggio "arpeggio_updown" — ascending then descending "alberti" — classic Alberti bass (root-third-fifth-third) "bass_chord" — bass note on beat 1, chord for remaining beats right_hand: Right hand pattern: "chord_tones" — top note of each chord as sustained melody "arpeggio" — arpeggiated chord in right hand (higher octave) "melody" — custom melody from melody_pitches parameter melody_pitches: Comma-separated MIDI pitches for right hand melody (only used when right_hand="melody"). Spans entire progression evenly. bass_octave: MIDI octave for bass notes (2 = C2=36). chord_octave: MIDI octave for left hand chords (3 = C3=48). melody_octave: MIDI octave for right hand (5 = C5=72). chord_duration: Length of each chord in beats (4 = one bar at 4/4). arpeggio_rate: Duration of each arpeggio note in beats (0.5 = eighth notes). unit_index: AU index with a note track. track_index: Note track index within the AU. start_beat: Where the arrangement starts (0 = bar 1). velocity: Base velocity 0-1 (left hand slightly quieter).
Returns notes created, left/right hand voicings, and chord count.
| Name | Required | Description | Default |
|---|---|---|---|
| chords | Yes | ||
| velocity | No | ||
| left_hand | No | arpeggio_up | |
| right_hand | No | chord_tones | |
| start_beat | No | ||
| unit_index | No | ||
| bass_octave | No | ||
| track_index | No | ||
| chord_octave | No | ||
| arpeggio_rate | No | ||
| melody_octave | No | ||
| chord_duration | No | ||
| melody_pitches | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 return values ('Returns notes created, left/right hand voicings, and chord count'), explains the structural pattern (left hand accompaniment, right hand melody), and notes subtle behaviors like 'left hand slightly quieter.' However, it does not explicitly state whether the operation overwrites existing notes or if prerequisites such as a valid note track are enforced beyond mentioning indices.
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 long but well-structured: a clear summary, followed by parameter details, and a return statement. Each sentence earns its place, especially the enumeration of hand patterns and octave explanations. It is slightly verbose but appropriate for a 13-parameter tool with zero schema help.
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 complexity (13 parameters, 1 required, no schema descriptions), the description is remarkably complete: it addresses input, behavior, patterns, and output. It lacks explicit error handling or edge cases (e.g., what happens if melody_pitches is empty for right_hand='melody'), but the coverage is strong enough 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?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It compensates thoroughly by explaining every parameter in detail, including examples for chords, enumerating left_hand and right_hand options with descriptions, clarifying melody_pitches usage, and defining octave and rate semantics. This far exceeds 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 opens with a specific verb-resource combination: 'Create a two-hand piano arrangement — left hand accompaniment + right hand melody.' It clearly distinguishes from siblings by explicitly contrasting with create_chord_progression and create_melody, making the tool's unique role evident.
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 when-to-use guidance: 'Unlike create_chord_progression (block chords only) or create_melody (single line), this combines both hands into one coherent arrangement.' This directly tells the agent when this tool is appropriate versus alternatives, fulfilling the dimension fully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_value_clipA
Create a value clip (automation clip) on an automation track in session view.
Uses ProjectApi.createValueClip — creates a ValueClipBox with an empty ValueEventCollectionBox on the specified automation (Value-type) track.
unit_index: Audio unit index. track_index: Automation track index (-1 = first automation track on the unit). name: Clip label. clip_index: Clip slot index (0-based).
Returns clip creation details.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It does disclose that the clip is created empty ('an empty ValueEventCollectionBox') and that it operates on the specified automation track. However, it does not mention potential side effects such as overwriting an existing clip at the given clip_index, failure behavior on invalid indices, or whether the operation is reversible. This is a moderate level of 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 compact and well-structured: a one-sentence purpose, an implementation note, a four-item parameter list, and a one-line return note. Every line earns its place, with no repetition of schema details and 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?
The tool is a simple creation operation, and the description covers the core behavior, parameters, and return value. The output schema exists (per context) so the vague 'Returns clip creation details' is acceptable. Missing context includes prerequisites (did the automation track exist?) and behavior when the clip slot is already occupied, but these are not critical for a basic creation 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 schema provides zero description coverage, but the description compensates fully by listing each parameter with a brief explanation: unit_index (audio unit), track_index (with the special -1 value), name (label), and clip_index (0-based). This adds meaning well beyond the bare schema property names and also teaches the indexing conventions.
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+object+context: 'Create a value clip (automation clip) on an automation track in session view.' This clearly distinguishes this tool from siblings like create_audio_clip or create_note_clip, and the reference to ProjectApi.createValueClip further cements its 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 implies the use case—creating an automation clip on a Value-type track—but does not explicitly state when to use this tool over alternatives (e.g., create_automation_event or add_automation) or when not to use it. No exclusions or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_variationsA
Create thematic variations from an existing note region.
Reads notes from a source region and generates N variations, each written to a new region on the target track. Each variation applies a transformation: transpose, invert, reverse, augment, diminish, fragment, or octave_shift. This is the fundamental compositional technique of theme-and-variations (Bach Goldberg, Beethoven Diabelli, Brahms, jazz reharmonization).
source_unit: AU index of the source notes. source_track: Note track index within the source AU. source_region: Region index to read from (0 = first region). variations: Comma-separated variation specs. Each spec is: "transpose:N" — transpose by N semitones (e.g. transpose:5, transpose:-7) "invert" — invert around middle C (axis=60) "invert:N" — invert around pitch N "reverse" — reverse note order (keep positions relative) "augment:N" — multiply durations by N (e.g. augment:2 = double) "diminish:N" — divide durations by N (e.g. diminish:2 = halve) "fragment" — keep only notes on beats (quantize to beat boundaries) "octave_up" — shift up one octave (+12) "octave_down" — shift down one octave (-12) Example: "transpose:5,invert,reverse,augment:2,octave_down" target_unit: AU index for variations (-1 = same as source). target_track: Track index for variations (-1 = same as source). start_beat: Starting beat for first variation. spacing_beats: Gap between variations in beats (0 = each starts after previous ends).
Returns notes per variation, total notes, variation count.
| Name | Required | Description | Default |
|---|---|---|---|
| start_beat | No | ||
| variations | No | transpose:5,transpose:-3,invert,reverse,augment:2 | |
| source_unit | Yes | ||
| target_unit | No | ||
| source_track | Yes | ||
| target_track | No | ||
| source_region | No | ||
| spacing_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the operation reads from a source region and writes new regions to a target track, implying non-destructive behavior (source is read-only). It details each transformation effect. However, it does not disclose edge cases like whether existing regions on the target track are overwritten, or behavior on invalid inputs. Still, it provides substantial behavioral insight.
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 long but every sentence is information-dense and earned. It front-loads the core purpose, then systematically explains each parameter with a labeled list. The variation-spec enumeration is necessary for correct usage and is well-formatted. 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 tool's complexity (8 parameters, no annotations, output schema present), the description covers purpose, parameters, return values, and even musical context. It omits nothing critical for an agent to invoke it correctly. The output schema exists, so return types need no further 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 input schema provides only titles with no descriptions (0% coverage), so the description must fully explain parameters. It does so exhaustively: all 8 parameters are described with formats, defaults, and examples (especially the variations string syntax with all supported spec forms). This is exemplary compensation for missing 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 opens with a specific verb and resource: 'Create thematic variations from an existing note region.' It clearly distinguishes itself from siblings by enumerating the exact transformations (transpose, invert, reverse, augment, diminish, fragment, octave_shift) and the source/target region mechanics. This is a precise, non-tautological purpose statement.
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: it is for theme-and-variations composition, citing historical examples. It explains when to use it (when creating variations from a note region) but does not explicitly contrast with sibling tools like create_motif_variations or create_motif_development. Thus it has strong implied usage but lacks explicit exclusions/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_voice_exchangeA
Create a voice exchange — imitative counterpoint where motifs pass between voices.
A voice exchange is a contrapuntal technique where melodic material is passed between two or more voices. Voice A states a motif, Voice B responds with the same motif (transposed, inverted, or retrograded), creating a dialogic texture. This is the foundation of fugue, canon, and Renaissance polyphony.
Unlike clone_track (exact copy) or copy_notes_to_track (direct clone), voice exchange transforms the material as it passes between voices:
Imitation: same motif at a different pitch level
Inversion: motif inverted (intervals flipped)
Retrograde: motif reversed in time
Retrograde-inversion: both reversed and inverted
Augmentation: motif stretched in time
Diminution: motif compressed in time
With swap=True, the source notes are also moved to the target register, creating a true voice exchange where the voices cross.
Args: unit_index: AU index. source_track: Source note track index (contains the original motif). source_region: Source region index (0 = first region). target_track: Target note track index (where the response goes). target_region: Target region index (0 = first region). exchange_mode: Transformation mode (imitation, inversion, retrograde, retrograde_inversion, augmentation, diminution). interval: Pitch interval for imitation (semitones). Default 7 = perfect fifth. transpose: Additional semitone transpose on top of interval. time_offset: Time offset in beats before the response starts. Default 2.0 = response begins 2 beats after source starts. duration_factor: Duration multiplier (1.0 = same, 2.0 = augmentation, 0.5 = diminution). Overrides augmentation/diminution modes. velocity_factor: Velocity multiplier for the response voice. swap: If True, also swap source notes to target register (true exchange).
Returns notes created, transformation mode, and exchange statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| swap | No | ||
| interval | No | ||
| transpose | No | ||
| unit_index | Yes | ||
| time_offset | No | ||
| source_track | No | ||
| target_track | No | ||
| exchange_mode | No | imitation | |
| source_region | No | ||
| target_region | No | ||
| duration_factor | No | ||
| velocity_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the transformation modes, swap behavior, and return values. However it does not explicitly state behavior when target region already contains notes or whether the source is left unmodified without swap. For a complex mutating tool, this is a minor 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 long but well organized with bulleted lists and an Args section. The opening paragraph could be shortened without losing meaning, but every section contributes. For a tool with 12 parameters, this length is justified.
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 what the tool does, how it differs from siblings, all parameter semantics, and the return values. With an output schema present, return details are a bonus. Combined with the rich parameter examples, the description is fully 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 Args section gives plain-language explanations for all 12 parameters, including defaults and examples (e.g., 'Default 7 = perfect fifth', 'Default 2.0 = response begins 2 beats after source starts'). The schema itself has zero descriptions, so this adds essential 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 opens with a clear definition: 'Create a voice exchange — imitative counterpoint where motifs pass between voices.' It then contrasts with clone_track and copy_notes_to_track, positioning the tool as a transformation-based counterpoint tool rather than a copy 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?
It explicitly says 'Unlike clone_track (exact copy) or copy_notes_to_track (direct clone), voice exchange transforms the material as it passes between voices.' This provides guidance on when to use this tool. The list of transformation modes also clarifies intended use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_voice_led_progressionA
Create chord pads with smooth voice leading — minimal movement between chords.
Unlike create_chord_pads (which voices every chord in root position causing large jumps), this tool re-voices each chord so individual voices move as little as possible. Common tones stay stationary, other voices resolve by nearest semitone step. The result: strings/pads that glide instead of jump.
progression: Hyphen-separated chords (same format as create_chord_pads). "Am-F-C-G" = i-VI-III-VII in A minor. "C-Am-F-G" = I-vi-IV-V in C major. "Dm7-G7-Cmaj7-Am7" = ii-V-I-vi in C (jazz).
bars_per_chord: Bars per chord (default 4). octave: Center octave for voicing range (3 = C3-C4 register, typical pads). velocity: Note velocity (0-1, default 0.65). unit_index: AU index with note tracks. track_index: Track for chord pads (typically 2 = harmony). start_beat: Where the progression starts. note_duration: Sustain length in beats (default 3.8 = near-full bar). voice_range: Max semitone span from center pitch for each voice (default 12 = one octave either side of center). Prevents voices from drifting too high or low. 7 = tighter, 18 = wider range.
Returns chord voicings, voice movements, and total notes.
Voice leading algorithm:
First chord: root-position voicing centered on octave.
For each subsequent chord: a. Find all pitch-class rotations/inversions of the chord. b. For each candidate voicing, compute total voice movement (sum of semitone distances from previous voicing, by voice index). c. Pick the voicing with minimal total movement. d. Constraint: each voice stays within ±voice_range of center.
Common tones naturally stay (distance 0 = optimal).
| Name | Required | Description | Default |
|---|---|---|---|
| octave | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| progression | No | Am-F-C-G | |
| track_index | No | ||
| voice_range | No | ||
| note_duration | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 details the voice-leading algorithm step-by-step, explains the voice_range constraint, and states the return value ('Returns chord voicings, voice movements, and total notes'). This provides substantial behavioral insight, though it does not mention potential side effects like whether existing notes are overwritten or if specific track prerequisites are 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 well-structured: a clear purpose statement, a contrast with the sibling tool, a parameter reference section, and an algorithm breakdown. Every sentence serves a purpose—parameter documentation is necessary given the sparse schema, and the algorithm section adds transparency. It is long but efficiently organized, with 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?
The description covers the core functionality, algorithm, parameters, and return values, which is comprehensive for a creative tool with 9 optional parameters and an output schema. However, it leaves some operational details ambiguous, such as what exactly 'unit_index' refers to, whether existing notes are cleared, and what happens if the specified track does not exist. These gaps are minor given the overall richness but prevent a perfect score.
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 zero descriptions (0% coverage), so the description fully compensates. Every parameter (progression, bars_per_chord, octave, velocity, unit_index, track_index, start_beat, note_duration, voice_range) has a prose explanation with defaults, units, and examples. The progression parameter includes concrete chord progression examples with Roman numeral analysis, making semantics exceptionally clear.
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: 'Create chord pads with smooth voice leading — minimal movement between chords.' It explicitly distinguishes itself from the sibling tool create_chord_pads by explaining that create_chord_pads voices chords in root position while this tool re-voices to minimize movement. This provides a specific verb, resource, and scope, and directly differentiates from a similar sibling.
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 context by contrasting with create_chord_pads: 'Unlike create_chord_pads (which voices every chord in root position causing large jumps), this tool re-voices each chord so individual voices move as little as possible.' This tells the agent when to use this tool versus the alternative, and the context 'strings/pads that glide instead of jump' clarifies the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_volume_fadeA
Create a volume fade automation on an audio unit — fade in or fade out.
The most common mix technique for intros, outros, breakdowns, and section transitions. Creates volume automation events on the AU's volume parameter, ramping from one dB level to another. Uses exponential curve by default (natural for amplitude perception).
unit_index: AU index. direction: "out" (fade out, volume decreases) or "in" (fade in, volume increases). start_beat: Start position in beats. duration_beats: Fade length in beats (default 4 = 1 bar). start_volume_db: Starting volume in dB (default: 0 for out, -60 for in). end_volume_db: Ending volume in dB (default: -60 for out, 0 for in). curve: "exp" (exponential, default — natural for amplitude), "linear", "log". steps: Number of automation points (default 24 = smooth).
Returns events created, fade config, and dB range.
Examples: create_volume_fade(unit_index=0, direction="out", duration_beats=8) → 8-beat fade out from 0 dB to -60 dB, exp curve create_volume_fade(unit_index=2, direction="in", duration_beats=4, end_volume_db=-3) → 4-beat fade in from -60 dB to -3 dB
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | exp | |
| steps | No | ||
| direction | No | out | |
| start_beat | No | ||
| unit_index | Yes | ||
| end_volume_db | No | ||
| duration_beats | No | ||
| start_volume_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 that the tool creates volume automation events, ramps between dB levels, uses an exponential curve by default, and returns specific data. It does not mention whether it overwrites existing automation or is reversible, but it gives a clear operational picture for a mutating 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 organized in a logical flow: opening purpose, usage context, parameter list, return value, and examples. Every sentence serves a purpose; the parameter documentation and examples justify the length. It front-loads the core information and avoids 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 the complexity (8 parameters, no annotations, no schema descriptions), the description covers all essential aspects: what it does, when to use it, all parameters with defaults, and return values. The presence of examples further enhances completeness, leaving little ambiguity for an AI 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 description coverage is 0%, so the description fully compensates. It explains every parameter with units, defaults, and directional dependencies (e.g., start_volume_db default 0 for fade out, -60 for fade in), and provides two concrete examples that clarify usage. This exceeds the schema's bare titles.
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 ('Create a volume fade automation') and the resource ('audio unit'), explicitly covering both fade directions. It distinguishes itself from sibling tools like create_filter_sweep, create_pan_sweep, and set_audio_region_fade by focusing on volume automation on the AU's volume parameter.
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 this tool: 'The most common mix technique for intros, outros, breakdowns, and section transitions.' It does not explicitly mention alternatives or when not to use it, but the stated context is sufficient to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_walking_bassA
Create a walking bass line over a chord progression.
A walking bass plays four quarter notes per bar, connecting chords through chord tones, passing tones, and approach notes. The bass 'walks' from one chord to the next using scale-wise motion and arpeggios. Essential for jazz, blues, and swing.
chords: JSON array of [root, chord_type] pairs. Example: [["C","maj7"],["A","min7"],["D","min7"],["G","dom7"]] unit_index: AU index. track_index: Note track index. start_beat: Starting beat position. octave: Bass octave (1-3, default 2 = C2=36). velocity: Note velocity 0-1. bars_per_chord: Bars to spend on each chord (1-4). 1 = 4 notes per chord, 2 = 8 notes.
Returns total notes created and bass walk summary.
The walking bass algorithm: Beat 1: chord root (strong) Beat 2: chord tone (3rd, 5th, or 7th) Beat 3: passing tone (scale step between current and next chord) Beat 4: approach note (half-step or scale-step into next chord root)
Example: create_walking_bass(chords='[["C","maj7"],["A","min7"],["D","min7"],["G","dom7"]]', octave=2)
| Name | Required | Description | Default |
|---|---|---|---|
| chords | Yes | ||
| octave | No | ||
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| bars_per_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 goes beyond basics by detailing the exact algorithm: beat 1 root, beat 2 chord tone, beat 3 passing tone, beat 4 approach note. It also explains the effect of bars_per_chord and states the return value (total notes and summary), providing comprehensive 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 well-structured and front-loaded: purpose, parameter details, algorithm, and example. Each sentence adds value; no redundancy or fluff. Length is justified by the tool's musical complexity.
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 algorithm, all parameters, return value, and includes a concrete example. Given the tool's generative complexity and the presence of an output schema, this description is fully complete for an agent to select and 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?
Although schema description coverage is 0%, the description explains every parameter inline: chords with JSON example, unit_index, track_index, start_beat, octave with range and MIDI note, velocity range, and bars_per_chord behavior. This fully compensates for the schema 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 opens with a specific verb and resource: 'Create a walking bass line over a chord progression.' It clearly distinguishes this tool from siblings like create_bassline or create_electronic_bass by specifying the musical style (jazz, blues, swing) and the walking bass technique.
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 clear context by stating 'Essential for jazz, blues, and swing,' implying when this tool is appropriate. It does not explicitly name alternative tools or exclusion criteria, so it misses the 'when-not' guidance that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_create_warp_markerA
Add a warp marker to a time-stretched or pitch-stretched audio region.
Warp markers define the mapping between musical position (ppqn) and audio time (seconds). The first and last markers are anchors — they pin the start and end of the audio.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. position_beats: Musical position in beats (e.g. 0.0 = start of region). seconds: Audio time in seconds at this position.
Returns the new marker count and the added marker's position/seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior (adds a marker, anchors first/last) and the return value (new marker count and added marker's position/seconds). However, with no annotations, it does not address potential side effects, ordering constraints, or prerequisites such as the region being stretched.
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 well-structured with an opening statement, a short conceptual paragraph, a parameter list, and a return-value note. Every sentence contributes meaning, and the length is appropriate.
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 moderately complex with five parameters and no annotations, and the description covers the concept, parameters, and return value. It lacks details on preconditions, error cases, and how it relates to other marker tools, but the provided information 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?
With 0% schema coverage, the description provides brief definitions for all five parameters, clarifying units (beats, seconds) and hierarchy (AU, track, region). While helpful, it does not explain how to obtain these indices or any valid range 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 opens with a clear action ('Add a warp marker') and specifies the resource type and context (time-stretched or pitch-stretched audio region). It explains the concept of warp markers, which helps distinguish from similar marker tools, though it doesn't explicitly contrast with 'add_marker' or other 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 implies the tool is for stretched regions ('to a time-stretched or pitch-stretched audio region') and explains the marker's role, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives like add_marker. This leaves the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_audio_regionBDestructive
Delete an audio region from the timeline.
unit_index: Audio unit index. track_index: Audio track index within the AU (type=2). region_index: Region index to delete (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already declares destructiveHint=true, so the destructive nature is known. The description adds no further behavioral context—it does not disclose whether the deletion is permanent, whether it shifts subsequent region indices, whether undo is possible, or what side effects may occur. It only reiterates the deletion 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 concise and well-structured: a one-line action statement followed by a bulleted parameter list. Every sentence serves a purpose, with no fluff or extraneous detail. It is easy to scan and front-loads 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 tool is simple, has an output schema, and parameters are documented. However, it lacks important contextual guidance, such as how to determine valid unit/track/region indices and the potential index-shifting effect of deletion. Given the availability of sibling list tools, this missing information could lead to incorrect 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?
With schema description coverage at 0%, the description fully compensates by explaining each parameter: unit_index as 'Audio unit index', track_index as 'Audio track index within the AU (type=2)', and region_index as 'Region index to delete (0-based)'. This adds meaningful context beyond the bare schema names and helps an agent understand indexing conventions.
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: 'Delete an audio region from the timeline.' This is a specific verb+resource with scope ('audio region' and 'timeline'), distinguishing it from note region deletion. However, it does not explicitly differentiate itself from sibling tools like delete_region or delete_note_region, so it falls 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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention how to obtain valid indices (e.g., via list_audio_regions), nor does it advise against using it for other region types. There is no when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_audio_unitADestructive
Delete an entire audio unit with all its tracks, effects, and sends.
Uses ProjectApi.deleteAudioUnit() — proper cleanup of all connected boxes. The primary output AU (index 0) cannot be deleted.
unit_index: Audio unit to delete (must be >= 1, as index 0 is the master output).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as destructive (destructiveHint: true), and the description adds useful behavioral details: it performs proper cleanup of connected boxes via ProjectApi.deleteAudioUnit(), and it protects the master output from deletion. This goes beyond the annotation without contradicting it.
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 four short sentences, front-loaded with the primary purpose, then the cleanup behavior, then the critical index constraint. Every sentence adds value with no 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?
For a single-parameter destructive tool, the description adequately covers what it deletes, how it cleans up, and the only special-case constraint (index 0). The output schema exists, so return details are not required. It is complete for an agent to select and 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 only provides the parameter name 'unit_index' as an integer with no description (0% coverage). The description fully compensates by explaining that unit_index identifies the audio unit to delete and must be >= 1 because index 0 is the master output. This gives the agent the necessary semantic constraint.
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 it deletes an entire audio unit with all its tracks, effects, and sends, which is a specific verb+resource combination. It distinguishes this tool from siblings like mcp_opendaw_delete_track, mcp_opendaw_remove_effect, and mcp_opendaw_remove_send by emphasizing the whole-unit 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 provides clear operational context by stating the primary output AU (index 0) cannot be deleted and requiring unit_index >= 1. It implies when to use this tool (full unit removal) versus alternatives like delete_track, though it does not explicitly name alternatives or list when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_automation_eventADestructive
Delete a single automation event (ValueEventBox) from an automation track.
unit_index: Audio unit index. track_index: Track index within the unit (automation track). event_index: Event index within the track's value region.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| event_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, so the description does not need to restate that deletion is destructive. It adds the scoping detail that only a single event is removed and notes that success or error is returned, but it does not disclose additional traits like irreversibility or effects on neighboring events.
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 action, followed by a clean parameter list. Every sentence and line adds value, with no fluff 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?
The tool is simple, and the description covers the core function, parameters, and return behavior. It could improve by mentioning how to discover the correct indices (e.g., using list_automation_events) and any side effects, but given the output schema exists and the operation is straightforward, 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 schema has zero description coverage for parameters, and the description fully compensates by defining each index: unit_index (audio unit), track_index (track within the unit, specifically an automation track), and event_index (event within the track's value region). This adds meaningful hierarchical semantics beyond the bare integer 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 'Delete a single automation event (ValueEventBox) from an automation track', using a specific verb and resource. It distinguishes from sibling tools like create, update, move, and duplicate automation events by focusing on deletion of a single event.
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 you need to remove an automation event) and explains the meaning of each index parameter, but it does not explicitly state when to use this tool versus alternatives or mention that one might need to list events first to obtain valid indices. This is adequate but not fully guiding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_clipADestructive
Delete a clip from a track (session view).
unit_index: Audio unit index. track_index: Track index. clip_index: Clip index to delete (0-based).
Returns remaining clip count.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description's 'Delete' is consistent. The description adds useful context (session view, returns remaining clip count) but does not disclose additional behavioral traits such as permanence, undoability, or error behavior. It adds some value beyond the annotation but is 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 extremely concise: one leading verb phrase, a parameter list, and a return-value line. Every sentence is informative with no filler. Ideal structure for quick agent parsing.
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 simplicity of the operation (3 integer params, no enums), the description covers the action, parameter semantics, return value, and session-view context. With an output schema present, no further explanation of return format is needed. It is complete for an agent to select and 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?
Schema description coverage is 0%, but the description fully compensates by explaining each parameter: unit_index as Audio unit index, track_index as Track index, and clip_index as 0-based. It also clarifies indexing, which the schema lacks. This completely addresses the parameter semantics 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 states 'Delete a clip from a track (session view)' – a specific verb+resource with contextual scoping (session view). This clearly distinguishes it from other deletion tools like delete_region or delete_audio_unit, and no competing delete_clip sibling exists.
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 context via 'session view' and mentions the clip_index is 0-based, but it does not explicitly state when to use this tool versus alternatives (e.g., delete_region, delete_audio_region) or any exclusions. No alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_markerADestructive
Delete a timeline marker by index.
marker_index: Index from list_markers (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| marker_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already declares the operation is destructive, aligning with the 'Delete' verb. The description adds no extra behavioral context such as irreversibility or index shifting after deletion. It does not contradict the annotation, but adds minimal value beyond it.
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 the main action first and the parameter explanation second. Every word contributes; there is no padding or repetition. It is appropriately sized 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?
For a one-parameter delete operation with an output schema present, the description covers the core functionality and parameter semantics. It could mention that deleting a marker may shift subsequent indices, but this is a minor gap given the simplicity and the annotation coverage.
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 an integer title for marker_index with no description. The description compensates fully by explaining 'marker_index: Index from list_markers (0-based)', which gives the source and base for the index—essential information the schema lacks.
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 'Delete a timeline marker by index' with a specific verb ('delete') and resource ('timeline marker'). This clearly distinguishes it from sibling tools like delete_warp_marker and set_marker_position, which operate on different marker types or actions.
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 by referencing list_markers for the index, suggesting a prerequisite call. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or context beyond the index source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_noteADestructive
Delete a single note from a region.
note_index: Index of the note to delete (0-based, as returned by list_notes). unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region containing the note (0-based).
Returns remaining note count.
| Name | Required | Description | Default |
|---|---|---|---|
| note_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the destructive nature is disclosed. The description adds useful behavioral context: 0-based indexing, the special unit_index=-1 meaning 'search all AUs', and that the tool returns the remaining note count. 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?
The description is compact and front-loaded: a one-sentence purpose followed by a parameter list, then a return-value line. Every sentence earns its place 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 destructive operation, the description covers the core behavior, all parameter meanings, and the return value. Since an output schema exists, return structure doesn't need elaboration. It omits explicit error handling or invalid-index behavior, but the destructiveHint annotation and parameter details make it 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?
Schema provides only type and title with 0% description coverage. The description compensates by explaining all four parameters: note_index (0-based, as returned by list_notes), unit_index (-1 searches all AUs), track_index (within the AU), and region_index (0-based containing region). This adds meaningful semantics 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 clearly states 'Delete a single note from a region' – a specific verb and resource. It distinguishes from siblings like delete_note_region, clear_region_notes, and delete_region by explicitly targeting one note rather than a region or a whole region's notes.
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 implies when to use it (remove a single note), but there is no explicit guidance on when not to use it or what alternatives exist (e.g., clear_region_notes to delete all notes, delete_region for whole-region deletion). The parameter explanations help clarify the targeting context, but usage boundaries are not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_note_regionBDestructive
Delete a note region from the timeline.
unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region index to delete (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already signals destructive behavior. The description adds minimal behavioral context; it mentions 'from the timeline' but does not specify whether the deletion is permanent, whether it affects contained notes, or any side effects. It does not contradict annotations but provides little beyond them.
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: one sentence for the action and three concise parameter lines. No filler or redundant information. It's front-loaded with 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?
With an output schema present and annotations covering destructive intent, the description provides the essential parameter details. However, it lacks usage guidance and behavioral nuancing such as undoability or effects on dependent regions, leaving some gaps for an agent in a complex DAW 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 description coverage is 0% and no parameter descriptions exist in the schema. The description compensates by explaining all three parameters: unit_index with '-1 = search all AUs', track_index as within the AU, and region_index as 0-based. This fully covers the semantics for an agent.
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 'Delete a note region from the timeline' with a clear verb and resource. It identifies the target as a note region, distinguishing it from audio regions, but it doesn't explicitly differentiate it from sibling tools like delete_region or delete_audio_region, so it lacks explicit 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?
No when-to-use or alternative guidance is provided. The description only defines the operation and parameters, with no context on when to choose this over other delete tools (e.g., delete_region, delete_audio_region) or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_regionADestructive
Delete a region from a track.
Removes the region and all its contents (notes for note regions, audio reference for audio regions, automation events for value regions).
track_index: Track index within the AU. region_index: Region to delete (0-based). unit_index: Audio unit index (-1 = search all AUs). region_type: 'note', 'audio', or 'value' (for filtering).
Returns remaining region count on the track.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| region_type | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already flags this as destructive. The description adds valuable context by specifying exactly what is removed (notes, audio references, automation events) and by stating the return value. This goes beyond the binary annotation, though it does not discuss undo behavior or irreversibility.
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: a clear action sentence, a bullet-like explanation of the destructive effect, a parameter list, and a return value note. Every sentence provides useful information 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 description covers the operation, destructive effects, parameters, and return value—enough for a delete tool. It lacks explicit mention of undo/redo or typical use cases, but the destructiveHint annotation and clear parameter docs make it 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?
Schema description coverage is 0%, so the description carries the full burden of explaining the parameters. It does so effectively: track_index (within AU), region_index (0-based), unit_index (-1 for all AUs), and region_type ('note', 'audio', 'value'). This fully compensates for the schema's lack of 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 opens with 'Delete a region from a track', a specific verb+resource statement. It further clarifies the scope by listing what gets removed for each region type. Although it doesn't explicitly differentiate from siblings like delete_note_region or delete_audio_region, the region_type parameter makes the generic behavior 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 when to use the tool through parameter explanations (e.g., region_type filtering) but does not explicitly state when to choose it over alternatives or mention any exclusions. Sibling tools like delete_note_region and delete_audio_region exist, but no guidance is provided on selecting between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_sectionADestructive
Delete all regions within a beat range across all tracks.
Scans all tracks across all specified audio units, finds every region that overlaps the [from_beat, to_beat) range, and deletes each one. This is the arrangement cleanup tool: "clear bars 9-12 so I can put something else there" or "remove the intro (bars 1-4) from all tracks".
Completes the section CRUD trilogy: duplicate (copy), move (cut-paste), delete (remove). One call replaces N delete_region calls.
from_beat: Start of the section to delete (beats). to_beat: End of the section to delete (beats, exclusive). unit_indices: Comma-separated AU indices to scan (default: all AUs).
Returns number of regions deleted, per-track details, and remaining counts.
Examples: delete_section(from_beat=0, to_beat=16) -> Remove first 4 bars from ALL tracks across ALL audio units delete_section(from_beat=32, to_beat=48, unit_indices="0,1") -> Remove bars 9-12 from AUs 0 and 1 only
| Name | Required | Description | Default |
|---|---|---|---|
| to_beat | Yes | ||
| from_beat | Yes | ||
| unit_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the destructiveHint annotation. It explains the exact scanning behavior, the half-open interval [from_beat, to_beat), the optional unit_indices restriction, and what is returned ('number of regions deleted, per-track details, and remaining counts'). This gives the agent a thorough understanding of the tool's actions and 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?
The description is efficiently structured: a one-sentence summary, then behavior, use cases, parameters, return value, and two examples. Every sentence adds value, and the content is well-organized and front-loaded. Although it is longer than typical descriptions, the length is justified by the tool's complexity and the lack of parameter descriptions in 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?
Given the tool's complexity (multiple tracks, range semantics, optional unit filtering), the description is remarkably complete. It covers the action, the scope, the parameters, and the return value. The presence of an output schema means the description need not detail return structure, but it does anyway. There are no significant gaps for an agent to misuse 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?
With schema description coverage at 0%, the description fully compensates by explaining each parameter: from_beat (start), to_beat (exclusive end), and unit_indices (comma-separated AU indices, defaults to all AUs). The examples further clarify usage. This is exactly what a well-compensated parameter section looks like.
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+resource+scope: 'Delete all regions within a beat range across all tracks.' It distinguishes itself from the sibling delete_region by explicitly saying 'One call replaces N delete_region calls' and positions itself within the CRUD trilogy (duplicate/move/delete). This makes the tool's function unmistakable and differentiated.
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 concrete use cases ('clear bars 9-12') and explicitly contrasts with delete_region ('One call replaces N delete_region calls'). It does not explicitly state when NOT to use it (e.g., for a single region), but the context is clear enough that an agent can infer the appropriate scenario. The missing explicit exclusion prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_signature_changeADestructive
Delete a time signature change from the timeline.
Delete by position (closest match) or by index (0-based in sorted order). Pass index=-1 and position_beats=-1 to delete the last event.
position_beats: Position to match (closest event will be deleted). index: 0-based index in sorted order (-1 = use position match).
Returns updated signature event list.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already indicates mutability. The description adds useful context by explaining that deletion matches the closest event to the given position and that it returns the updated signature event list. It does not disclose undo options but provides enough behavior beyond the annotation for an agent to understand the deletion semantics.
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 primary purpose. It uses bullet-like line breaks for parameter details. There is slight redundancy between the opening lines and the parameter descriptions, but overall it is efficient and well-organized.
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, the presence of an output schema, and the destructiveHint annotation, the description adequately covers the essential usage. It explains the two deletion modes, the return value, and special last-event handling. It does not specify behaviors like no-match handling, but those are secondary given the 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 description coverage is 0%, so the description fully compensates by explaining both parameters: position_beats is the position to match with closest-event deletion, and index is the 0-based index in sorted order with -1 used for position matching. The special combination for deleting the last event is also clarified, leaving 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 'Delete a time signature change from the timeline' which is a specific verb+resource. It distinguishes from sibling tools like add_signature_change, list_signature_changes, and move_signature_event because the delete action is unambiguous and unique among the listed 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 provides clear guidance on how to invoke the tool: delete by position or index, and explains the special case of passing index=-1 and position_beats=-1 to delete the last event. However, it does not explicitly mention when to use this tool versus alternatives like move_signature_event, 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.
mcp_opendaw_delete_trackADestructive
Delete a track from an audio unit. Removes all regions, clips, and notes on that track.
unit_index: Audio unit index. track_index: Track index within the unit.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses the concrete behavioral outcome: 'Removes all regions, clips, and notes on that track.' This adds valuable context about the destructive scope. It also mentions 'Returns success or error' which is basic but useful. It does not cover undo behavior or side effects on sends/routing, but given the annotation, the bar is lower and the provided information is adequate.
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 three tightly written sentences: purpose, side effects, and parameter definitions. No redundant or irrelevant content. The parameter list is clearly formatted and every sentence earns its place. This is an appropriately sized and well-structured 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 two-parameter deletion tool, the description covers purpose, side effects, and parameter meanings. The destructiveHint annotation and output schema reduce the need to explain safety or return formats. It could additionally clarify that indices refer to current state or that deletion is permanent, but overall it is sufficient for effective 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 explicitly defines both parameters: 'unit_index: Audio unit index' and 'track_index: Track index within the unit.' Since the input schema has no descriptions (coverage 0%), this parameter guidance compensates well. It could have added detail about indexing conventions (e.g., zero-based) or how to resolve indices, but the basic semantics are clear.
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 'Delete a track from an audio unit' with a specific verb and resource, and clarifies the scope by noting it 'Removes all regions, clips, and notes on that track.' This distinguishes it from sibling tools like delete_audio_unit (whole unit) and delete_region (individual content). The purpose is unambiguous and well-scoped.
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 implies when to use this tool: when you need to delete an entire track and all its contained data. It does not explicitly name alternatives or exclusion cases, but the context is clear enough that an agent can infer this is for track-level deletion rather than unit-level or region-level operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_delete_warp_markerADestructive
Delete a warp marker from a time-stretched or pitch-stretched audio region.
Cannot delete anchor markers (first and last) — they pin the audio mapping.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. marker_index: Warp marker index (0-based, from list_warp_markers).
Returns remaining marker count.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| marker_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds useful behavioral details beyond that: which markers are protected (anchor markers) and the return value ('Returns remaining marker count'). This gives the agent important expectations about side effects and results.
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-organized: a one-line purpose, a crucial constraint sentence, a parameter list, and a return statement. Every sentence serves a purpose with no fluff 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?
The description covers all essential aspects for invocation: purpose, parameter semantics, a key limitation, and return value. It doesn't explain what a warp marker is in detail, but that is likely domain knowledge. The destructive hint is already annotated, and the description complements it with the anchor restriction. It is nearly complete for safe 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 0%, so the description must explain the parameters. It does: 'unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. marker_index: Warp marker index (0-based, from list_warp_markers).' This adds clarity beyond the bare titles, including the 0-based index and provenance of marker_index.
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 and resource: 'Delete a warp marker from a time-stretched or pitch-stretched audio region.' It distinguishes from the generic delete_marker tool by specifying 'warp marker' and the context of time/pitch-stretched regions.
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 key usage constraint: 'Cannot delete anchor markers (first and last) — they pin the audio mapping.' This tells the agent when not to use the tool. Also implies a workflow by noting the marker_index comes 'from list_warp_markers', suggesting listing first. However, no explicit alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_detect_bpmARead-only
Detect BPM (tempo) of an exported WAV file using onset detection + autocorrelation.
Pure Python implementation (no external dependencies):
Parse WAV → mono mixdown
Energy envelope (1024-sample windows)
Onset detection (energy spikes above local average)
Autocorrelation of onset train → dominant periodicity → BPM
Essential for Suno integration: Suno generates at its own BPM, but the openDAW project needs matching tempo. Detect → set_bpm for correct beat alignment when placing stems.
filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns: bpm (60-200), confidence (0-1), onset_count, duration_seconds.
Examples:
After importing a Suno track
result = detect_bpm("suno_track.wav")
→ {bpm: 128.0, confidence: 0.85, onset_count: 240, ...}
Then set project BPM
set_bpm(128)
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds substantial behavioral detail: the algorithm steps (WAV parse, mono mixdown, energy envelope, onset detection, autocorrelation), the 'Pure Python implementation (no external dependencies)' trait, filename resolution rules (exports directory or absolute path), and the return contract (bpm, confidence, onset_count, duration_seconds). 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?
The description is longer than average but well-structured: purpose sentence, numbered algorithm list, use-case rationale, parameter definition, return values, and a worked example. Each section adds value, though the 4-step algorithm listing is arguably more detail than strictly needed.
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 analysis tool with readOnlyHint and an output schema, the description is remarkably complete: it covers purpose, input semantics, return values, an end-to-end example, and the motivating scenario. Missing only minor edge-case details like behavior on missing files or low 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 coverage is 0% — the schema only states 'filename' is a required string. The description fully compensates: 'filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' It also shows usage in the example (detect_bpm("suno_track.wav")), removing all 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 first sentence states a specific verb+resource: 'Detect BPM (tempo) of an exported WAV file using onset detection + autocorrelation.' This clearly distinguishes it from siblings like set_bpm (which sets tempo) and get_tempo_at (which queries project tempo).
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 concrete use case: 'Essential for Suno integration: Suno generates at its own BPM, but the openDAW project needs matching tempo. Detect → set_bpm for correct beat alignment when placing stems.' It names a downstream workflow but does not explicitly state when NOT to use this tool or name alternative detection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_detect_frequency_maskingARead-only
Detect frequency masking between stems — where instruments compete for the same frequency range.
The #1 mix problem. Bass and kick fight at 60-120Hz. Guitars and vocals mask each other at 2-4kHz. This tool finds these conflicts by comparing the spectral content of exported stems pairwise.
For each pair of stems, computes:
overlap_score (0-1): how much their spectra overlap in the same band
conflict_bands: which frequency bands have the most masking
severity: LOW / MEDIUM / HIGH based on overlap and energy
recommendation: specific EQ cut/boost suggestion
filenames: JSON array of stem filenames in exports dir, OR comma-separated list. Example: '["bass.wav","kick.wav","vocals.wav"]' or "bass.wav,kick.wav"
Returns per-pair analysis + prioritized list of masking issues.
Example:
Export stems first, then detect masking
export_stems("track") detect_frequency_masking('["track_bass.wav","track_drums.wav","track_other.wav"]')
→ {masking_issues: [{pair: ["bass","drums"], band: "bass", severity: "HIGH", ...}]}
| Name | Required | Description | Default |
|---|---|---|---|
| filenames | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description explains the internal behavior: it compares spectral content of exported stems pairwise, computes specific outputs (overlap_score, conflict_bands, severity, recommendation), and returns a prioritized list. It also notes the prerequisite that the stems must already be exported, adding useful operational 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 bit long but well-structured: a clear purpose statement, contextual examples, a detailed parameter explanation, and a usage example. Every section earns its place, with no redundant filler aside from the mildly rhetorical 'The #1 mix problem' line.
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 and the existence of an output schema, the description is complete: it explains the purpose, the required parameter format, the prerequisite (export stems), the outputs, and an end-to-end example. It leaves no major gaps for an agent 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 schema only specifies filenames as a string with no description, but the description thoroughly explains the accepted formats (JSON array or comma-separated list), provides concrete examples, and clarifies that the files must be in the exports dir. This fully compensates 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 description clearly states the tool's function: 'Detect frequency masking between stems — where instruments compete for the same frequency range.' It is specific about the resource ('stems') and distinguishes this pairwise analysis tool from siblings like analyze_spectrum or detect_problems by focusing on inter-stem conflicts.
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 it ('The #1 mix problem') and gives an example workflow (export stems first, then call this). It does not explicitly name alternatives or state when not to use it, but the context is sufficient for an AI agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_detect_keyARead-only
Detect musical key and mode of a WAV file using chroma features + Krumhansl-Schmuckler key profiles.
Pure Python implementation (no external dependencies):
Parse WAV → mono mixdown
Short-time FFT (4096-point, Hann window, 75% overlap) — pure Python radix-2 Cooley-Tukey
Map spectral bins to 12 pitch classes → chroma vector
Correlate chroma with major/minor key profiles for all 24 keys (12 roots × 2 modes)
Best correlation → key + mode
Essential for Suno integration: detect key → build matching chord progression → create_harmonic_arrangement that fits the imported audio. Enables automatic remix pipeline: download → detect_bpm → detect_key → import → generate matching harmony → mix → render.
filename: Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.
Returns: key (e.g. "A"), mode ("major"/"minor"), confidence (0-1), correlation, alternatives (top 3), chroma (12-element list).
Examples:
After importing a Suno track
result = detect_key("suno_track.wav")
→ {key: "A", mode: "minor", confidence: 0.72, ...}
Then build matching progression
create_chord_progression([["Am","G","F","E7"]])
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true is consistent with the description. The description adds significant behavioral context: pure Python implementation, no external dependencies, and a step-by-step algorithm (FFT, chroma, correlation). It also details the return fields, going beyond the annotation's safety profile.
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 lengthy but well-structured, starting with the core purpose, then algorithm, use case, parameter, and return format. The numbered algorithm steps could be trimmed but add transparency. Examples at the end are 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?
The description covers input, output, use case, and algorithm. It even includes an example result. With a single parameter and an output schema, this is complete for an agent to select and 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 schema has only one parameter 'filename' with no description, so the description carries full burden. It fully explains: 'Name of the WAV file in the exports directory (without path), or absolute path to any WAV file.' This provides clear semantics 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 clearly states the tool's function: 'Detect musical key and mode of a WAV file using chroma features + Krumhansl-Schmuckler key profiles.' This is a specific verb+resource+method, distinguishing it from sibling tools like detect_bpm and analyze_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 gives a clear use case: 'Essential for Suno integration: detect key → build matching chord progression → create_harmonic_arrangement that fits the imported audio.' It also places it in a remix pipeline. However, it does not explicitly name alternatives or when-not-to-use, stopping 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.
mcp_opendaw_detect_problemsARead-only
Detect technical audio problems — clipping, DC offset, hum, sibilance, mud, harshness.
Scans for 7 common issues that ruin mixes:
Clipping: samples at or near 0 dBFS (digital clipping)
DC offset: non-zero mean (eats headroom, causes clicks on edit boundaries)
Hum: 50/60Hz mains interference (+ harmonics)
Sibilance: excessive 5-8kHz energy bursts (harsh 's' sounds)
Mud: excessive 200-400Hz buildup (cloudy, unclear mix)
Harshness: excessive 2-5kHz energy (fatiguing, piercing)
Resonances: narrow peaks that stick out (room modes, bad recordings)
filename: WAV file in exports dir, or absolute path.
Returns per-problem detection with severity + recommendation.
Example: detect_problems("vocal_stem.wav")
→ {problems: [{type: "dc_offset", severity: "HIGH", value: 0.002, ...}]}
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds input path expectations (WAV in exports dir or absolute path) and output structure (severity + recommendation), which are useful behavioral details beyond 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?
The description is front-loaded with a clear summary, and the detailed bullet list is substantive rather than redundant. It's somewhat long but each item adds useful information about the detected problems, and the example is helpful.
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 tool with an output schema, the description covers input format, output shape, and the problem categories. It could mention limitations such as file size or duration handling, but overall it is sufficiently complete for straightforward 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 provides no description for the single 'filename' parameter (0% coverage). The description compensates by defining what filename means ('WAV file in exports dir, or absolute path') and gives a concrete example call, making the parameter semantics clear.
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 tool detects technical audio problems and enumerates 7 specific issue types (clipping, DC offset, hum, sibilance, mud, harshness, resonances), giving a clear, specific verb+resource. This distinguishes it from sibling analysis tools like analyze_spectrum or measure_lufs, which focus on different aspects.
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 technical mix problems are suspected, but gives no explicit guidance on when to choose this over alternative analysis tools. There are no exclusion criteria or named alternatives, leaving the agent to infer the tool's appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_detect_scale_from_notesARead-only
Detect the musical scale/key from MIDI notes in a region.
Analyses the pitch class distribution of all notes in a region and matches it against 15 common scales using Pearson correlation. Unlike detect_key (which works on WAV audio), this works directly on MIDI note data — no audio file needed.
Scales tested (15):
major, natural_minor, harmonic_minor, melodic_minor
dorian, phrygian, lydian, mixolydian, locrian
pentatonic_major, pentatonic_minor, blues
hungarian_minor, double_harmonic, whole_tone
Returns:
best_match: {scale, root, correlation} — highest scoring scale
alternatives: top 5 matches with correlation scores
pitch_class_histogram: 12-bin histogram of note pitches
note_count: total notes analysed
chromatic_coverage: how many of 12 pitch classes are used
confidence: qualitative rating (high/medium/low based on correlation)
Use this before:
force_scale_notes (to know which scale to force)
diatonic_transpose_notes (to know the correct scale)
generate_melody (to match existing material's scale)
reharmonize_progression (to pick the right key)
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = first region, -2 = all regions on track).
Example: scale = detect_scale_from_notes(0, 0)
best_match: {scale: "natural_minor", root: "A", correlation: 0.87}
→ use force_scale_notes(root="A", scale="natural_minor")
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the analysis method (pitch class distribution, Pearson correlation, 15 scales) and discloses the full return structure including confidence rating. It adds substantial behavioral context beyond the readOnlyHint annotation, without contradicting it.
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 long but well-structured with clear sections: purpose, method, scale list, return fields, use-before list, parameter definitions, and a concrete example. Every section earns its place and the core statement 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?
The description covers the tool's full behavior: what input it needs, what analysis it performs, what it returns, how it relates to other tools, and a usage example. Given the tool's analytical complexity and the sparse schema, this description is complete and leaves no essential 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%, but the description provides meaningful explanations for all three parameters: unit_index (AU index), track_index (Note track index), and region_index with special values (-1 = first region, -2 = all regions). This fully compensates for the schema's lack of 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 opens with a specific verb+resource statement: 'Detect the musical scale/key from MIDI notes in a region.' It also explicitly distinguishes itself from the sibling tool detect_key, which works on WAV audio, making the tool's purpose and scope 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?
It directly contrasts with detect_key (audio vs MIDI) and provides an explicit 'Use this before' list naming force_scale_notes, diatonic_transpose_notes, generate_melody, and reharmonize_progression. This gives clear when-to-use guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_diatonic_transpose_notesA
Transpose notes by scale steps (diatonic) instead of semitones (chromatic).
Moves each note up or down by N steps within the specified scale. Unlike transpose_notes (which shifts by fixed semitones), diatonic transpose preserves the scale — C major C→D = +1 step (2 semitones), E→F = +1 step (1 semitone).
Essential for: creating variations that stay in key, modal interchange, sequence construction (moving a motif up the scale), walking bass from scale degrees, and counterpoint writing.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track). steps: Number of scale steps to transpose. +1 = up one step, -1 = down one step, +3 = up a third, -5 = down a fifth. 0 = no change. root_note: Root note of the scale — C, C#, D, D#, E, F, F#, G, G#, A, A#, B. scale: Scale name — major, minor, dorian, phrygian, lydian, mixolydian, pentatonic_major, pentatonic_minor, blues, harmonic_minor, melodic_minor.
Returns per-track note counts transposed.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | major | |
| steps | No | ||
| root_note | No | C | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains the transformation logic with examples (C major C→D = +1 step), states that it preserves the scale, and specifies the return value ('Returns per-track note counts transposed'). It does not explicitly mention in-place mutation or undoability, but the core behavior is clearly disclosed.
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 definition, then provides examples, use cases, and parameter details in a structured layout. Every sentence adds useful information without redundancy. The mild length is justified by the need to explain diatonic transposition and document all parameters outside 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 tool with 6 parameters and no annotations, the description covers purpose, differentiation, parameter semantics, and return value. The output schema exists, so the return-value note is a bonus; nothing critical 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 schema has zero property descriptions, yet the description covers all six parameters with defaults, examples, valid scale names, and step semantics (e.g., '+3 = up a third'). This fully compensates for the schema gap and adds meaning beyond raw types 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 first line clearly states 'Transpose notes by scale steps (diatonic) instead of semitones (chromatic)' and contrasts with the sibling transpose_notes, making the tool's unique function unambiguous. The verb 'transpose' plus the resource 'notes' and the specific method 'by scale steps' precisely identifies what it 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 explicitly contrasts with transpose_notes ('Unlike transpose_notes ... diatonic transpose preserves the scale') and lists concrete use cases: 'creating variations that stay in key, modal interchange, sequence construction ... walking bass from scale degrees, and counterpoint writing.' This tells an agent when to choose this tool over the chromatic counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_displace_rhythmA
Displace all notes in a region by a fixed rhythmic offset — laid-back, push, or circular rotation feel.
Rhythmic displacement shifts notes in time without changing their pitch or duration. This is one of the most expressive production techniques:
Laid-back (offset=0.0625 = 1/16 late): drums sit behind the beat, creating a relaxed, hip-hop/R&B feel (J Dilla, Questlove).
Pushed (offset=-0.0625 = 1/16 early): notes anticipate the beat, creating urgency and energy (rock, punk, certain jazz).
On-top (offset=0): reset any displacement back to original grid.
Two modes:
"shift" — add offset to every note's position. Notes can move past the region boundary (region duration auto-extends). Negative offset moves notes earlier; notes before position 0 are clamped to 0.
"circular" — rotate the pattern by offset. Notes that go past the region end wrap around to the beginning. This creates entirely new patterns from the same material — a 1/16 rotation of a straight 16th hi-hat pattern creates an off-beat pattern. The region length is preserved.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). offset: Displacement in beats. Positive = later (laid-back), negative = earlier (pushed). Common values: 0.0625 (1/16), 0.125 (1/8), 0.03125 (1/32), 0.25 (1/4). Range -4.0 to 4.0. mode: "shift" (add offset to position, region may extend) or "circular" (rotate within region bounds, region length preserved).
Returns per-track note counts and displacement stats.
Example:
J Dilla laid-back drums — 1/16 note late
displace_rhythm(unit_index=0, track_index=0, offset=0.0625, mode="shift")
Urgent pushed melody — 1/32 early
displace_rhythm(unit_index=0, track_index=3, offset=-0.03125, mode="shift")
Circular rotation — new pattern from same notes
displace_rhythm(unit_index=0, track_index=0, offset=0.125, mode="circular")
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | shift | |
| offset | No | ||
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to fall back on, the description fully discloses behavior: it explains that pitch/duration are unchanged, that the shift mode can extend region duration and clamps notes before position 0, and that circular mode wraps notes around while preserving region length. It also mentions the return value, providing a complete behavioral picture.
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 long but well-structured with a summary, bullet points, bolded key terms, and three complete examples. While every sentence earns its place, it could be trimmed slightly without losing value, making it appropriately detailed rather than maximally 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?
The description covers the tool's purpose, modes, parameter meanings, edge cases, return value, and practical examples. It is complete for a transformation tool with no annotations, and the presence of an output schema further reduces the need to document return structure in detail.
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 parameter names and defaults with zero descriptions, but the description gives detailed semantics for every parameter: unit_index, track_index, region_index with -1 wildcards, offset with range and common values, and mode explaining both options. This fully compensates for the schema's lack of 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 tool's function: 'Displace all notes in a region by a fixed rhythmic offset' — a specific verb and resource. It goes further to explain the two modes and the musical effect, distinguishing it from siblings like rotate_notes or shift_mode by emphasizing that pitch and duration are preserved and only timing is altered.
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 on when to use the tool: for laid-back, pushed, or on-top rhythmic feels, with examples for each. It does not explicitly name alternative tools or enumerate when not to use it, but the usage guidance is strong through the musical scenarios and mode explanations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_double_melodyA
Double a melody at a parallel interval — thickening and harmonization.
Creates a copy of every note in the region shifted by the specified interval. Unlike copy_notes_to_track (chromatic transpose only), this supports named musical intervals and diatonic transposition (stays in key).
Same-region doubling (dest_track_index=-1) thickens the melody in place. Cross-track doubling (dest_track_index set) creates a separate layer — useful for assigning a different instrument to the doubled line.
Intervals (chromatic mode):
octave: +12 semitones (classic doubling)
double_octave: +24 semitones (organ/pipe effect)
fifth: +7 semitones (power chord, open sound)
fourth: +5 semitones (suspended, ambiguous)
third: +4 semitones (major third — use diatonic for correct quality)
sixth: +9 semitones (wide, romantic)
unison: +0 semitones (thickening only, velocity difference)
Diatonic mode (diatonic=True): Uses scale-degree offsets instead of fixed semitones. A diatonic third in C major is +2 scale steps (C→E, D→F, E→G), producing the correct quality (major or minor third) depending on the scale degree. Requires root+scale.
velocity_scale: Doubled line velocity (0.8 = slightly quieter, classic). time_offset: Delay the doubled line (0 = parallel, 0.25 = slight delay).
unit_index: Source AU index. track_index: Source note track index. interval: Named interval (octave/double_octave/fifth/fourth/third/sixth/unison). region_index: Source region (-1 = first region). diatonic: If True, use scale-degree offset (requires root+scale). root: Scale root note (C, C#, D, ... B). scale: Scale name (major, minor, dorian, phrygian, etc.). velocity_scale: Velocity multiplier for doubled notes (0-2). dest_track_index: Destination track (-1 = same region, thickening in place). dest_unit_index: Destination AU (-1 = same as source). time_offset: Beat offset for doubled notes (0 = parallel).
Returns count of notes doubled.
Example:
Octave doubling — thickens melody in place
double_melody(0, 3, "octave", velocity_scale=0.7)
Diatonic thirds on separate track — classic harmony
double_melody(0, 3, "third", diatonic=True, root="C", scale="major", dest_track_index=4, velocity_scale=0.8)
Power-chord doubling
double_melody(0, 3, "fifth", velocity_scale=0.9)
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| diatonic | No | ||
| interval | No | octave | |
| unit_index | Yes | ||
| time_offset | No | ||
| track_index | Yes | ||
| region_index | No | ||
| velocity_scale | No | ||
| dest_unit_index | No | ||
| dest_track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the core behavior (creates shifted copy), explains diatonic mechanics, and notes the return value. However, it does not state whether original notes are preserved or mention error conditions, minor 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?
The description is front-loaded with a one-sentence summary, then uses structured bullets and a clear parameter list. It is long due to the tool's complexity, but each sentence earns its place; no 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 an 11-parameter no-annotation tool, the description covers usage, modes, parameter semantics, and return value. It includes two concrete examples. No missing critical info 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?
Schema has 0% description coverage. The description enumerates each parameter with meaning (interval values, diatonic mode, root/scale requirement, velocity_scale, time_offset, region/track selection). This fully compensates and adds 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: 'Double a melody at a parallel interval — thickening and harmonization.' It clearly distinguishes from sibling tool copy_notes_to_track by noting it supports named intervals and diatonic transposition.
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 contrasts with copy_notes_to_track ('chromatic transpose only'), and provides use-case guidance: same-region for thickening, cross-track for separate layer. Examples illustrate common scenarios (octave doubling, diatonic thirds, power chords).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_download_audioA
Download an audio file from a URL (e.g. Suno CDN) to local disk.
Bridges the gap between AI music generators (Suno, Udio) and the DAW: generate a track → get audio URL → download → import_audio_to_tracks. Without this, you need manual curl/wget outside the MCP pipeline.
Supports any HTTP(S) URL pointing to WAV/MP3/FLAC/OGG. Uses streaming download with timeout. Files saved to /tmp by default (or custom dir).
url: Direct URL to the audio file (e.g. Suno CDN audio_url from chirp_generate). filename: Output filename (default: derived from URL path). output_dir: Directory to save (default /tmp). Must exist.
Returns absolute file path, size, and suggested next step (import_audio_to_tracks).
Examples:
Download a Suno track
download_audio("https://cdn.suno.ai/abc123.wav")
Custom name
download_audio("https://cdn.suno.ai/abc123.mp3", filename="my_track.mp3")
Then import with stem splitting
import_audio_to_tracks("/tmp/my_track.mp3", mode="bs6")
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| filename | No | ||
| output_dir | No | /tmp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds meaningful behavioral details: 'Supports any HTTP(S) URL pointing to WAV/MP3/FLAC/OGG,' 'Uses streaming download with timeout,' 'Files saved to /tmp by default (or custom dir),' and 'output_dir... Must exist.' It also reveals the return shape ('absolute file path, size, and suggested next step'). It doesn't cover overwrite behavior or authentication edge cases, but for a download tool it is fairly 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 longer than minimal but well-structured: a purpose sentence, a workflow context paragraph, support/behavior notes, a bulleted parameter list, return value statement, and two examples. Every sentence adds information, but it could be tightened slightly. The structure makes it easy to scan, so it earns a 4 rather than a 3.
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 3 parameters, no annotations, and a present output schema, the description covers purpose, parameters, behavior, return value, and examples. It omits failure modes (e.g., overwrite policy, invalid URL handling) and network-specific concerns (rate limits, authentication), leaving some room for completeness. However, the output schema presumably defines return details, so this is a fully adequate description 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?
Schema description coverage is 0%, so the description must compensate fully. It does: each parameter is given meaning beyond the schema—'url: Direct URL... (e.g. Suno CDN audio_url from chirp_generate),' 'filename: Output filename (default: derived from URL path),' 'output_dir: Directory to save (default /tmp). Must exist.' This adds real semantic value over the bare schema titles.
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 begins with a specific verb+resource+destination: 'Download an audio file from a URL (e.g. Suno CDN) to local disk.' It clearly distinguishes from siblings by framing its role in a workflow: 'Bridges the gap between AI music generators (Suno, Udio) and the DAW: generate a track → get audio URL → download → import_audio_to_tracks.' This sets it apart from other audio tools that operate on already-local files.
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 usage context: 'Bridges the gap between AI music generators (Suno, Udio) and the DAW...' and an explicit alternative: 'Without this, you need manual curl/wget outside the MCP pipeline.' This tells when to use the tool and what alternative exists, which satisfies the dimension's requirement for explicit when/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_audiounitA
Duplicate an audio unit with all its content: instrument, effects, tracks, regions, notes, automation.
Creates a new audio unit of the same type (Instrument/Audio) with a copy of:
Instrument device (same factory type + all parameters)
Audio effect chain (same effects + all parameter values)
MIDI effect chain (same effects + all parameter values)
Note tracks, note regions, and all note events (pitch/duration/velocity/position)
Track volume, panning, mute state
Audio regions (if any, referencing same audio files)
Unit label, volume
unit_index: Source audio unit index to duplicate.
Returns the new unit index and details of what was copied.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that audio regions reference the same audio files (shared resources), and explicitly lists what gets copied (instrument, effects, tracks, regions, notes, automation). It also states it 'Creates a new audio unit', implying the original remains. However, it does not mention whether sends, bus assignments, or track ordering are included, nor any side effects like undo behavior, leaving some behavioral ambiguity.
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 well-structured with a front-loaded summary followed by a detailed bullet list of copied components. Every bullet adds distinct, useful information, and the parameter explanation is included inline. There is no filler or redundant content, making it appropriately sized for the complexity of the 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?
Given the complexity of duplicating an audio unit, the description is quite thorough, covering most major components and explicitly noting that audio files are shared references. However, it omits certain aspects that might be relevant (e.g., sends, bus routing, track order), making it not fully exhaustive. The presence of an output schema (though not shown) and the return statement help complete the picture.
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 only one parameter, unit_index, with no description. The tool description compensates completely by stating 'unit_index: Source audio unit index to duplicate.', giving clear semantic meaning. This fully covers the parameter despite 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 'Duplicate an audio unit with all its content' and enumerates the exact components (instrument, effects, tracks, regions, notes, automation). This specific verb+resource combination distinguishes it from sibling tools like duplicate_region or duplicate_notes, which target only subsets of content.
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 implicitly conveys when to use this tool: when you need a full audio unit duplication rather than a selective copy. It clearly scopes the operation to 'all its content' and lists what is copied, providing clear context. However, it does not explicitly mention alternatives or exclusion cases (e.g., 'use duplicate_region for single regions'), so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_automation_eventA
Duplicate an automation event within the same region.
Copies the event's position, value, and interpolation. Can offset position and override the value.
unit_index/track_index/region_index: Automation region coordinates. event_index: Event index within the region. position_offset: PPQN offset from original position. value_override: New value (0-1) instead of copying. Omit to copy original.
Returns the new event's position and value.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| event_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| value_override | No | ||
| position_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses key behavior: copies event's position, value, and interpolation, can offset position and override value, and returns the new event's position and value. It does not mention error conditions or edge cases, but for a duplication 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?
The description is concise and well-structured: a clear summary followed by a compact parameter breakdown. Every sentence provides valuable information without redundancy. It is appropriately sized for the tool's complexity.
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 operation's purpose, parameter semantics, and return value, making it quite complete for a duplication tool. It does not explicitly discuss prerequisites (e.g., existing event) or failure modes, but given the simplicity of the operation, this is a minor gap. The presence of an output schema is not seen, but the description mentions the return.
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 all 6 parameters explicitly: coordinate indices, event_index, position_offset in PPQN, and value_override with valid range and semantics. This is thorough and adds significant meaning beyond the bare schema titles.
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 operation ('Duplicate an automation event within the same region') with a specific verb and resource. It details what is copied (position, value, interpolation) and distinguishes it from related tools like move, update, or delete operations on automation events.
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 this tool: duplicating an automation event in the same region, with optional offsetting and value overriding. It does not explicitly name alternatives or exclusions, but the operation is self-explanatory given the sibling tool names and its own behavior description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_effectA
Duplicate a single effect within an AU's effect chain, copying all parameter values.
Addresses upstream issue #273 (Ctrl+D for audio effects) via MCP. Works for both audio and MIDI effect chains.
unit_index: AU index containing the effect. effect_index: Index of the effect to duplicate within its chain. chain_type: "audio" (default) or "midi" — which effect chain to operate on.
Returns the new effect's index and type.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_type | No | audio | |
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 core behavior (copying all parameter values, supports audio and MIDI chains) and the return value. However, it omits side effects such as whether the new effect is inserted immediately after the original, whether index shifting occurs, or if the original is left untouched (though 'duplicate' implies this). This is minimal but adequate.
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 main action in the first sentence, followed by a brief provenance note, parameter explanations, and return value. It is compact and well-ordered, though the issue #273 line is slightly tangential and could be omitted without loss of clarity.
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 3 parameters and an output schema, the description covers all necessary invocation details: each parameter is defined, the return type is mentioned, and the supported chain types are stated. It lacks minor behavioral details (e.g., index shifting), but overall it provides a complete picture for an agent 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?
The input schema has zero parameter description coverage, but the description explicitly explains all three parameters: unit_index, effect_index, and chain_type, including the default value 'audio' and allowed values. This fully compensates for the schema's lack of descriptions and adds context that is essential for correct invocation.
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: 'Duplicate a single effect within an AU's effect chain, copying all parameter values.' It clearly distinguishes this from siblings like duplicate_audiounit (whole unit) and clone_effect_chain (entire chain). The scope (single effect, both audio and MIDI chains) 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 notes it addresses upstream issue #273 (Ctrl+D for audio effects) and states it works for both audio and MIDI effect chains, giving useful context for when to invoke it. However, it does not explicitly mention any alternatives or when-not-to-use conditions, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_note_eventA
Duplicate a note event within the same region with optional position/pitch offset.
Copies the note's position, duration, pitch, velocity, cent, chance, playCount. Can transpose and shift the copy relative to the original.
unit_index/track_index/region_index: Region coordinates. note_index: Note index within the region. position_offset: PPQN offset from original position (default 0 = same position). pitch_offset: Semitone offset from original pitch (default 0 = same pitch).
Returns the new note's position, pitch, and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| note_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| pitch_offset | No | ||
| region_index | Yes | ||
| position_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavior. It specifies exactly which properties are copied (position, duration, pitch, velocity, cent, chance, playCount), describes transposition/shift options, and notes the returned values. This provides substantive behavioral detail, though it does not mention side effects like whether the original is modified or how collisions are handled.
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 efficiently structured: a one-line summary, a list of copied properties, parameter semantics, and the return value. Every sentence carries useful information with no redundancy, 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 the tool's moderate complexity, the description covers all required aspects: operation, target selection, offset behavior, and return value. The presence of an output schema means return value details are not strictly necessary, but they are included anyway. No 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%, but the description thoroughly compensates by explaining each parameter's meaning: unit/track/region indexes as coordinates, note_index, and the offset params including their units (PPQN, semitones). It also clarifies defaults, which adds value 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?
The description states a specific verb ('Duplicate'), a clear resource ('a note event'), and a scoping constraint ('within the same region'), with optional position/pitch offset. This clearly distinguishes it from sibling tools like 'duplicate_region' or 'duplicate_notes'.
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: it duplicates a single note event within the same region and explicitly lists the copied attributes and optional offsets. However, it does not explicitly name alternatives or state when not to use this tool, 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.
mcp_opendaw_duplicate_note_regionA
Duplicate a note region to a new position.
Copies the region and all its notes to offset_beats after the original. Useful for repeating patterns (e.g. duplicate 1-bar loop to bar 2).
unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region to duplicate (0-based). offset_beats: How far to shift the copy (in beats, e.g. 4.0 = next bar in 4/4).
Returns new region index.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| offset_beats | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and handles it well: it states that the operation copies the region and all its notes, implying non-destructive behavior, and explains the return value (new region index). It does not cover error cases or permissions, but for a duplicate action 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?
The description is well-organized: a one-line summary, followed by behavioral detail, use case, parameter list, and return value. Every sentence is informative, and it is neither too short nor too 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?
For a four-parameter tool with an output schema, the description covers purpose, behavior, parameters, and return value, meeting the minimum for correct invocation. It could explicitly note differences from similar tools (e.g., duplicate_region) and potential side effects, but the current content 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 description offers detailed explanations for all four parameters, including special values (unit_index=-1) and an example for offset_beats. Since the schema coverage is 0%, this fully compensates and provides beyond-schema 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 clearly states the tool's function with a specific verb ('Duplicate'), a resource ('note region'), and a behavior (copies region and notes to offset_beats). It differentiates from sibling tools like duplicate_region by emphasizing note region and new position, and the repeating-pattern example 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?
The 'Useful for repeating patterns' line provides a clear use case and example, giving contextual guidance. However, it does not explicitly exclude alternatives or mention when not to use it, though the note-region specificity implicitly narrows its scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_notesA
Duplicate all notes within a region, shifting them after the last note.
Creates copies of every note in the region, shifted by (max(position+duration) - min(position)). This mirrors the DAW's native "duplicate notes" feature.
unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region whose notes to duplicate (0-based).
Returns count of duplicated notes and shift in beats.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 exact shift calculation, notes that it creates copies, and states the return value. This is solid, though it could mention side effects on existing notes or whether the operation is reversible.
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: a one-line summary, then the algorithm, then parameter explanations, and finally the return note. 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?
For a 3-parameter tool with an output schema, the description adequately covers the operation, parameter meanings, and return values. It could include more detail about track_index base (e.g., whether it is 0-based), but overall 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?
Schema description coverage is 0%, but the description compensates by explaining each parameter: unit_index supports -1 for searching all AUs, and region_index is 0-based. This adds meaning beyond the bare integer 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 tool's action: 'Duplicate all notes within a region, shifting them after the last note.' It uses a specific verb (duplicate), identifies the resource (notes within a region), and explains the shift behavior. This differentiates it from siblings like duplicate_region and duplicate_note_event.
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 by stating it 'mirrors the DAW's native duplicate notes feature,' which implies when to use it. However, it does not explicitly mention alternatives or when not to use this tool, 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.
mcp_opendaw_duplicate_regionA
Duplicate any region (audio, note, or value) using the DAW's built-in duplicateRegion API.
Places the copy right after the original. With find_free_space=True, scans for the first available gap on any track (auto-resolves overlaps). Without it, places on the same track at the original's end position.
unit_index: Audio unit index (-1 = search all AUs). track_index: Track index within the AU. region_index: Region to duplicate (0-based). find_free_space: If True, find the first free space on any track. If False, place directly after the original on the same track.
Returns the new region's position and index.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| find_free_space | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key behaviors: copy is placed right after the original, find_free_space scans for first gap on any track, and it returns position and index. It does not mention undoability or error handling, but it provides meaningful behavioral context 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 well-structured with a clear opening, placement behavior, parameter list, and return value statement. It is slightly longer than necessary but every sentence adds value and the format is 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?
The tool has 4 required parameters, no annotations, and an output schema. The description explains the operation, parameter semantics, and return value. It lacks edge-case behavior (e.g., invalid indices, overlap prevention when find_free_space=False) but is sufficiently complete for a duplication operation.
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%, but the description explicitly explains all four parameters, including special values (unit_index=-1 means search all AUs), zero-based region_index, and exact behavior of find_free_space. This fully compensates 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 'Duplicate any region (audio, note, or value)' with a specific verb and resource, and the mention of 'using the DAW's built-in duplicateRegion API' adds specificity. It distinguishes itself from sibling tools like duplicate_note_region by covering all region 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?
The description explains the two placement modes (with and without find_free_space) and param semantics, giving clear context on execution. However, it does not explicitly mention when to use this tool versus alternatives such as duplicate_note_region or duplicate_audiounit, nor does it provide any exclusions or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_duplicate_sectionA
Duplicate all regions within a beat range to a new position.
Scans all tracks across all specified audio units, finds every region that overlaps the [from_beat, to_beat) range, and copies each one to target_beat with the same relative offset. This is the arrangement operation producers use constantly: "copy verse 1 to bar 17" or "duplicate this 8-bar section after itself".
Works with note regions, audio regions, and automation regions. Preserves all content (notes, audio, automation events).
from_beat: Start of the source section in beats. to_beat: End of the source section in beats (exclusive). target_beat: Where to place the duplicated section (beat 0 = start of project). unit_indices: Comma-separated AU indices to scan (default: all AUs).
Returns number of regions duplicated, per-track details, and new positions.
Examples: duplicate_section(from_beat=0, to_beat=16, target_beat=16) -> Copy first 4 bars (0-16 beats) to beat 16 (bars 5-8) duplicate_section(from_beat=0, to_beat=32, target_beat=32, unit_indices="0,1,2") -> Copy first 8 bars from AUs 0,1,2 to beat 32
| Name | Required | Description | Default |
|---|---|---|---|
| to_beat | Yes | ||
| from_beat | Yes | ||
| target_beat | Yes | ||
| unit_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and delivers: it explains overlap semantics, exclusive end beat, region types supported (note/audio/automation), content preservation, and return value. This goes well beyond a minimal description and fully discloses 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 well-structured: purpose first, then mechanics, parameter list, and examples. Every sentence adds value; no filler or repetition. The examples are concise and illustrate both basic and advanced usage.
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 (4 params, no annotations, output schema available), the description covers all essential aspects: what the operation does, which regions are affected, how parameters work, return value, and examples. It even clarifies the exclusive range semantics.
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 0% description coverage, but the description provides clear meanings for all four parameters (from_beat, to_beat, target_beat, unit_indices) with additional context like 'beat 0 = start of project' and default behavior for unit_indices. Examples further clarify parameter usage.
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 duplicates all regions within a beat range to a new position, with specific mechanics described (scans all tracks, finds overlapping regions, copies with relative offset). It distinguishes from siblings like duplicate_region by explicitly working on sections across all tracks and audio units.
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 context is provided with real-world use cases ('copy verse 1 to bar 17') and examples. It doesn't explicitly contrast with single-region duplication tools (e.g., duplicate_region), but the scope ('all regions within a beat range') and 'Scans all tracks' make the intended usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_engine_panicA
Send a panic signal to the engine — stops all notes immediately.
Useful when audio gets stuck (hanging notes, frozen synthesis). Equivalent to a MIDI panic button.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently states the effect: stops all notes immediately, and equates it to a MIDI panic button. It doesn't mention potential side effects on transport or engine state, but the core behavior is well disclosed.
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: three short sentences that front-load the purpose, then add context and equivalence. Every sentence earns its place with 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?
Given zero parameters, no annotations, and the presence of an output schema (which likely covers return values), the description is complete. It explains the action, when to use it, and the immediate effect, making it fully self-contained for a simple no-arg 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 tool has zero parameters and an empty schema, so the baseline for parameter semantics is 4. The description adds no parameter-specific info 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 clearly states the action: 'Send a panic signal to the engine — stops all notes immediately.' This uses a specific verb (send panic) and resource (engine), and distinguishes it from sibling tools like engine_sleep or transport, which have different purposes.
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 when to use: 'Useful when audio gets stuck (hanging notes, frozen synthesis).' While it doesn't name alternatives, the context is clear enough for this niche panic-button tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_engine_sleepA
Put the audio engine to sleep — suspends audio processing to save CPU.
Use wake() to resume. Useful when doing non-audio operations (project editing, box manipulation) and the engine isn't needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 action (suspends audio processing), the purpose (save CPU), and the reversibility (wake() to resume). It does not mention potential side effects on playback or idempotency, but covers the core behavior sufficiently.
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-loaded with the action and followed by usage guidance and resumption instruction. Every sentence adds value with no 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?
For a simple no-parameter tool with an output schema, the description fully covers the tool's purpose, when to use it, and how to reverse it. It gives an agent enough information to select and invoke the tool correctly without 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 input schema has zero properties, so there are no parameters to explain. The description correctly focuses on behavior and usage rather than parameter details, earning the baseline score of 4 for a zero-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 uses a specific verb phrase 'Put the audio engine to sleep' and identifies the resource ('audio engine') and the effect ('suspends audio processing to save CPU'). This clearly distinguishes it from sibling tools like engine_wake, engine_panic, and start_engine.
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 explicit usage context: 'Useful when doing non-audio operations (project editing, box manipulation) and the engine isn't needed.' It also names the complementary action with 'Use wake() to resume,' directing the agent to the correct sibling for the opposite operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_engine_wakeA
Wake the audio engine from sleep — resumes audio processing.
Use after sleep() when audio playback is needed again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It clearly indicates the state transition ('wake from sleep') and the consequence ('resumes audio processing'). It does not cover edge cases like behavior when already awake, but for a zero-parameter wake 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?
The description is two sentences with the primary action in the first sentence and the usage tip in the second. There is no filler or 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?
For a zero-parameter state-transition tool, the description covers the action, the result, and the usage trigger. An output schema exists, so return values do not need to be explained. The sibling context further confirms the pairing with engine_sleep.
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 0 parameters and schema description coverage is 100%, so the baseline is 4. The description correctly does not invent parameter details since there are none.
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 ('wake') and resource ('audio engine'), and further clarifies the result ('resumes audio processing'). This clearly distinguishes it from sibling engine tools like engine_sleep and start_engine.
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 the tool: 'Use after sleep() when audio playback is needed again.' This is clear contextual guidance, though it does not mention when not to use it or name alternatives beyond the implicit sleep() pairing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_evaluate_rawARead-only
Execute arbitrary JavaScript in the DAW V8 context and return the result. For power users and debugging — explore openDAW internals directly. The script must be a function body (will be wrapped in an async arrow).
script: JavaScript code to execute. Has access to window.DAW and all DAW_ globals.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Execute arbitrary JavaScript in the DAW V8 context,' which implies full access to potentially destructive operations, while the annotations declare readOnlyHint=true. This is a direct contradiction: the tool may not be read-only. The description does add useful context about script wrapping and access to globals, but the contradiction forces a score of 1 per the rules.
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 three sentences, front-loaded with the core purpose, followed by use-case context and a clearly labeled parameter explanation. Every sentence earns its place 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?
Given the tool's high complexity (arbitrary JS execution) and the presence of an output schema, the description adequately covers purpose, usage, script format, and available globals. It lacks explicit warnings about side effects or error handling, but the 'power users and debugging' framing partially covers the risk. The annotation contradiction is a separate issue, so this dimension remains at a 4.
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 a 'script' string with 0% description coverage, so the description must compensate. It does: it explains that the script must be a function body wrapped in an async arrow, and that it has access to window.DAW and DAW_ globals. This adds meaningful semantics beyond the raw schema, though it stops short of examples or edge cases.
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 and resource: 'Execute arbitrary JavaScript in the DAW V8 context and return the result.' It clearly distinguishes this tool from musical/DAW operation siblings by emphasizing arbitrary script execution. The intended use case (power users and debugging) further clarifies its 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 context for when to use the tool ('For power users and debugging — explore openDAW internals directly'), which implies it is for low-level inspections not covered by higher-level tools. However, it does not explicitly mention alternatives or exclusionary conditions, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_expand_intervalsA
Expand or compress melodic intervals by a factor.
Multiplies the interval between each consecutive pair of notes by
factor. Values >1 widen the melody (small steps become leaps),
values <1 narrow it (leaps become steps). The first note's pitch
is kept as anchor (or centered around the mean pitch).
This is a fundamental transformation in motivic development:
factor=2.0: seconds become thirds, thirds become fifths
factor=0.5: thirds become seconds, fifths become thirds
factor=1.5: gentle expansion, more expressive contour
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) factor: Interval multiplier (0.25-4.0). 1.0=no change, 2.0=double all intervals, 0.5=halve all intervals. anchor: Anchor point — "first" = keep first note pitch, expand from there, "center" = keep mean pitch, expand symmetrically, "last" = keep last note pitch, expand backwards. snap_to_scale: Scale name for snapping results ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "" = no snapping, chromatic result). root: Root note for scale snapping (C, C#, D, ... B).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| anchor | No | first | |
| factor | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| snap_to_scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains the transformation algorithm in detail (interval multiplication, anchor handling, snapping) and parameter constraints. However, it does not disclose side effects like undo behavior or whether notes are modified in-place, though the mutating nature is inherent.
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 well-structured: a one-line summary, a short explanation with examples, and a parameter breakdown. Despite its length, every sentence adds value, and the most critical 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?
For a complex transformation with 7 parameters, the description covers the core logic, anchoring, snapping, and concrete examples. It does not mention prerequisites (e.g., region must contain notes) or potential clipping/range limitations, but the output schema likely handles return value expectations.
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 fully compensates by explaining all 7 parameters, including defaults, constraints (factor 0.25-4.0), and the meaning of each anchor option and snapping scale. This goes well 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?
The description clearly states 'Expand or compress melodic intervals by a factor' — a specific verb and resource — and elaborates on the mechanism. It does not explicitly reference sibling tools for differentiation, but the unique interval-multiplication behavior makes it distinct.
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 in motivic development ('This is a fundamental transformation in motivic development') and provides factor examples, but it does not explicitly state when to choose this tool over alternatives such as invert_notes or double_melody, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_explode_chordsA
Explode chords into separate voice tracks.
Takes a chord track and splits each chord into individual voices, distributing them to separate tracks. The lowest note of each chord goes to voice 1 (bass), the next to voice 2, etc. This is the fundamental orchestration technique — converting a chord progression into individual instrumental parts.
Typical use: piano chord track → bass + cello + viola + violin. Or: synth chords → sub bass + pad + lead + pluck.
Args: unit_index: Source AU index with chord track track_index: Source note track index with chords region_index: Source region index (-1 = first region) num_voices: Number of voices to split into (2-8, default 4). Chords with fewer notes than num_voices get rests in higher voices. Chords with more notes than num_voices get extra notes merged into the highest voice. direction: Voice assignment order — "down": lowest note → voice 1 (bass), ascending voices "up": highest note → voice 1 (top), descending voices "outward": middle notes → outer voices, edge notes → inner target_units: Comma-separated AU indices for destination tracks. If empty, creates new AUs automatically. If provided, must have at least num_voices entries (e.g. "0,1,2,3"). velocity_balance: How to distribute velocity across voices — "natural": lower voices slightly louder (bass prominence) "equal": all voices same velocity "top_heavy": upper voices louder (melody prominence) "fade": velocity decreases from voice 1 to voice N
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | down | |
| num_voices | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| target_units | No | ||
| velocity_balance | No | natural |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the splitting algorithm, low-note-to-voice mapping, edge cases (chords with fewer/more notes), and per-parameter behavior for direction and velocity_balance. It does not explicitly state whether the original chord track is preserved or removed, a minor behavioral 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 long but serves the complexity of a 7-parameter tool. It is front-loaded with a clear purpose, followed by algorithmic explanation, typical uses, and a structured Args section. Every sentence adds value and the formatting is clear and 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?
Given the tool's complexity and the presence of an output schema (which presumably defines return values), the description is impressively complete. It covers purpose, algorithm, parameter semantics, edge cases, and examples, leaving no significant gaps for a tool of this nature.
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, but the description compensates by explaining every parameter in detail: unit_index, track_index, region_index, num_voices (with behavior for mismatched chord sizes), direction (with all enum meanings), target_units (with format and validation), and velocity_balance (with all enum meanings). This goes far 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 tool's purpose with a specific verb and resource: 'Explode chords into separate voice tracks.' It explains the algorithm and provides concrete examples (piano → bass + cello + viola + violin), distinguishing it from sibling tools like create_chorale or create_harmony.
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 frames when to use it: 'This is the fundamental orchestration technique — converting a chord progression into individual instrumental parts' and gives typical use cases. However, it does not mention alternatives or exclusions, 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.
mcp_opendaw_export_dawprojectA
Export the current project as a .dawproject file (Bitwig/Ableton/rePitch compatible format).
The dawproject format is a ZIP containing project.xml, metadata.xml, and audio samples. This enables interoperability with other DAWs that support the dawproject format.
Args: filename: Output filename (without extension). The .dawproject extension is added automatically.
Returns the file path of the exported .dawproject file.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | project |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency. It discloses that the format is a ZIP with specific contents, that the extension is automatically added, and that the file path is returned. This goes beyond the tool name but could be richer (e.g., overwrite behavior, non-destructive nature).
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 primary action. It uses three short paragraphs: purpose, format explanation, and args/returns. Every sentence adds relevant information with no waste.
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 optional parameter and an output schema. The description covers the purpose, file format details, parameter behavior, and return value. It is complete for an export tool of this 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 single parameter 'filename' is described with meaning beyond the schema: no extension should be provided, and '.dawproject' is appended automatically. Since schema description coverage is 0%, the description fully compensates for the one 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 tool exports the current project as a .dawproject file, naming specific compatible DAWs (Bitwig/Ableton/rePitch). This specific verb+resource+format distinguishes it from sibling export tools like export_midi, export_mix, and render_full.
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 this tool: when interoperability with other DAWs supporting dawproject is desired. It explains the format's purpose but does not explicitly name alternative tools or state when not to use it, so no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_dry_stemA
Export a single audio unit as a DRY stem (instrument output, no effects/channel strip).
Unlike export_single_stem (which routes through the channel strip with effects), this captures the raw instrument output before any audio effects, sends, or volume/pan processing. Useful for freezing, flattening, or re-amping workflows where you want the clean instrument signal to process externally.
unit_index: Audio unit index to export (must be > 0, not the output AU). filename: Output filename (without .wav extension). sample_rate: Export sample rate (default 48000).
Returns the path to the exported WAV and audio metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| unit_index | Yes | ||
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains what the tool captures (raw instrument output before effects, sends, volume/pan) and states the return value (path to WAV and audio metadata). It does not mention potential side effects like file overwriting or engine prerequisites, but for an export 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?
The description is well-structured with a concise summary, a clear contrast to the sibling tool, a bulleted parameter list, and a return value statement. Every sentence adds value and there is no 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 is complete for a tool with three simple parameters: it explains what the tool does, when to use it, parameter constraints, and return values. An output schema exists, so return details are adequately covered, and no further context is needed 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 input schema provides only titles and types, but the description adds crucial semantics for all three parameters: unit_index must be > 0 and not the output AU, filename is without .wav extension, and sample_rate defaults to 48000. This fully compensates for the 0% schema description 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 exports a single audio unit as a DRY stem, specifying it captures raw instrument output with no effects or channel strip. It explicitly distinguishes itself from export_single_stem, which routes through the channel strip, 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 explicitly contrasts this tool with export_single_stem, clarifying when to use each variant. It also provides concrete use cases (freezing, flattening, re-amping) and notes the constraint that unit_index must not be the output AU, giving clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_effect_chainA
Export an effect chain (audio or MIDI) from an AU as a base64 preset.
Uses PresetEncoder.encodeEffects — serializes the effect chain into a preset binary. Can be imported into another AU via import_effect_chain.
unit_index: AU index to export from. effect_type: "audio" for audio effects, "midi" for MIDI effects.
Returns base64 preset bytes, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_type | No | audio |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and compensates well: it discloses the internal serializer ('Uses PresetEncoder.encodeEffects'), the output format ('base64 preset bytes'), and error behavior ('or error'). It lacks explicit side-effect/permission information, but 'export' implies a read-only 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 well-structured and economical: a one-sentence purpose, a brief implementation note, parameter explanations, and return value. Every sentence adds value, with no redundant 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 two-parameter export tool, the description covers everything needed: what it does, how it works, parameter semantics, the complementary import tool, and the return format. The existence of an output schema further reduces the need to elaborate return structures.
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 types and a default, but the description explains both parameters in plain language: 'unit_index: AU index to export from' and 'effect_type: "audio" for audio effects, "midi" for MIDI effects.' This fully compensates for the 0% schema description 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: 'Export an effect chain (audio or MIDI) from an AU as a base64 preset.' This clearly states the tool's function and distinguishes it from sibling operations like import_effect_chain or get_effect_chain. The scope (audio or MIDI) is explicitly included.
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 by noting the exported preset 'Can be imported into another AU via import_effect_chain,' establishing the primary use case. It does not explicitly enumerate alternatives or when-not-to-use scenarios, but the purpose and related workflow are transparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_midiA
Export a note region's notes as a standard MIDI file (.mid).
Uses @opendaw/lib-midi MidiFileEncoder — converts note events to MIDI with timeDivision=96 (PPQN.Quarter=960 → 96 ticks per quarter).
filename: Output filename (without extension). unit_index: Audio unit index (-1 = search all AUs for note tracks). track_index: Note track index within the AU. region_index: Region to export (0-based).
Returns the saved file path.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 usefully mentions the underlying encoder, time division, and that a file is saved. However, it does not disclose edge-case behaviors such as whether an existing file is overwritten, what happens if the region is not found, or any error behavior. This is a moderate level of 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 front-loaded with the purpose, followed by a concise technical note, then a compact parameter list, and a one-line return-value note. Every sentence adds value and there is no padding, making it both informative and 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 tool with 4 required parameters, no annotations, and an output schema present, the description covers the essential operational context: what it exports, how parameters map to identifiers, and the return value. It does not discuss potential failure modes or file placement, but these are not critical for invoking the tool correctly. The description is complete enough for an agent to perform the task safely.
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 zero descriptions for its 4 parameters, but the description fully explains each one: filename (without extension), unit_index (-1 means search all AUs), track_index, and region_index (0-based). This directly compensates for the low schema coverage, giving the agent everything needed to provide valid 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 opens with a specific verb+resource statement: "Export a note region's notes as a standard MIDI file (.mid)." This clearly distinguishes the tool from siblings like import_midi (which imports instead) and export_mix (which exports audio formats). 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 provides clear context for when to use this tool: when exporting a note region to a MIDI file. It also gives details about how to identify the region (unit_index, track_index, region_index). However, it does not explicitly state when not to use it or mention alternatives like import_midi or export_mix, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_mixA
Render the full project mix to a WAV file.
Uses OfflineEngineRenderer (same as render_full). The 'method' parameter is accepted for backward compatibility but always uses offline rendering (faster, no engine needed).
filename: Output filename (without .wav extension). sample_rate: Export sample rate (default 48000). method: 'offline' (default), 'realtime', or 'auto' — all use offline.
Returns the path to the exported WAV and audio metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | offline | |
| filename | Yes | ||
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 all method values effectively use offline rendering, that filename should omit the .wav extension, and that it returns the path and audio metadata. This adds meaningful behavioral context beyond the schema, though it omits potential side effects (likely non-destructive for an export).
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 organized with a one-sentence summary, engine note, then a parameter list. It is slightly verbose but every sentence adds value. The 'same as render_full' phrase is useful context rather than 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 has an output schema, but the description still mentions the return type, which is helpful. It explains the method parameter's real behavior and defaults, and covers the key aspects for a straightforward export operation. Missing only explicit error conditions or prerequisites, but the description is sufficient for a simple 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's parameter explanations are essential. It clearly defines filename (without extension), sample_rate default, and the method parameter's accepted values and actual behavior (all use offline). This fully compensates for the missing schema 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?
The description clearly states 'Render the full project mix to a WAV file' – a specific verb and resource. It also references render_full for engine context, distinguishing it from other render/export tools. Name and description align well.
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 full-mix WAV export but does not explicitly state when to prefer this over render_full, export_stems, or other render tools. It mentions backward compatibility but provides no exclusions or alternatives, leaving the agent to guess based on partial context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_presetA
Export an audio unit as a preset (base64-encoded binary).
Uses PresetEncoder.encode — serializes the AU with all dependencies (instrument, effects, MIDI effects, optionally tracks/regions/notes) into a binary preset format. Output is base64-encoded for transport over JSON.
unit_index: AU index to export (must be an instrument, not Output). include_timeline: If true, include tracks/regions/notes in the preset.
Returns base64-encoded preset bytes and metadata, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| include_timeline | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 serialization includes all dependencies and that the output is base64-encoded, and mentions potential error return. However, it does not explicitly state whether this operation is non-destructive or if any permissions are needed. The term 'export' implies read-only, but the description could be more explicit about not modifying the 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 efficiently structured: a one-sentence purpose, a brief implementation note, then parameter explanations and return info. Every sentence contributes value; no filler or repetition. The first line is front-loaded with the core function, making it easy for an agent to quickly identify 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 that an output schema exists, the description appropriately summarizes the return value without going into detail. It covers the tool's scope, parameters, and constraints. The only gap is the lack of explicit differentiation from related tools like import_preset or export_effect_chain, but this is a minor omission given other strengths.
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%, but the description compensates fully by explaining both parameters. It states that unit_index is the AU index to export and must be an instrument, not Output, and that include_timeline controls whether tracks/regions/notes are included. This adds meaningful constraints and semantics beyond the bare schema fields.
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 clear verb+resource: 'Export an audio unit as a preset (base64-encoded binary).' It specifies the output format, the serialization approach with dependencies, and even clarifies that the unit must be an instrument. This clearly distinguishes it from sibling tools like export_midi or export_stems.
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: exporting an audio unit preset with optional timeline inclusion. It also gives a concrete constraint ('must be an instrument, not Output'), which helps the agent avoid invalid calls. However, it does not explicitly mention alternatives or when not to use it, so it lacks the full exclusions that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_single_stemA
Export a single audio unit as a stem WAV with its effect chain applied.
Unlike export_stems (which exports ALL stems in one pass), this exports just one AU — faster when you only need a specific stem.
unit_index: Audio unit index to export (must be > 0, not the output AU). filename: Output filename. sample_rate: Export sample rate.
The stem includes all effects on that AU's chain (EQ, compression, reverb, etc).
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| unit_index | Yes | ||
| sample_rate | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses that the effect chain is applied, requires unit_index > 0 and not the output AU, and notes it's faster than batch export. However, it does not mention whether the operation modifies the project, writes to disk, or requires the engine to be running, leaving some behavioral ambiguity for a safe deployment.
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: purpose, comparison, then parameter list. Every sentence adds value, with 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?
Given the moderate complexity and absence of annotations, the description covers core functionality, usage context, and parameter constraints. It could mention prerequisites like engine state or file path, but the presence of an output schema and clear export semantics make it 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 has no descriptions, but the description explains all three parameters. unit_index gets a critical constraint (>0, not the output AU), while filename and sample_rate are clarified as output filename and export sample rate. This compensates for the 0% schema coverage, though the last two are somewhat terse.
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 'Export a single audio unit as a stem WAV with its effect chain applied,' which gives a specific verb, resource, and output format. It also explicitly distinguishes from export_stems, making the purpose clear 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 provides explicit guidance: 'Unlike export_stems (which exports ALL stems in one pass), this exports just one AU — faster when you only need a specific stem.' This tells the agent exactly when to use this tool versus the alternative, satisfying the when and alternative requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_stemsA
Export each audio unit as a separate stem WAV file.
Uses OfflineEngineRenderer with per-AU ExportConfiguration. Each instrument AU gets its own stem with effects included. Returns list of exported stem files.
Workflow: create_instrument_track(s) → load_audio → place_audio_region(s) → add_effect(s) → export_stems
| Name | Required | Description | Default |
|---|---|---|---|
| sample_rate | Yes | ||
| filename_prefix | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that it uses OfflineEngineRenderer, includes effects, and returns a list of exported files. However, it does not mention side effects (e.g., file writes to disk, overwriting), prerequisites (e.g., engine running), or error conditions. This is neutral 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 concise and well-structured: it starts with the core purpose, adds technical detail (OfflineEngineRenderer), states the return type, and ends with a workflow. Every sentence contributes value without verbose 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 tool with an output schema and moderate complexity, the description provides the essential workflow and return type. It does not explain file location, sample rate semantics, or potential pitfalls, but the output schema likely covers return values. This is slightly below complete but adequate for most use 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?
Schema description coverage is 0%, so the description must compensate. The description only indirectly implies parameter use (filename_prefix, sample_rate) but does not explicitly explain their meaning or constraints. The parameter names are self-explanatory to some extent, but no additional semantics are provided, making this a weak spot.
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: 'Export each audio unit as a separate stem WAV file.' This is a specific verb+resource combination that distinguishes it from sibling tools like export_mix or export_single_stem. The mention of per-AU export and effects included further clarifies the unique 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 provides a clear workflow (create_instrument_track(s) → load_audio → place_audio_region(s) → add_effect(s) → export_stems), which gives the user context on when to use this tool. However, it does not explicitly mention alternatives or when NOT to use it, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_export_stems_formatB
Export stems as separate files and convert each to MP3 or FLAC.
filename_prefix: Prefix for stem filenames. sample_rate: Export sample rate. format: 'wav' (default), 'mp3', or 'flac'. bitrate: MP3 bitrate (default '320k').
Runs export_stems, then converts each stem WAV to the requested format via ffmpeg.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | wav | |
| bitrate | No | 320k | |
| sample_rate | Yes | ||
| filename_prefix | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavior disclosure. It explains the internal pipeline (export_stems then ffmpeg), which is useful, but omits important behavioral details such as potential file overwriting, the requirement for ffmpeg to be installed, and failure modes. This is partial 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 about 60 words and contains redundancy—the first sentence and the final sentence both describe the same conversion step. The structure is a bit disjointed, and the inconsistency about wav support could confuse. It earns a mid-range score for being clear but not polished.
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?
An output schema exists, so return values are covered, but the description misses important context such as when to use this tool versus the many export-like siblings (export_stems, export_mix, render_full_format), prerequisites like ffmpeg, and where output files are written. The tool's simplicity is balanced by the need for differentiation in a crowded toolset.
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 compensates by explaining each parameter, including allowed values for format and the default for bitrate. It adds meaning beyond the schema, though it could specify sample_rate units or valid bitrate patterns. For these simple parameters, the descriptions are sufficient.
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 (export stems and convert format) and lists the supported formats, distinguishing it from the plain export_stems sibling by mentioning conversion. However, the first sentence says 'MP3 or FLAC' while the schema lists 'wav' as default, creating minor ambiguity about the exact 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 discloses that this tool runs export_stems then converts via ffmpeg, implying it is a wrapper for format conversion. However, it never explicitly states when to choose this tool over alternatives like export_stems or export_mix, leaving usage context to be inferred rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_extract_motifsA
Extract repeating melodic motifs from a MIDI region.
A motif is a short melodic phrase (3-8 notes) identified by its interval contour — the pattern of pitch changes between consecutive notes. The same motif transposed to a different key still matches, because the relative intervals are identical.
Essential for: understanding melodic structure of existing pieces, finding repetitive patterns for variation, identifying verse/chorus motifs, and building call-and-response arrangements from existing material.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track). min_motif_length: Minimum notes in a motif (default 3). max_motif_length: Maximum notes in a motif (default 8). min_repetitions: Minimum times a motif must appear to be reported (default 2). max_results: Maximum motifs to return, sorted by significance (default 20).
Returns list of motifs with contour, rhythm pattern, contour type, and occurrence positions.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | No | ||
| max_results | No | ||
| track_index | No | ||
| region_index | No | ||
| min_repetitions | No | ||
| max_motif_length | No | ||
| min_motif_length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains key behavioral details: motifs are key-transposed equivalently identified by interval contour, results sorted by significance, and the return list contents. It implies a non-destructive analysis operation through 'Extract' and 'Returns list'.
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 main purpose, followed by a useful conceptual explanation, a concise use-case list, and a clear parameter listing. Every section adds value and the formatting makes 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 7-parameter tool with no annotations, the description covers the essential aspects: purpose, algorithm, parameter semantics, and return values. It does not discuss edge cases or error conditions, but the presence of an output schema and the straightforward nature of the extraction keep this from being a serious 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?
Schema description coverage is 0%, but the description lists all 7 parameters with clear meanings and defaults. It explains the -1 sentinel values for unit/track/region indices and specifies min/max motif length ranges. This fully compensates for the schema's lack of 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 opens with a specific verb and resource: 'Extract repeating melodic motifs from a MIDI region.' It clearly defines what a motif is (short melodic phrase identified by interval contour) and distinguishes itself from sibling tools like extract_rhythm or create_motif_variations by focusing on analysis and pattern discovery.
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 use-case guidance with 'Essential for: understanding melodic structure...', 'finding repetitive patterns for variation', etc. It does not explicitly mention when not to use or name alternative tools, but gives enough context to select it appropriately among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_extract_rhythmA
Extract rhythmic pattern from notes — onset grid, syncopation, IOI.
Returns a rhythmic analysis of notes in a region:
Onset grid: binary pattern showing which grid positions have note onsets
Inter-onset intervals (IOI): time between consecutive note starts
Syncopation score: how much the rhythm emphasises weak beats (0-1)
Rhythm density: fraction of grid positions with onsets
Rhythm string: compact representation (x=onset, .=rest)
Swing factor: ratio of odd vs even 16th positions
Grid resolutions:
"16th" — 16 positions per bar (default, most common)
"8th" — 8 positions per bar
"32nd" — 32 positions per bar (fine detail)
"quarter" — 4 positions per bar (coarse)
Useful for:
Understanding a rhythm before cloning it to another track
Measuring syncopation (high = funky, low = straight)
Extracting groove for groove_transfer
Comparing rhythms between sections
Feeding rhythm to generate_melody (rhythm param)
unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first region). grid: Grid resolution (16th/8th/32nd/quarter).
Returns rhythm analysis.
Example: rhythm = extract_rhythm(0, 0, grid="16th")
onset_grid, syncopation, ioi, rhythm_string
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | 16th | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 details output fields, grid resolutions, syncopation scale, and includes an example. It does not explicitly say whether the tool modifies notes, but the analysis-focused description strongly implies read-only 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 well-organized with a summary, bullet features, grid options, use cases, parameters, and an example. Though long, it is structured and front-loaded, with every sentence contributing 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 description fully covers the tool's behavior, including outputs, grid resolutions, parameter semantics, and an example. Given the output schema handles return values, this description is contextually complete for an analysis 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 schema has 0% description coverage, but the description compensates by explaining each parameter: unit_index, track_index, region_index with default behavior, and grid with all possible values. It elaborates on grid resolution options, providing meaningful context 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 it extracts rhythmic patterns from notes and lists specific outputs such as onset grid, syncopation, and IOI. The verb 'Extract' and resource 'rhythmic pattern from notes' are precise, distinguishing it from analysis and generation 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 'Useful for' section lists explicit scenarios like measuring syncopation, extracting groove for groove_transfer, and feeding rhythm to generate_melody. This provides clear usage context, though it does not explicitly state when not to use the tool or name alternatives for exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_filter_notesA
Filter notes by criteria — list, delete, or keep matching notes.
Applies multiple filter criteria to notes in a region:
Pitch range (min_pitch / max_pitch, MIDI note numbers)
Velocity range (min_velocity / max_velocity, 0.0-1.0)
Time range (from_beat / to_beat, absolute beat positions)
Any criterion set to -1 is ignored (wildcard).
Actions:
list: Return matching notes (read-only, no changes)
delete: Delete all notes matching the criteria
keep: Delete all notes NOT matching the criteria (inverse filter)
Use cases:
Remove notes below C2 (cleanup sub-bass rumble): filter_notes(0, 0, min_pitch=36, action="delete")
Isolate melody in upper register: filter_notes(0, 0, min_pitch=72, action="keep")
Remove ghost notes (velocity < 0.3): filter_notes(0, 0, min_velocity=0.3, action="delete")
Find notes in bar 8-12: filter_notes(0, 0, from_beat=32, to_beat=48, action="list")
Trim notes outside a time window: filter_notes(0, 0, from_beat=0, to_beat=16, action="keep")
unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first region). min_pitch: Minimum MIDI pitch (-1 = no filter). max_pitch: Maximum MIDI pitch (-1 = no filter). min_velocity: Minimum velocity 0-1 (-1 = no filter). max_velocity: Maximum velocity 0-1 (-1 = no filter). from_beat: Start beat (-1 = no filter). to_beat: End beat (-1 = no filter). action: "list", "delete", or "keep".
Returns matching note details (list) or deletion count (delete/keep).
Example:
Delete all notes below C2
filter_notes(0, 0, min_pitch=36, action="delete")
Keep only notes in bars 1-4 (beats 0-16)
filter_notes(0, 0, from_beat=0, to_beat=16, action="keep")
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| to_beat | No | ||
| from_beat | No | ||
| max_pitch | No | ||
| min_pitch | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| max_velocity | No | ||
| min_velocity | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: 'list' is read-only, 'delete' and 'keep' are destructive, the -1 wildcard behavior is explained, and return values are stated. It clearly tells the agent what changes will be made.
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?
Although lengthy, the description is well structured with sections for criteria, actions, use cases, parameters, and examples. Every section adds value, and the core purpose is front-loaded. No redundant or filler 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?
For a 10-parameter tool with no annotations, the description covers all necessary context: filter criteria, wildcard semantics, destructive vs read-only actions, return values, and musical use cases. The output schema exists and handles return details, so not explaining every field 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?
Schema description coverage is 0%, so the description compensates fully. Every parameter is explained with ranges, defaults, and the -1 wildcard convention. Multiple examples map parameter values to musical outcomes, making the semantics exceptionally clear.
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+resource ('Filter notes by criteria') and clearly distinguishes the three actions (list/delete/keep). It identifies the note-region scope, which separates it from sibling tools like delete_note or list_notes.
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?
Includes a 'Use cases' section with concrete musical examples and specifies that 'list' is read-only while delete/keep are destructive. It lacks an explicit comparison to alternative tools (e.g., when to use list_notes instead), but the guidance is strong and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_find_overlapping_notesA
Find notes that overlap a given pitch and time range within a note region.
Useful for checking if a note can be placed without colliding with existing notes, or for finding chords/harmonies at a specific pitch range.
unit_index: AU index. track_index: Note track index within the AU. region_index: Note region index. pitch: MIDI note number to check (60 = C4). from_beat: Start of time range in beats. to_beat: End of time range in beats.
Returns list of overlapping notes (position, duration, pitch, velocity), or error.
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | Yes | ||
| to_beat | Yes | ||
| from_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 return format (list of overlapping notes or error) and scopes the operation to a note region, but does not explicitly state that it is read-only or describe any side effects. This is adequate but not rich; a read-only hint would have been helpful.
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-organized: a one-sentence purpose, a use-case note, then a flat parameter definition list, and a return statement. Every sentence adds value; 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?
The description fully explains the tool's inputs, purpose, and output, and the presence of an output schema covers return structure. It lacks explicit edge-case handling (e.g., empty results, invalid beat ranges), but overall it is complete enough 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 compensate. It defines all six parameters thoroughly, including types (MIDI note, beats) and examples (60 = C4), giving the agent complete understanding beyond the bare schema. This is exemplary 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 uses a specific verb (Find) and clearly defines the resource: notes overlapping a pitch and time range within a note region. It distinguishes itself from sibling tools by focusing on collision detection and chord/harmony finding, which is unique among the many note 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 states two use cases: checking if a note can be placed without collision and finding chords/harmonies at a pitch range. It does not mention when not to use it or name alternatives, but the provided context is clear enough for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_flatten_note_regionsA
Flatten (merge) multiple overlapping note regions into a single region.
Merges selected note regions on the same track into one, combining all notes. The original regions are deleted and replaced by a single flattened region.
unit_index: AU index. track_index: Track index within the AU. region_indices: Comma-separated region indices to flatten (e.g. "0,1,2").
Returns the new flattened region info, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_indices | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key destructive behavior: 'The original regions are deleted and replaced by a single flattened region.' This goes beyond the schema and annotations (which are absent). It also states the return value ('Returns the new flattened region info, or error'), which sets expectations. It doesn't mention undo/reversibility or edge cases, but the core behavioral trait is 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 compact at roughly 70 words, with a clear breakdown of purpose, behavior, and parameters. There is a slight redundancy between the first sentence and the second paragraph ('Flatten...into a single region' vs. 'Merges...into one'), which loses a point. Otherwise, each section 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 complexity of a destructive merge operation, the description covers the transformation, the side effect of deleting originals, the required parameters, and the return value. Since an output schema exists, it doesn't need to detail the return structure. It could mention the 'overlapping' precondition more prominently, but overall it is sufficient 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?
Schema description coverage is 0%, but the description compensates by defining each parameter: 'unit_index: AU index,' 'track_index: Track index within the AU,' and 'region_indices: Comma-separated region indices to flatten (e.g. "0,1,2").' This provides meaningful semantics and an example for the trickiest parameter. All three required parameters are explicitly explained.
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 'Flatten (merge) multiple overlapping note regions into a single region,' which is a specific verb+resource action. It further clarifies behavior by noting original regions are deleted and replaced. It doesn't explicitly distinguish from the sibling 'mcp_opendaw_merge_note_regions,' but the term 'flatten' and the detail about overlapping regions provide a clear 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 clearly states this is for merging selected note regions on the same track, which tells an agent when to invoke it. It gives no explicit when-not-to-use or alternatives, but the context is unambiguous for a merge operation. The parameter list reinforces the required inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_force_scale_notesA
Force all notes in a region into a specific scale — harmonic snap.
Finds every note that is NOT in the target scale and moves it to the nearest in-scale note. This is the harmonic equivalent of quantize_notes (which snaps timing to a grid). Useful after audio-to-MIDI transcription, random generation, or importing MIDI from unknown sources.
root_note: Root note name — C, C#, D, D#, E, F, F#, G, G#, A, A#, B. scale: Scale name — major, minor, dorian, phrygian, lydian, mixolydian, aeolian, locrian, pentatonic_major, pentatonic_minor, blues, harmonic_minor, melodic_minor. direction: How to resolve out-of-scale notes — "nearest" (closest, default), "up" (always shift up to next in-scale note), "down" (always shift down). preserve_octave: If True (default), keep notes in their original octave — only shift by 1-2 semitones. If False, allow octave jumps to find the nearest match.
Returns count of notes snapped, per-track breakdown, and which notes were changed.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | major | |
| direction | No | nearest | |
| root_note | No | C | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No | ||
| preserve_octave | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and handles it well: it explains the algorithm (moves every note not in scale to the nearest in-scale note), describes the effects of direction and preserve_octave, and states the return payload (count, per-track breakdown, changed notes). It does not explicitly mention irreversibility or how the target region is selected, 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 well-structured with a one-line summary, a rationale/use-case paragraph, a parameter breakdown, and a return-value note. It is slightly longer than necessary due to enumerating all scales and root notes, but that information is directly useful and not wasted. Overall it is efficient for a tool with seven parameters.
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 operation, use cases, key parameters, and return value. However, it omits how the target region is identified (defaults of unit/track/region indices are not explained) and does not mention potential side effects or whether the operation is undoable. Given no annotations and no schema descriptions, this gap is notable but the description is still largely usable.
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 provides detailed semantics for four of seven parameters: root_note (with full note list), scale (with full scale list), direction (with values and meanings), and preserve_octave (behavior for true/false). However, unit_index, track_index, and region_index are completely undocumented, and schema descriptions are absent (0% coverage). This leaves a significant gap for selecting which region to operate on.
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 ('force'/'moves') and resource ('all notes in a region') with a clear goal: snap notes into a target scale. It further distinguishes itself from the sibling quantize_notes by calling itself the 'harmonic equivalent', making its purpose unambiguous even among many 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 explicitly names when to use the tool ('after audio-to-MIDI transcription, random generation, or importing MIDI from unknown sources') and contrasts it with quantize_notes to clarify the harmonic-vs-timing distinction. It does not list exclusions or alternative tools beyond quantize_notes, so it falls just short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_freeze_audiounitA
Freeze an audio unit — pre-render its output offline to save CPU.
Uses audioUnitFreeze.freeze() which renders the AU's complete output via OfflineEngineRenderer and caches it. While frozen, the AU plays from cache instead of processing instruments/effects in real-time.
Cannot freeze AUs with sidechain dependents or the Output unit.
unit_index: AU index to freeze.
Returns success or error (e.g. sidechain dependents block freeze).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 offline rendering mechanism, the caching behavior, and the fact that frozen AUs play from cache instead of real-time processing. It also mentions potential errors (sidechain dependents block freeze). This goes beyond a generic 'freeze' and explains real-world 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 organized into a summary, implementation details, a constraint, a parameter note, and a return note. It is about 80 words and contains no filler. The internal API reference (audioUnitFreeze.freeze()) is slightly extra but adds credibility without bloating the 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?
For a single-parameter tool with an output schema, the description covers purpose, mechanism, constraints, parameter meaning, and possible return. It does not mention related operations (unfreeze, freeze status) or performance implications (long render time), but these are available as sibling tools. Overall, it is nearly complete for a focused freeze operation.
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 is unit_index, and the schema description coverage is 0%. The description adds 'AU index to freeze,' which clarifies what the index refers to, but does not explain how to discover the AU index (e.g., via list_effects or get_effect_chain) or whether it is zero-based. This is minimal compensation for the schema 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 opens with a specific verb+resource: 'Freeze an audio unit — pre-render its output offline to save CPU.' This clearly distinguishes it from siblings like unfreeze_audiounit and get_unit_freeze_status, and explains the primary benefit.
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 states a clear use case (save CPU by pre-rendering) and gives an explicit exclusion: 'Cannot freeze AUs with sidechain dependents or the Output unit.' It doesn't explicitly point to alternative tools for unfreezing or status checks, but the context is sufficient for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_generate_melodyA
Generate a melodic line from a scale using contour-guided random selection.
Creates a melody from scratch — no chord progression needed. The algorithm picks pitches from the specified scale, guided by a contour shape that controls the overall direction of the melodic line.
contour: Melodic shape:
"ascending" — starts low, rises throughout (build-up, tension)
"descending" — starts high, falls throughout (release, resolution)
"arch" — rises then falls (classic A-section, question-answer)
"v_shape" — falls then rises (dramatic, bridge)
"wave" — oscillates up and down (meandering, B-section)
"random" — no contour constraint, pure weighted random
rhythm: Rhythm pattern:
"quarter" — all quarter notes (steady, folk)
"eighth" — all eighth notes (driving, pop)
"syncopated" — mix of quarters and off-beat eighths (jazz, funk)
"mixed" — varied durations (16th to half, most musical)
"sparse" — mostly rests with occasional notes (ambient, intro)
The algorithm:
Build a scale pitch list spanning 2 octaves centered on
octave.For each beat position, determine the target contour height (0-1 mapping across the melody length).
Map contour height to a pitch range in the scale.
Weighted random selection: notes near the contour target get higher weight, notes far away get lower weight.
Apply rhythm pattern to determine note durations and positions.
Insert rests based on rest_probability.
root: Root note name (C, D, E, F, G, A, B + accidentals). scale: Scale name (major, minor, dorian, phrygian, lydian, mixolydian, aeolian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues). bars: Number of bars (1-16, default 4). contour: Melodic contour shape (see above). rhythm: Rhythm pattern (see above). octave: Center MIDI octave (3=bass, 4=mid, 5=lead, 6=high, default 5). velocity: Base velocity 0-1 (default 0.7). rest_probability: Chance of a rest instead of a note (0-0.5, default 0.15). unit_index: AU index with note tracks. track_index: Note track index for the melody. start_beat: Position in beats.
Returns notes created, contour shape, scale used, pitch range.
Example:
Arch-shaped C major melody, 4 bars, mixed rhythm
generate_melody(root="C", scale="major", bars=4, contour="arch")
Ascending pentatonic build-up
generate_melody(root="A", scale="pentatonic_minor", bars=4, contour="ascending", rhythm="eighth")
Sparse ambient intro
generate_melody(root="D", scale="dorian", bars=8, contour="wave", rhythm="sparse", rest_probability=0.4)
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| root | No | C | |
| scale | No | major | |
| octave | No | ||
| rhythm | No | mixed | |
| contour | No | arch | |
| velocity | No | ||
| start_beat | No | ||
| unit_index | No | ||
| track_index | No | ||
| rest_probability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 step-by-step algorithm (scale building, contour mapping, weighted random selection, rhythm application, rest insertion) and return values. However, it does not state whether existing notes on the target track are replaced or appended, an important side-effect for a generation 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 long but well-structured: summary, detailed option lists, numbered algorithm steps, parameter list, return value, and examples. Every sentence adds value, and the organization makes 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?
Given 11 parameters, no schema descriptions, and complex algorithm, the description is remarkably complete: covers all parameters, algorithm behavior, musical intent of each option, and return values. Minor gaps like track content replacement are noted but do not undermine overall completeness.
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%, but the description thoroughly documents every parameter, including enumerated options for contour, rhythm, scale, and numeric ranges/defaults for bars, velocity, octave, and rest_probability. This fully compensates for the schema's lack of 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 tool generates a melodic line from a scale using contour-guided random selection. It explicitly says 'Creates a melody from scratch — no chord progression needed', distinguishing it from sibling tools like create_melody_from_progression.
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 strong context for usage: 'no chord progression needed' and examples for different musical scenarios (arch-shaped C major, ascending pentatonic, sparse ambient). However, it does not explicitly name alternative tools or give when-not-to-use guidance, 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.
mcp_opendaw_get_audio_file_infoARead-only
Get metadata about the audio file referenced by an audio region.
Returns file name, start/end time in seconds, and sample loading state. Useful for inspecting audio regions before processing.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index.
Returns audio file info, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by listing specific return fields (file name, start/end time, sample loading state) and explicitly noting that it returns an error on failure. It does not contradict annotations and appropriately conveys a side-effect-free inspection 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 adequately sized but contains redundancy: 'Returns file name, start/end time in seconds...' is followed by 'Returns audio file info, or error.' The parameter lines are clean and front-loaded, but the repeated 'Returns' wastes a sentence. Overall structure is acceptable but not tight.
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 tool's purpose, input parameters, and return value summary. An output schema exists, so detailed return structure is not required. It is sufficient for a simple read-only lookup, though it lacks explicit guidance on how to obtain the indices (e.g., via list_tracks), which is minor.
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?
With 0% schema description coverage, the descriptions for unit_index, track_index, and region_index are essential and clearly explain the hierarchical addressing (AU / track / region). They provide enough meaning beyond the property names to guide correct usage, though they are 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 function: 'Get metadata about the audio file referenced by an audio region.' It uses a specific verb ('Get') and resource ('audio file metadata'), and distinguishes it from sibling tools like get_region_info or get_sample_info by focusing on the audio file behind an audio region. The returned data (file name, times, sample loading state) 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?
The line 'Useful for inspecting audio regions before processing' gives clear context for when to invoke this tool. It does not explicitly mention alternatives or exclusions, but the read-only intent is implied by the readOnlyHint annotation and the 'before processing' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_automation_valueARead-only
Get the automation value at a specific position on a value (automation) track.
Resolves the automation curve value at the given position, accounting for interpolation, region loops, and multiple overlapping regions.
unit_index: AU index. track_index: Value (automation) track index within the AU. position_beats: Position in beats (float).
Returns the normalized value (0.0-1.0), or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already flags this as read-only. The description adds valuable behavioral context beyond this: it resolves the curve value accounting for interpolation and region loops, returns a normalized 0.0-1.0 value, and may return an error. This is meaningful supplemental transparency, though it could be slightly more specific about error conditions or edge cases (e.g., no automation at position).
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: a one-sentence purpose, a short behavioral note, a parameter list, and a return statement. Every sentence contributes useful information, and the most important content is front-loaded. No fluff or repetition that detracts.
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 (interpolation, loops, overlapping regions, normalized output), the description covers the core behavior and return contract. It lists all parameters and notes the possible error. It does not explain the meaning of 'AU' or elaborate on error specifics, but for a read-only getter with an output schema, this is adequately 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 has 0% description coverage, so the description must compensate. It does so by naming each parameter and providing a brief semantic role: 'unit_index: AU index', 'track_index: Value (automation) track index within the AU', 'position_beats: Position in beats (float).' This adds meaning beyond the raw schema, though it is brief and assumes domain knowledge of 'AU'.
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 clear, specific statement: 'Get the automation value at a specific position on a value (automation) track.' It uses a distinct verb ('Get') and resource, and the elaboration about resolving curves with interpolation, loops, and overlapping regions distinguishes it clearly from siblings like list_automation_events or set_automation_interpolation.
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 implies when to use the tool: when you need the resolved automation value at a point rather than event data. It provides context about how the resolution works (interpolation, loops, overlapping regions), but does not explicitly name alternatives or state when not to use it. This is a clear context with no exclusions, matching a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_bar_intervalARead-only
Get the start and end PPQN of the bar containing the given position.
Useful for snapping regions, clips, and events to bar boundaries.
position_ppqn: Position in PPQN.
Returns bar_start (ppqn), bar_end (ppqn), bar_length (ppqn), and time signature.
| Name | Required | Description | Default |
|---|---|---|---|
| position_ppqn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that this is a safe read operation. The description adds valuable behavioral context by specifying the return values (bar_start, bar_end, bar_length, time signature) and clarifying the PPQN unit. No contradiction with annotations exists.
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 exactly four short, focused sentences: purpose, use case, parameter, and output. It is front-loaded with the most critical information and contains zero redundant content.
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 getter tool with one parameter and an output schema, this description covers all necessary aspects: what it does, when to use it, what input it expects, and what it returns. The readOnly annotation and output schema complete the picture, making it sufficient for an agent to select and 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?
Schema description coverage is 0%, so the description compensates by defining 'position_ppqn: Position in PPQN.' This adds the crucial unit and clarifies the parameter's role, though it could go further with range details or examples. The single parameter is adequately explained.
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 ('Get') and resource ('start and end PPQN of the bar containing the given position'), clearly distinguishing it from siblings like ppqn_to_seconds or get_tempo_at. The purpose is unambiguous and names the exact output.
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 second sentence provides a clear use case: 'Useful for snapping regions, clips, and events to bar boundaries.' This gives the agent context for when to invoke this tool, though it does not explicitly mention alternatives or exclusions, so it falls one point 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.
mcp_opendaw_get_device_chain_detailARead-only
Get detailed info about all devices on an AU — instrument, audio effects, MIDI effects.
One call to inspect the full device chain: instrument name/type, all effects with labels, enabled state, minimized state, and parameter counts.
unit_index: AU index.
Returns instrument info, audio_effect array, midi_effect array.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, which already signals a safe read operation. The description adds context about what data is returned (instrument info, audio_effect array, midi_effect array) and mentions parameter counts. However, it does not disclose details like whether the AU must exist, error behaviors, or performance implications. Still, it adds some value beyond 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?
The description is compact and well-structured, with a brief overview, a clear statement of what one call does, a parameter line, and a list of return sections. Every sentence adds information without 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 there is an output schema (not shown in detail) and the tool is simple (one param, no nested objects), the description is sufficient. It explains the input and the high-level return structure. It could mention whether the response includes names of effects or just counts, but the output schema likely covers that, and the return arrays are stated.
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 explicitly explains the sole parameter 'unit_index: AU index.' Although the schema already includes the parameter name and type, the description adds the semantic meaning (AU index) which is missing from the schema. With 0% schema description coverage, this is crucial and compensates well.
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 verb ('Get detailed info') and resource ('all devices on an AU — instrument, audio effects, MIDI effects'). It specifies what is returned (instrument name/type, effects labels, enabled state, minimized state, parameter counts) and includes a parameter description. This distinguishes it from sibling tools like list_effects or get_effect_chain by focusing on the full device chain detail.
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 inspecting a complete device chain on a given AU, but it doesn't explicitly state when to use this vs alternatives like get_effect_chain, list_effects, or list_midi_effects. There is minimal context about use cases (e.g., 'One call to inspect the full device chain'), but no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_effect_chainBRead-only
Get the full effect chain for an audio unit.
unit_index: Audio unit index.
Returns ordered list of effects with their type, enabled state, and index.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a read-only operation. The description adds that it returns an 'ordered list of effects with their type, enabled state, and index,' which gives some behavioral detail beyond the annotation. However, it does not address error cases or invalid indices, so it is modest.
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 three short sentences covering purpose, parameter, and return value. It is front-loaded with the main action and contains no unnecessary 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?
For a simple read-only getter with one integer parameter, the description covers the essential purpose, parameter meaning, and return contents. An output schema exists, so the return structure is formally defined. It does not cover edge cases, but that is likely acceptable given the tool's simplicity.
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 one parameter, unit_index, with only a title 'Unit Index' and no description. The tool description adds 'unit_index: Audio unit index,' which provides minimal clarification that it is the index of the audio unit. However, it is largely redundant with the schema and does not specify indexing base or 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 'Get the full effect chain for an audio unit' with a specific verb and resource, and elaborates on the return value ('ordered list of effects with their type, enabled state, and index'). It is not a tautology, but it does not explicitly distinguish from sibling tools like list_effects or get_effect_state, so it is clear but lacks explicit 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?
No guidance is provided on when to use this tool versus alternatives. There are no exclusions, prerequisites, or mentions of sibling tools. The intended usage is only implied by the tool name and description, which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_effect_stateARead-only
Get full state of an effect: enabled, minimized, sidechain, all parameters.
More detailed than list_effect_parameters — includes enabled/bypass state, minimized state, sidechain connection, and full parameter dump.
unit_index: Audio unit index. effect_index: Effect position in the chain (0-based).
Returns complete effect state snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces this by using 'Get full state' and 'Returns complete effect state snapshot.' It adds behavioral context by listing exactly what is included (enabled/bypass, minimized, sidechain, parameters) and the semantics of the two indexes, going beyond the annotation's minimal safety hint.
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 a clear lead sentence, a comparative note, parameter explanations, and a closing return statement. It is well-structured and avoids unnecessary elaboration, though the final 'Returns complete effect state snapshot' largely restates the opening 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 read-only tool with two integer parameters and an output schema, the description covers all necessary context: purpose, tool differentiation, parameter semantics, and return content. Since an output schema exists, the description need not detail return values further, making this a complete package.
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, and it does by explaining unit_index as 'Audio unit index' and effect_index as 'Effect position in the chain (0-based).' This adds meaningful clarification for both parameters, especially the 0-based positioning detail, which is not evident from the schema titles 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 retrieves the full state of an effect, enumerating the included fields (enabled, minimized, sidechain, parameters). It explicitly distinguishes itself from the sibling list_effect_parameters by being more detailed, making the 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 provides a clear comparison with list_effect_parameters, noting this tool is 'more detailed' and includes bypass state, minimized state, sidechain, and a full parameter dump. It implies when this tool is preferred over its lighter sibling, though it does not explicitly state a conditional when-not scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_engine_statusARead-only
Get real-time engine status: playing state, position, BPM, CPU load, recording state.
Returns: is_playing: bool position_beats: current playback position in beats bpm: current BPM cpu_load: CPU load percentage (0-1) is_recording: bool is_counting_in: bool count_in_beats_remaining: beats left in count-in playback_timestamp: playback timestamp in beats marker: current marker [uuid, index] or null engine_started: whether engine is initialized
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to restate that. It adds a useful enumeration of return fields, but no additional behavioral traits such as whether the engine must be running, potential latency, or error conditions. This 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 concise and well-structured: a single-sentence summary followed by a clean list of return fields. Every line adds 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 low-complexity read-only getter with no parameters and an output schema, the description covers the essential purpose and return values. It lacks explicit usage context or caveats, but given the simplicity, the completeness is sufficient though not exceptional.
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 description coverage is 100%. Per rubric, a no-parameter tool receives a baseline of 4 since there is nothing to document.
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 ('Get') and resource ('real-time engine status'), and clearly enumerates key fields (playing state, position, BPM, CPU load). This distinguishes it from sibling tools like get_project_state or get_mixer_state, which cover different scopes.
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 on when to use this tool versus alternatives such as get_project_state or get_mixer_state. The read-only nature is implied by 'Get', but there are no stated exclusions, prerequisites, or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_full_project_stateARead-only
Get a complete snapshot of the project — all AUs, tracks, regions, effects, mixer state.
One call to inspect the entire project structure. Useful for agents to understand the current state before making changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description only needs to add context. It adds that the tool returns a complete snapshot in one call, enumerating the included data categories. This is a useful disclosure of scope without contradicting 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?
The description is two sentences: the first states the function and contents; the second adds the usage context. Every word contributes to understanding the tool, with 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?
Given the tool's simplicity (no parameters, read-only annotation, output schema present), the description is sufficient. A brief note about the potential size of the response or comparison to mcp_opendaw_get_project_state could enhance completeness, but it's not necessary.
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 covers everything. The description's mention of the snapshot scope (AUs, tracks, regions, effects, mixer state) indirectly explains what the single call returns, but no parameter details are needed 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 uses a specific verb ('Get') and a clearly defined resource ('complete snapshot of the project') with enumerated components (AUs, tracks, regions, effects, mixer state). However, it does not explicitly distinguish itself from the sibling tool mcp_opendaw_get_project_state, relying on the word 'full' to imply 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?
Explicitly states the ideal context: 'Useful for agents to understand the current state before making changes.' This provides clear guidance on when to use the tool, though it does not mention alternatives or 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.
mcp_opendaw_get_midi_effect_chainARead-only
Get the MIDI effect chain for an audio unit.
unit_index: Audio unit index. Returns ordered list of MIDI effects with type, enabled state, and index.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a non-mutating operation. The description adds value by disclosing the return format ('ordered list of MIDI effects with type, enabled state, and index'), which is not covered by the annotation. No contradictions; additional behavioral details like error cases are absent but not critical for a simple 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 compact: two sentences for the main action and return, plus one line for the parameter. It is front-loaded with the core purpose and contains 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?
Given the simple read-only nature, one parameter, and existing readOnlyHint annotation, the description covers the necessary behavior and return structure. It doesn't mention edge cases (e.g., invalid unit_index), but the output schema (present but not shown) likely covers return details. Overall, this is sufficiently complete for a tool of this 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 schema only defines unit_index as an integer with no description. The description supplies the meaning: 'Audio unit index.' This compensates for the 0% schema description coverage. It could be more detailed (e.g., how to obtain the index), but for a single-parameter read-only tool, it is adequate.
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 'Get the MIDI effect chain for an audio unit' with a clear verb and resource. It further specifies the return content (ordered list with type, enabled state, index), distinguishing it from sibling tools like get_effect_chain (audio effects) and list_midi_effects (likely global listing). 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 this tool is for retrieving a specific unit's MIDI effect chain, but it gives no explicit guidance on when to choose it over alternatives such as get_effect_chain or list_midi_effects. No exclusions or alternatives are mentioned, so usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_mixer_stateARead-only
Get the full mixer state — all audio units with volume, panning, mute, solo, and type.
Returns a list of channel strips with their current values. Useful for inspecting the mix balance and routing at a glance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds that it returns a list of channel strips, but does not disclose details like return format, pagination, or whether hidden channels are included. This is adequate but not rich 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 main purpose. The second sentence adds return info and a use case without waste. Every line 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?
The description covers the purpose, return type, and common use case. Since an output schema exists, return values are already structured. It lacks some nuance about what 'full mixer state' includes exactly, but is sufficiently complete for a read-only tool with no parameters.
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 schema coverage is 100% (vacuously), so there is nothing to add. The baseline for 0 params is 4, and the description does not need to explain any 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 tool gets the full mixer state with specific fields (volume, panning, mute, solo, type). This is a specific verb+resource that distinguishes it from sibling tools that set individual mixer parameters or get other project 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 clear context for when to use ('inspecting the mix balance and routing at a glance') but does not explicitly contrast with alternative tools like get_project_state or list_tracks. It gives a use case but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_neuralamp_modelARead-only
Get the NeuralAmp (Tone3000) model JSON for a NeuralAmp effect.
Returns the full NAM model JSON string, or an error if the effect is not a NeuralAmp or has no model loaded.
unit_index: AU index. effect_index: Effect index in the audio effect chain.
Returns model_json (string) or empty if no model loaded.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contains a significant internal contradiction: first it says 'or an error if the effect is ... has no model loaded,' but later states 'or empty if no model loaded.' This ambiguity fails to disclose the actual return behavior for the no-model case, which is critical for correct agent handling. Annotations (readOnlyHint) are not contradicted, but the description lacks consistent behavioral detail.
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 primary purpose. It avoids fluff and logically separates purpose, return behavior, and parameters. However, the contradictory statements about error vs. empty return waste a sentence and could have been consolidated for clarity.
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 getter, the description covers return values and parameter meanings, but the contradictory return behavior undermines completeness. It also lacks context on how unit_index and effect_index are resolved (e.g., from list_effects), which would be helpful for agents navigating the DAW hierarchy.
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?
With 0% schema description coverage, the description attempts to compensate by explaining each parameter: 'unit_index: AU index' and 'effect_index: Effect index in the audio effect chain.' These definitions are minimal and omit details like zero-based indexing or how to obtain valid indices, leaving room for misinterpretation.
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: 'Get the NeuralAmp (Tone3000) model JSON for a NeuralAmp effect.' It uses a specific verb ('Get'), identifies the exact resource (NAM model JSON), and specifies scope (for a NeuralAmp effect), distinguishing it from general effect getters like get_effect_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 conveys clear usage context by indicating this is for NeuralAmp effects and specifies error conditions when the effect is not a NeuralAmp or has no model loaded. However, it does not explicitly name alternative tools or provide when-not-to-use guidance beyond these error cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_note_rangeARead-only
Get the pitch range and max duration of notes in a note region.
Returns min pitch, max pitch, and longest note duration — useful for determining the vocal/instrument range and planning transpose operations.
unit_index: AU index. track_index: Note track index within the AU. region_index: Note region index.
Returns min_pitch, max_pitch, max_duration_beats, note_count, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint: true, so the safety profile is covered. The description adds minimal behavioral context beyond that: it mentions 'or error' and lists return fields, but does not detail error conditions, permissions, or any other behavioral traits. With annotations in place, the description does not carry the full burden, so a 3 is appropriate.
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 well-structured: opening sentence, return summary, parameter list, and return list. It is front-loaded and each line serves a purpose, though the opening sentence and the return list slightly overlap in stating the outputs.
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 getter with an output schema, the description covers all necessary aspects: purpose, parameters, and return values. The mention of error behavior is vague, but the overall tool is simple and the annotations plus output schema fill in the rest.
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 description coverage, so the parameter definitions in the description are essential and valuable. Each parameter (unit_index, track_index, region_index) gets a concise semantic explanation ('AU index', 'Note track index within the AU', 'Note region index'). While not exhaustive, it compensates well for the schema's lack of 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 a specific verb ('Get') and resource ('pitch range and max duration of notes in a note region'), and immediately distinguishes itself from sibling tools by specifying exact outputs (min pitch, max pitch, longest note duration). The name is reinforced and 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 provides clear context for when to use the tool ('useful for determining the vocal/instrument range and planning transpose operations'), but it does not explicitly mention alternatives or exclude other tools. This is sufficient for a simple getter, though it could be stronger with explicit 'use instead of' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_piano_modeARead-only
Get piano roll view settings.
Returns keyboard type (88/76/61/49), time range, note scale, note labels, transpose.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals this is a safe read operation. The description adds the list of return fields, which is useful context, but does not disclose potential error scenarios or how the data is structured beyond the output schema. This is adequate for a simple getter but not rich in behavioral detail.
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 core purpose, and lists the return elements efficiently. No superfluous 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?
Given the simplicity of the tool (no parameters), the presence of an output schema, and the annotation, the description is complete. It covers what the tool does and what it returns, which is all that is needed 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, and the schema coverage is 100% (no properties). The description doesn't need to explain parameters, and the baseline for zero-parameter tools is 4. It provides no parameter semantics because none exist, but this 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 function: 'Get piano roll view settings' and enumerates the exact fields returned (keyboard type, time range, note scale, note labels, transpose). This distinguishes it from sibling tools like set_piano_keyboard and set_piano_time_range, 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?
The description implies when to use the tool (when you need to retrieve piano roll view settings) but does not explicitly mention alternatives or when not to use it. The sibling setter tools are evident from context, but the description itself provides no direct comparison or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_project_durationARead-only
Get the total project duration — the end position of the last region across all tracks.
Returns the duration in beats and seconds, or error.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds the specific definition of duration (end of last region) and return format (beats and seconds), plus the possibility of an error. This enriches behavioral understanding without contradicting 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?
The description is two concise sentences with no redundant wording. It front-loads the main verb and resource, then adds definition and return format. 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, read-only getter, the description fully covers what it does, what it returns, and how duration is computed. The output schema provides the rest. No major 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?
The tool has zero parameters, so the schema fully covers parameters. The description appropriately omits parameter details. Baseline of 4 applies due to zero-parameter design.
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 retrieves the total project duration, defined as the end position of the last region across all tracks. This specific definition differentiates it from other getters like get_project_info. The mention of return units (beats and seconds) further clarifies 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. It doesn't mention exclusions or context where another tool should be used. The usage is implicitly clear from being a simple getter, but the description itself lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_project_infoARead-only
Get a quick project overview: BPM, time signature, track/AU/effect counts, total duration.
Single-call summary — lighter than get_project_state (no per-track detail).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so read-only is known. The description adds behavioral scope: it returns specific summary fields and explicitly excludes per-track detail, which is useful context beyond the annotation. No contradictions.
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: first lists the returned data, second provides usage context and sibling comparison. No redundant words, content 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?
With an output schema present, no need to document return values separately. No parameters to document. Annotations cover safety. The description explains purpose, scope, and relationship to sibling tool, making it complete for a simple read-only overview.
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?
Tool has zero parameters, so schema coverage is trivially 100%. The description doesn't need to explain parameters. Baseline of 4 for no-parameter tools 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?
Description states exactly what the tool does: 'Get a quick project overview: BPM, time signature, track/AU/effect counts, total duration.' It distinguishes from sibling get_project_state by noting it's 'lighter' and has 'no per-track detail,' making its scope 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?
Explicitly says 'Single-call summary — lighter than get_project_state (no per-track detail),' which tells the agent when to use this tool (quick overview) and when not (if per-track detail is needed). This names an alternative and gives an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_project_metadataARead-only
Get project metadata: creation date, BPM, time signature, AU count, track count.
Quick overview of the project state in one call.
Returns created (ISO date), bpm, time_signature, audio_unit_count, total_track_count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes the read-only nature, and the description adds no contradictory behavior. The description adds minimal behavioral context beyond the return values, providing no insights into side effects or performance characteristics.
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 three short sentences, front-loading the core purpose and then providing a quick usage context and return fields. No extraneous information is present, so 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?
Given the tool's simplicity (no parameters, output schema present), the description covers the essential purpose and return data. However, the lack of differentiation from several related sibling tools (e.g., get_project_info, get_project_state) leaves a minor completeness 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 input schema is empty and schema description coverage is 100% by default. The description correctly lists the return fields, but since there are no parameters, there is nothing to explain 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 explicitly states 'Get project metadata' and enumerates the specific fields (creation date, BPM, time signature, AU count, track count), making the tool's function clear. However, it does not differentiate from sibling tools like get_project_state or get_project_info that may overlap in 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 phrase 'Quick overview of the project state in one call' suggests a lightweight, single-call usage context, but it lacks explicit guidance on when to prefer this tool over similar metadata/state tools. It does not mention any alternatives or exclusions, so the usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_project_stateBRead-only
Get full project state: BPM, sample rate, playing status, track list, effects chain.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is transparent. The description adds value by specifying the returned data categories, but it does not discuss potential costs (e.g., large payload) or how the state snapshot is taken, which would be useful for a 'full state' 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, front-loaded sentence. It uses a clear verb ('Get'), specifies the resource ('full project state'), and lists concrete elements without any fluff or redundant 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 is adequate for a simple state retrieval tool, and the existence of an output schema reduces the need to explain return values. However, the lack of differentiation from the similarly named sibling 'get_full_project_state' and the absence of usage context leave notable gaps in completeness.
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 (zero parameters), and schema description coverage is 100%. The description has no parameter burden, and none of the listed contents require parameter explanation. Baseline for zero 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 retrieves full project state and enumerates key contents (BPM, sample rate, playing status, track list, effects chain). However, a sibling tool named 'get_full_project_state' exists, and the description does not distinguish this tool from that one, which could cause confusion.
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 get_project_info, get_mixer_state, or get_full_project_state. The description simply describes the action without any contextual or exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_region_infoARead-only
Get detailed info about a single region — position, duration, loop, mute, content.
unit_index: AU index. track_index: Track index within the AU. region_index: Region index.
Returns region metadata including type-specific info (notes count, audio file, automation events).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description aligns with this by stating it 'gets' information. It adds value beyond the annotation by disclosing what the response includes: position, duration, loop, mute, content, and type-specific metadata such as notes count, audio file, and automation events. 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?
The description is compact and front-loaded: a clear one-line summary, three short parameter definitions, and a one-line description of return content. Every sentence serves a purpose, with 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 description covers the tool's purpose, all three parameters, and the general shape of the return value. Since an output schema exists, it does not need to enumerate every field. It is sufficient for an agent to select and invoke this tool correctly, though it could mention error/edge-case behavior for extra completeness.
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 no descriptions (0% coverage), but the description fully compensates by defining each parameter: unit_index as AU index, track_index as track within the AU, and region_index as region index. This clarifies the hierarchical addressing scheme, which the bare schema names do not convey.
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+resource: 'Get detailed info about a single region' and enumerates the exact fields returned (position, duration, loop, mute, content). This clearly distinguishes it from sibling list operations (e.g., list_note_regions) and mutation tools (e.g., set_region_duration).
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 appropriate use case—when you need detailed information about one specific region—but does not explicitly state when not to use it or mention alternatives like list_note_regions or get_region_play_mode. It provides no exclusions or comparative guidance, so it meets only the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_region_play_modeARead-only
Get the play mode of an audio region — stretch type, playback rate, cents, transient mode.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index.
Returns play mode details, or info if no stretch mode (plain playback).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already present in annotations, the description adds meaningful behavioral context by disclosing the fallback behavior ('or info if no stretch mode (plain playback)') and enumerating the returned fields. This goes beyond the annotation's simple safety hint.
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: a one-sentence purpose statement, a bullet-like list of parameter definitions, and a return-behavior sentence. 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?
For a simple read-only getter with three integer parameters and an output schema present, the description covers purpose, parameter semantics, and return behavior including the edge case of no stretch mode. 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?
Schema description coverage is 0%, so the description fully compensates by defining all three parameters (unit_index, track_index, region_index) with clear hierarchical context (AU, track within AU, audio region). This adds substantial meaning beyond the bare integer type 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 uses a specific verb ('Get') and resource ('play mode of an audio region'), and explicitly lists the returned fields (stretch type, playback rate, cents, transient mode). This clearly distinguishes it from sibling getter tools like get_region_info or get_track_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?
The description implies its usage by naming the resource and parameters, but provides no explicit guidance on when to prefer this tool over alternatives, nor any exclusions or prerequisite conditions. Usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_sample_infoARead-only
Get detailed info about an audio sample by UUID.
Uses the SampleManager to fetch metadata about audio files registered in the project. Returns sample rate, channels, frames, and loading state.
sample_uuid: UUID of the audio sample (from list_samples).
Returns sample metadata, or error if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| sample_uuid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds value by explaining what metadata is returned (sample rate, channels, frames, loading state) and that an error is returned if the sample is not found. This gives useful behavioral context beyond the annotation.
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 three concise sentences, front-loaded with the core purpose, and every sentence contributes necessary information without 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 read-only getter with one parameter and an existing output schema, the description fully covers the purpose, parameter source, return fields, and error behavior. No important information 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 schema provides no description for sample_uuid (0% coverage), but the description compensates by explaining it is the UUID of the audio sample and references list_samples as the source. This is critical guidance for correctly supplying the 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 uses a specific verb 'Get' with a clear resource 'audio sample' and specifies metadata retrieval by UUID. It distinguishes itself from sibling tools like get_audio_file_info by focusing on sample metadata and naming sample-specific return fields.
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 tells the user where to obtain sample_uuid ('from list_samples'), giving clear context on when to use this tool. It does not explicitly name alternative tools or exclusions, but the workflow is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_script_device_codeARead-only
Read the current user JavaScript code from a scriptable device.
Returns the full code string, header line, and code length.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| device_type | Yes | ||
| device_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds context by specifying the exact output components (full code string, header line, code length). It does not disclose side effects or error conditions, but for a read operation this is largely covered by annotations and the return 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: two sentences front-load the primary action and return value list. No filler or repetition of schema fields.
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 tool, the description specifies the resource and return payload, and annotations cover safety. However, the lack of parameter documentation (0% schema coverage) leaves gaps in how to invoke the tool correctly, and no prerequisites are mentioned. Overall adequate but incomplete 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 input schema has three parameters with zero description coverage, and the tool description does not explain the meaning or valid values of device_type, unit_index, or device_index. Since the description does not compensate for the missing schema documentation, an agent must guess the parameter semantics from names 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 uses the specific verb 'Read' and identifies the exact resource ('current user JavaScript code from a scriptable device'), clearly distinguishing from sibling tools like mcp_opendaw_set_script_device_code. It also outlines the returned data, 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?
The description implies usage for reading script code but does not explicitly state when to prefer this over alternatives or provide exclusions. No mention of the set counterpart or conditions under which to use this tool. The context is clear but not decision-oriented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_signature_eventsARead-only
List all time signature change events in the project.
Returns the base signature (4/4 by default) and all signature change events with their accumulated PPQN positions, bar counts, and nominator/denominator.
Returns base_signature, events array with index/position/bars/nominator/denominator.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint already signals a safe read operation. The description adds value by clarifying the default base signature (4/4) and the detail that PPQN positions are accumulated, which gives the caller insight into the data structure beyond the annotation.
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 purpose. Minor redundancy exists with two sentences both starting 'Returns', but the overall structure is efficient 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 zero-parameter read-only listing tool with an output schema, the description is fully complete. It explains the return structure including the base signature and the event fields (index, position, bars, nominator/denominator), providing the agent all necessary context to call and interpret 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?
There are no parameters, so there is no parameter detail to add. The description appropriately focuses on return value semantics, which is sufficient since the schema has zero parameters and 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 tool lists all time signature change events and specifies the returned base signature and event fields. It is a specific verb+resource, though it does not explicitly distinguish itself from the sibling tool mcp_opendaw_list_signature_changes.
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 use when you need time signature information from the project, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference alternatives. Given there are related tools like list_signature_changes, more direct comparison would have improved this score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_studio_settingsARead-only
Get all studio preferences/settings (engine, visibility, editing, debug, storage, time-display, pointer).
Returns all settings categories with current values.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the safe read-only nature. The description adds that it returns all settings categories with current values, which is useful but minimal. No additional behavioral traits such as response format or error conditions are disclosed.
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 clear, front-loaded sentences with no redundancy. The parenthetical list of categories adds value without bloating the 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?
For a zero-parameter, read-only getter with an output schema, the description is complete. It states what is returned (all settings categories with current values), and the annotation covers the safety profile. No critical context 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 tool has zero parameters, and the input schema is fully empty (coverage 100%). The description correctly adds no parameter details, which is appropriate. A baseline of 4 is warranted for zero-parameter 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 tool retrieves all studio preferences/settings and enumerates the specific categories (engine, visibility, editing, debug, storage, time-display, pointer). This is a specific verb+resource description that distinguishes it from sibling tools like set_studio_setting.
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 fetch current settings but does not explicitly state when to prefer it over other getter tools (e.g., get_engine_status, get_project_state) or mention any exclusions. Guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_tempo_atARead-only
Get the BPM at a specific position, accounting for tempo automation.
position_beats: Position in beats (float).
Returns BPM at that position, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is consistent with the description's 'Get' and 'Returns BPM at that position, or error.' The description adds useful behavioral context about accounting for tempo automation and its error return, going beyond what annotations already provide.
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, front-loaded with the purpose, and contains only essential information: the param definition and return behavior. Every sentence earns its place 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?
For a simple read-only getter with one parameter and an output schema, the description is complete. It states the input, the return (BPM or error), and the automation consideration. No other aspects (like pagination or side effects) are relevant.
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 does define the parameter as 'Position in beats (float)', but this largely restates the schema's type and title. No additional constraints (e.g., valid range, reference point) are provided, so it barely rises above 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 verb ('Get'), the resource ('BPM at a specific position'), and a key differentiator ('accounting for tempo automation'). It can be distinguished from siblings like set_bpm, add_tempo_change, and list_tempo_changes.
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 it clear when to use the tool: to obtain BPM at a specific position, especially accounting for automation. However, it does not explicitly mention why it should be preferred over alternatives like list_tempo_changes, though the automation mention strongly implies the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_track_infoARead-only
Get detailed info about a track — type, regions, clips, enabled state, target.
unit_index: AU index. track_index: Track index within the AU.
Returns track metadata and region/clip counts.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, so the safety profile is known. The description adds that it returns track metadata and region/clip counts, but does not disclose nuances like index validity or handling of hidden tracks. This modest addition is acceptable given the annotation coverage.
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 concise sentences cover purpose, parameters, and return value. The description is front-loaded with the main purpose and contains no 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?
With an output schema present and a readOnly annotation, the description adequately covers parameter selection and return overview. Minor omissions like error handling or edge cases are not critical for a simple getter 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 0%, so the description must compensate. It does by explaining unit_index as AU index and track_index as track index within the AU, which is essential for correct invocation. It lacks depth like zero-based indexing but is sufficient for the 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 clearly states the tool retrieves detailed track information including type, regions, clips, enabled state, and target. It uses a specific verb and resource, but does not explicitly differentiate from sibling tools like list_tracks or get_region_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?
No guidance is provided on when to use this tool versus alternatives. It simply states what it does, without any exclusions or references to other track-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_get_unit_freeze_statusARead-only
Check if an audio unit is frozen and whether it can be frozen.
Freeze status indicates the AU's output has been pre-rendered to audio, freeing CPU. An AU with sidechain dependents cannot be frozen.
unit_index: AU index.
Returns frozen (bool), can_freeze (bool), has_sidechain_dependents (bool).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already indicating a safe read, the description adds valuable context: the meaning of freeze status, the sidechain-dependent limitation, and the exact return fields (frozen, can_freeze, has_sidechain_dependents). It does not contradict annotations, and the added behavioral detail goes beyond the structured 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?
The description is compact and front-loaded: it states the primary purpose in the first sentence, then gives a one-sentence concept explanation, a one-line parameter note, and a one-line return description. Every sentence earns its place with no redundant 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 read-only query with one parameter, the description covers the purpose, key constraints, and return values, which is sufficient for an agent to invoke it correctly. A minor gap is the lack of detail about valid unit_index values, but overall it is nearly complete for the tool's simplicity.
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, unit_index, is described merely as 'AU index,' which essentially restates the schema title 'Unit Index.' It does not explain whether indices are zero-based, how to discover valid indices, or what happens on an invalid index, so it fails to compensate for the 0% schema description 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 clear verb+resource: 'Check if an audio unit is frozen and whether it can be frozen,' which precisely identifies what the tool does. It also distinguishes itself from sibling tools like freeze_audiounit and unfreeze_audiounit by being a query rather than a mutation.
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 the check is relevant: freeze status indicates pre-rendered audio, and an AU with sidechain dependents cannot be frozen. This implies the tool should be used before attempting to freeze, but it does not explicitly name alternatives or 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.
mcp_opendaw_groove_transferA
Transfer groove (timing + velocity feel) from a source region to a destination region.
Extracts the groove template from source notes: for each grid position within the groove cycle (groove_length beats), records the average timing offset from the grid and the average velocity ratio. Then applies this template to destination notes — shifting their timing and scaling velocity to match the source feel.
This is NOT copying notes — it transfers the feel. A 1-bar drum groove can be applied to a 4-bar programmed pattern. The groove cycles every groove_length beats.
source_unit_index: AU index of the groove source (e.g. a drum track). source_track_index: Note track index on the source AU. source_region_index: Region index on source (-1 = first). dest_unit_index: AU index of destination (-1 = same as source). dest_track_index: Note track index on destination AU (-1 = same as source track). dest_region_index: Region index on destination (-1 = all regions on track). groove_length: Groove cycle length in beats (4 = 1 bar of 4/4, 3 = waltz, 2 = half-bar). timing_strength: 0-1, how much timing offset to apply (0 = no change, 1 = full source groove). velocity_strength: 0-1, how much velocity pattern to apply (0 = no change, 1 = full source groove). grid: Grid for computing timing offsets — "16th" or "8th".
Returns groove template stats and per-region modification counts.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | 16th | |
| groove_length | No | ||
| dest_unit_index | No | ||
| timing_strength | No | ||
| dest_track_index | No | ||
| dest_region_index | No | ||
| source_unit_index | Yes | ||
| velocity_strength | No | ||
| source_track_index | Yes | ||
| source_region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the algorithm (extracts average timing offsets and velocity ratios, applies them to destination notes) and notes that it modifies timing and velocity. However, with no annotations, it doesn't disclose potential side effects (e.g., irreversibility, prerequisite conditions) beyond the core 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 well-organized with a clear first sentence, a concise algorithm explanation, and a structured parameter list. While a bit long, every sentence adds value, and the parameter list is necessary given the 0% schema coverage.
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 all parameters, the algorithm, the distinction from copying, and mentions return values ('Returns groove template stats and per-region modification counts'). It lacks explicit prerequisites (e.g., source and destination regions must exist with notes), but overall it's sufficient for an agent to select and 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?
Schema description coverage is 0%, but the description provides a complete per-parameter explanation with defaults and ranges (e.g., 'timing_strength: 0-1, how much timing offset to apply'), fully compensating for the schema's lack of 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?
The description explicitly states 'Transfer groove (timing + velocity feel) from a source region to a destination region' and clarifies 'This is NOT copying notes — it transfers the *feel*,' distinguishing it from note-copying tools and providing a specific, actionable 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?
It gives context with 'A 1-bar drum groove can be applied to a 4-bar programmed pattern' and explains how the groove cycles, but does not explicitly mention alternatives like quantize or humanize, nor when not to use it. Clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_humanize_notesA
Add human-like variation to existing notes — velocity, timing, duration, and swing.
Makes programmed MIDI feel less robotic by applying small random deviations. Works on all notes in the specified track(s)/unit(s), or globally with unit_index=-1.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). velocity_amount: Velocity deviation depth 0-1 (0.15 = ±15% of current velocity). Example: 0.05 = subtle, 0.15 = natural, 0.25 = loose. timing_amount: Timing offset depth in beats 0-1 (0.15 = up to ±15% of a 16th note = ±3.6 ticks). Example: 0.05 = tight, 0.15 = natural groove, 0.30 = sloppy. duration_amount: Duration deviation depth 0-1 (0.10 = ±10% of current duration). swing: Swing amount 0-1 (0 = straight, 0.5 = light swing, 1.0 = full triplet feel). Shifts every other 16th note later by swing * 1/3 of a 16th. seed: Random seed for reproducibility (same seed = same humanization).
Returns per-track note counts and total notes humanized.
Example: humanize_notes(unit_index=0, velocity_amount=0.15, timing_amount=0.12, swing=0.35)
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| swing | No | ||
| unit_index | No | ||
| track_index | No | ||
| timing_amount | No | ||
| duration_amount | No | ||
| velocity_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses that the tool applies random deviations, affects notes in scope, uses a seed for reproducibility, and returns per-track note counts. It does not explicitly state whether modifications are in-place or whether undo is available, but it covers the core behavior and parameter effects well.
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 reasonably concise given the number of parameters. It begins with a clear one-sentence summary, then organized parameter explanations, and a practical example. Each section earns its place, though it could be slightly tightened without losing clarity.
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 7 parameters, no annotations, and an output schema present, the description covers behavior, parameter semantics, scope selection, reproducibility, return values, and gives a real-world example. It is essentially complete for an agent to select and invoke the tool correctly, leaving minimal 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?
Schema description coverage is 0%, but the description manually explains every parameter with ranges, examples, and musical meaning (e.g., timing_amount: '0.05 = tight, 0.15 = natural groove, 0.30 = sloppy'). This fully compensates for the lack of schema descriptions and adds significant 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?
The description uses a specific verb+resource: 'Add human-like variation to existing notes — velocity, timing, duration, and swing.' It clearly distinguishes from siblings by enumerating the exact dimensions modified and explicitly stating scope (all notes in specified track(s)/unit(s) or globally).
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 context is provided: the tool humanizes existing MIDI notes, works on specified tracks/units or globally, and each parameter is explained with example values. However, it does not explicitly mention when to use this tool over alternatives like humanize_pitch or apply_swing, so usage guidance is strong but not fully comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_humanize_pitchA
Add micro-detune (cents) to notes — intonation humanization.
Real instruments and vocals never play perfectly in tune — there's always slight pitch drift. humanize_notes handles velocity/timing/duration, but pitch stays quantized. This tool adds per-note cent offsets to simulate natural intonation imperfections.
Useful for:
String sections that sound too perfect
Vocal MIDI parts that need warmth
Brass arrangements needing intonation character
Any programmed MIDI that feels sterile
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). cents_depth: Maximum deviation in cents (0-50, default 5 = +/-5 cents). 3 = subtle warmth, 5 = natural, 10 = loose, 20 = detuned, 50 = chaotic. bias: Directional bias in cents (-20 to +20, default 0 = centered). Positive = sharp tendency, negative = flat tendency. Useful for simulating ensembles that drift sharp. seed: Random seed for reproducibility (same seed = same detune pattern).
Returns per-track note counts, total notes detuned, cent range.
Example:
Subtle string warmth
humanize_pitch(unit_index=0, track_index=2, cents_depth=4, seed=7)
Detuned brass
humanize_pitch(unit_index=0, track_index=3, cents_depth=12, bias=-3)
| Name | Required | Description | Default |
|---|---|---|---|
| bias | No | ||
| seed | No | ||
| unit_index | No | ||
| cents_depth | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It explains that the tool adds random cent offsets based on a seed (reproducible), and it states the return format. However, it does not disclose whether the operation is destructive or how it interacts with the original pitch data (e.g., whether it replaces or offsets), and there is no mention of undo 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?
The description is front-loaded with the core action, followed by a brief context, then parameter docs and examples. The four-bullet 'Useful for' list is concise and practical, and the parameter explanations are dense without padding. It avoids redundancy despite its 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 6-parameter tool with no annotations and no schema descriptions, the description documents all parameters, provides defaults, ranges, return types, and examples. The main gap is the lack of a destructive/undo warning, which would be important for a pitch-modifying operation. The output schema likely covers the return object, so the return description is supplementary.
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 define the parameters. It does so thoroughly: unit_index/track_index/region_index scoping, cents_depth with levels (3=subtle warmth, 5=natural, etc.), bias with direction, and seed reproducibility. This goes far beyond the schema's bare 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 opens with 'Add micro-detune (cents) to notes — intonation humanization,' using a specific verb and resource, and immediately distinguishes itself from the sibling humanize_notes by noting that 'humanize_notes handles velocity/timing/duration, but pitch stays quantized.' This clearly sets it apart from related 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 names the alternative for velocity/timing/duration (humanize_notes) and provides a 'Useful for' list of concrete scenarios (string sections, vocal MIDI, brass, sterile MIDI). This gives a clear context for when to apply the tool and what it does not do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_identify_chordsA
Identify chords from existing notes in a region — harmonic analysis / reverse engineering.
Reads all notes from a region, groups them by temporal overlap (notes sounding together within group_tolerance beats), and for each group identifies the chord by matching the pitch-class set against known chord types (maj, min, 7, maj7, min7, sus2, sus4, add9, dim, aug).
Useful for: understanding imported MIDI, analyzing AI-generated progressions, reverse-engineering a track's harmony, or verifying that generated chords match the intended progression.
unit_index: AU index to analyze. track_index: Note track index to analyze. region_index: Region index (-1 = first region). group_tolerance: Beats of tolerance for grouping notes as simultaneous (default 0.25 = notes within a 16th note of each other are grouped together). min_notes: Minimum notes to attempt chord identification (default 3 = triad minimum).
Returns list of detected chords with time position, root, type, and confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| min_notes | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| group_tolerance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the grouping algorithm, tolerance behavior, chord types matched, and return fields. It does not explicitly state that it is read-only, but 'Reads all notes from a region' strongly implies a non-destructive operation. It lacks edge-case behavior (e.g., no chords detected) but is otherwise 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 front-loaded with the main purpose, then follows a logical flow: algorithm, use cases, parameters, return value. Every sentence earns its place; the parameter explanations are necessary given the schema has no descriptions. It is long but not bloated.
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 and the presence of an output schema, the description covers the essential context: input parameters explained, algorithm described, known chord types enumerated, and return fields listed. It is sufficient for an agent to select and invoke the tool correctly. The only minor omission is error or empty-result behavior, but the output schema likely covers 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?
Schema description coverage is 0%, so the description compensates fully. Every parameter (unit_index, track_index, region_index, group_tolerance, min_notes) is explained with meaning, defaults, and context (e.g., '0.25 = notes within a 16th note of each other'). This adds substantial value over 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?
The description opens with a specific verb and resource: 'Identify chords from existing notes in a region'. It clearly distinguishes this analysis tool from generation tools like mcp_opendaw_create_chord_progression, and explains the algorithm and output. Purpose is 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?
Provides concrete use cases: 'understanding imported MIDI, analyzing AI-generated progressions, reverse-engineering a track's harmony, or verifying that generated chords match the intended progression.' This is clear context but stops short of explicit exclusions or direct comparisons to alternatives, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_import_audio_to_tracksA
Import an audio file into the DAW, optionally split into stems on separate tracks.
One-call pipeline: audio file → (optional stem separation) → create instrument tracks → load each stem → place on tracks at start_beat. This is the Suno-to-DAW bridge: generate a track with Suno, download it, then import with stem splitting for mixing and mastering.
Without mode: loads the whole file as one track (simple import). With mode: splits into stems, creates one track per stem, loads and places each.
file_path: Absolute path to WAV/MP3/FLAC/OGG file on disk. mode: Stem separation mode (empty = no split, single track). Modes: "bs6" (6-stem), "scnet" (4-stem), "ensemble" (max quality), "polarformer" (vocal/instrumental), "drumsep" (drum parts). start_beat: Beat position to place the audio region(s) (default 0). bpm: Tempo for the project (affects beat alignment, default 120).
Returns: track count, per-track info (name, sample_id, duration, stem name), and suggested next steps (apply_genre_mix, render_full).
Examples:
Simple import — one track, no splitting
import_audio_to_tracks("/tmp/suno_track.wav")
Split into 6 stems, each on its own track
import_audio_to_tracks("/tmp/suno_track.wav", mode="bs6")
Vocal/instrumental split at beat 4
import_audio_to_tracks("/tmp/vocal.wav", mode="polarformer", start_beat=4)
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| mode | No | ||
| file_path | Yes | ||
| start_beat | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the operational pipeline: 'create instrument tracks → load each stem → place on tracks at start_beat.' It explains both modes, lists supported file formats, documents return values, and suggests next steps (apply_genre_mix, render_full), providing transparency well beyond a basic summary.
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 efficiently organized with a pipeline overview, mode explanation, parameter details, return info, and three illustrative examples. Every sentence serves a purpose, and the core purpose is front-loaded, making it easy to scan 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?
Given the tool's complexity (4 params, mode variations, pipeline behavior), the description is complete. It covers both import modes, parameter semantics, return data, and even offers workflow suggestions. The output schema's existence reduces the burden for return-value details, but the description still exceeds what's needed for safe 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 0% description coverage, but the description compensates completely. It defines file_path's absolute path and supported formats, enumerates all mode values with their meanings, and explains start_beat and bpm with defaults and effects. This adds substantial 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 opening line states a clear verb+resource: 'Import an audio file into the DAW, optionally split into stems on separate tracks.' The pipeline description (audio file → split → create tracks → load/place) distinguishes it from granular siblings like load_audio or create_audio_track, making the tool's 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?
The description gives a concrete use case as 'the Suno-to-DAW bridge' and explains when the mode parameter is used vs. not. However, it does not explicitly list when to use this composite tool over manual alternatives (e.g., load_audio + create_audio_track + place_audio_region), so the guidance is context-rich but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_import_dawprojectA
Import a .dawproject file into the current session.
The dawproject format is a ZIP containing project.xml, metadata.xml, and audio samples. This enables loading projects created in Bitwig, Ableton, or other DAWs supporting dawproject.
Args: filename: Path to the .dawproject file to import.
Returns the import result with track and sample counts.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the file format (ZIP containing project.xml, metadata.xml, audio samples) and states that it returns track and sample counts. However, it does not disclose potential side effects like whether the current session is overwritten or if the operation is destructive, which would be valuable 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 concise and well-structured: the main action is front-loaded, followed by beneficial context about the format, and then the args and return value. Every sentence earns its place 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 an output schema, the description covers the essential aspects: what it does, the file format, and the return value. It could improve by mentioning whether the engine must be running or if the import replaces the current session, but overall it provides sufficient context for an agent 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?
Schema coverage is 0%, so the description must compensate. It explicitly documents the 'filename' parameter as 'Path to the .dawproject file to import', providing meaning beyond the bare schema. This explains both the type and purpose, though it could add details like path resolution or file existence requirements.
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 'Import a .dawproject file into the current session', using a specific verb and resource. It distinguishes itself from other import tools by specifying the .dawproject format and mentioning compatibility with Bitwig, Ableton, and other DAWs.
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 this tool: when you have a .dawproject file created in another DAW. It provides clear context but does not explicitly mention alternatives or when not to use it, though the format specificity makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_import_midiA
Import a MIDI file and create note events on a note track.
Parses standard MIDI (.mid) files and creates note regions with all notes. Supports format 0 and 1. Ticks are converted to openDAW PPQN (960/quarter).
file_path: Path to .mid file (absolute or relative to MCP server). unit_index: Audio unit index with a note track (-1 = search all AUs). track_index: Note track index within the AU. offset_beats: Offset in beats to shift all notes (e.g. start at bar 2 = 4.0).
Returns note count and time range.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| offset_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose key behaviors: it parses .mid files, creates note regions, supports formats 0/1, and converts ticks to PPQN. Yet it does not explain whether existing notes are overwritten or merged, what happens on errors, or any permission requirements. This is adequate but leaves important 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?
The description is well-structured and appropriately sized. It starts with a one-line summary, then details parsing, formats, and tick conversion, followed by a clean parameter list, and ends with return value. Every sentence contributes useful information with no 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 that the schema has zero param descriptions and no annotations, the description provides a solid foundation: it covers formats, resolution, all four parameters, and the return value. It does not mention potential multi-track MIDI handling or whether tempo/time signature events are imported, but for an import tool this is fairly complete. The output schema exists, so return details need not be over-specified.
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 parameter names and types with no descriptions (coverage 0%). The description compensates fully by explaining each parameter: file_path (absolute/relative), unit_index (-1 searches all AUs), track_index (within AU), and offset_beats (with an example). This adds significant 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?
The description opens with a specific verb and resource: 'Import a MIDI file and create note events on a note track.' This clearly distinguishes it from siblings like 'export_midi' or 'import_dawproject'. It also specifies parsing behavior, formats, and tick conversion, 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?
The description gives clear context for when to use: importing standard MIDI files into note tracks. It explains supported formats (0 and 1) and the meaning of unit_index -1 for searching all AUs. However, it does not explicitly mention alternatives or situations where this tool should not be used, 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.
mcp_opendaw_import_presetA
Import a preset (base64-encoded binary) as a new audio unit.
Uses PresetDecoder.decode — deserializes the preset into the current project, creating a new AU with all its dependencies (instrument, effects, MIDI effects, tracks, notes).
preset_b64: Base64-encoded preset bytes from export_preset.
Returns the new AU's index, type, and label, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| preset_b64 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the tool deserializes the preset into the current project and creates a new AU with instruments, effects, MIDI effects, tracks, and notes, which is a key side effect. It also mentions return value or error, providing transparency about outcomes.
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 purpose. Each sentence adds useful information, though 'Uses PresetDecoder.decode' is an implementation detail that could be omitted. Overall, it is well-structured and not overly 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 the tool's complexity and lack of annotations, the description covers the main aspects: purpose, side effects, parameter source, and return value. It doesn't cover potential error scenarios in depth, but 'or error' is noted. An output schema exists, so return structure is handled separately.
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 fully describes the parameter: 'preset_b64: Base64-encoded preset bytes from export_preset.' This explains the format, content, and source, making the parameter meaning clear.
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: 'Import a preset (base64-encoded binary) as a new audio unit.' It specifies the resource (preset) and the result (new audio unit), and distinguishes from siblings like 'replace_from_preset' by emphasizing 'new'.
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: it says the preset_b64 comes from export_preset and that it creates a new AU with dependencies. While it doesn't explicitly name alternatives or exclusions, the context is sufficient to infer when to use it (e.g., not for replacing existing units).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_insert_restsA
Insert rests at specified beat positions by removing notes.
Deletes notes at given beat positions to create space, syncopation, or breathing room in dense patterns. Unlike thin_notes (which removes by interval/velocity/random strategy), this works positionally — you specify exactly where rests should appear.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) rest_positions: Comma-separated beat positions where rests should be inserted (e.g. "0,1,2,3" = every beat, "1.5,3.5" = offbeats only). tolerance_beats: Tolerance for matching note start to rest position (0.05 = within a 32nd note, 0.25 = within a 16th). mode: Deletion mode — "delete" = remove notes starting at rest positions, "truncate" = shorten notes that overlap rest positions (cut them at the rest point), "shorten" = reduce duration of notes near rest positions by half but don't delete them. shorten_neighbors: If True, also shorten notes immediately before rest positions to create cleaner separation. Only with mode="delete".
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | delete | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| rest_positions | No | 0,1,2,3 | |
| tolerance_beats | No | ||
| shorten_neighbors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavior. It clearly states that the tool deletes notes, explains the three deletion modes, and describes the effect of shorten_neighbors. While it does not explicitly mention reversibility or undo options, the destructive nature is transparent enough for an agent to infer the operation'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 well-structured and front-loaded with the core purpose, followed by a clear 'Args:' section. While longer than the two-sentence ideal, every sentence contributes useful detail necessary for correct invocation. The organization into bullet-like list items aids readability, though some redundancy exists between the opening and the Args section (e.g., both mention position-based 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?
Given the tool's complexity (7 parameters, multiple modes, and a destructive operation) and the absence of schema descriptions, this description is notably complete. It covers all parameters, mode semantics, and differentiates from a sibling tool. Minor omissions include edge-case behavior (e.g., when no notes match rest positions) and explicit reliance on undo tools, but the provided information is sufficient for most usage 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 provides comprehensive parameter documentation despite the schema having 0% coverage. It gives meaningful examples, such as rest_positions '0,1,2,3' or '1.5,3.5', explains tolerance_beats in musical terms (32nd/16th note), details each mode's behavior, and specifies the condition for shorten_neighbors. This fully compensates for the empty 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 tool's function with a specific verb and resource: 'Insert rests at specified beat positions by removing notes.' It further distinguishes itself from the sibling tool thin_notes by emphasizing its positional approach, making its purpose unambiguous and contextually unique.
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 contrasts this tool with thin_notes, stating that unlike thin_notes (which removes by interval/velocity/random strategy), this works positionally. This provides clear guidance on when to choose this tool over an alternative, even though it does not explicitly say '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.
mcp_opendaw_invert_chord_notesA
Invert a chord at a specific position — move bottom N notes up an octave (or top N down).
A chord inversion (voicing change) rearranges which chord tone is lowest without changing the chord itself. 1st inversion: the 3rd is in the bass. 2nd inversion: the 5th is in the bass. This tool finds notes at a given beat position, groups them as a chord, and moves the bottom N notes up an octave (or top N down).
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index chord_position: Beat position of the chord to invert inversion: Number of notes to invert (1=first inversion, 2=second inversion, 3=third for 7th chords) direction: "up" = move bottom notes up an octave (standard), "down" = move top notes down an octave (drop voicing) Returns: JSON with notes_inverted, original pitches, new pitches, chord root.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | up | |
| inversion | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| chord_position | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently describes the mechanics: finds notes at a beat position, groups them as a chord, and moves bottom/top notes by an octave. It also discloses the return format. However, it does not address edge cases (e.g., what happens if no chord is detected) or explicitly state that the operation modifies the region, though this is 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?
The description is well-structured with a summary, a theoretical explanation, an Args section, and a Returns section. It is somewhat verbose due to the music-theory paragraph, but each section serves a purpose and the content is not redundant. It earns its length without being bloated.
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 transformation, all parameters, and the return JSON fields (notes_inverted, original/new pitches, chord root). It is reasonably complete for a tool of this complexity, though it lacks explicit edge-case behavior (e.g., handling no notes at the position, mono vs. polyphonic detection, or interaction with other regions). An output schema exists, so return details are partly redundant, but the description still adds value.
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 0% description coverage, so the description must compensate. The 'Args' section provides detailed meanings for all six parameters, including examples for inversion (1, 2, 3) and direction ('up'/'down'). This fully bridges the gap left by the schema, making parameter semantics exceptionally clear.
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 action: 'Invert a chord at a specific position — move bottom N notes up an octave (or top N down).' This clearly states the verb, resource, and scope. It also distinguishes itself from sibling tools like invert_notes by specifying chord inversion (voicing change) versus melodic inversion.
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 the tool is used (to change chord voicing by moving notes up/down an octave) but does not explicitly mention alternatives or exclusions, such as using invert_notes for melodic inversion. The musical explanation implies the use case but stops short of contrasting with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_invert_notesA
Invert melody around a pitch axis — mirror reflection.
Each note's pitch is reflected around the axis: newPitch = 2*axis - oldPitch. Example: with axis=60 (C4), C4(60)→C4(60), D4(62)→Bb3(58), E4(64)→Ab3(56).
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track). axis: Pivot pitch for inversion (default 60 = C4). Notes equidistant from axis on opposite sides swap. Use the first note's pitch for tonal inversion.
Returns count of notes inverted and notes skipped (out of MIDI range).
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 provides the transformation formula, an example, and states that out-of-MIDI-range notes are skipped, plus what the return value contains (count of notes inverted and skipped). It implies the mutation of notes through 'each note's pitch is reflected' but does not explicitly state that notes are permanently modified in the project, though this is evident from the 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 well-structured: a one-line summary, the mathematical formula, a concrete example, parameter definitions, and return information. Every sentence earns its place; there is no filler or redundancy, and the example clarifies the transformation in an efficient way.
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 (4 parameters, transformation with edge cases) and the presence of an output schema, the description covers the essential aspects: what it does, how to specify targets, default behavior, and return info. It lacks explicit prerequisites (e.g., requiring a note track to exist) but that is a generic assumption in this DAW context. Overall, it is a complete and self-sufficient description for an agent to select and invoke 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?
Schema description coverage is 0%, so the description must fully clarify parameters. It does so for all four: unit_index (AU index), track_index (Note track index), region_index (Region index, -1 = all regions), and axis (Pivot pitch, default 60, with usage tip). The term 'AU index' is terse/domain-specific, but overall the description adds significant meaning beyond the schema's bare 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 opens with a specific verb+resource: 'Invert melody around a pitch axis — mirror reflection.' It clearly distinguishes from sibling tools like transpose_notes (pitch shift by interval) and rotate_notes (circular rotation) by defining the exact mathematical operation (newPitch = 2*axis - oldPitch) with a concrete example. The scope 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 thoroughly explains the operation and parameter semantics, including defaults and the region_index=-1 special case for 'all regions on the track.' However, it does not explicitly contrast this tool with alternatives (e.g., transpose_notes) for when a user would want mirror inversion versus a simple transposition, so the guidance is clear but not explicitly exclusive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_audio_busesARead-only
List all audio buses in the project (primary output + FX buses).
Returns bus index, name, enabled state, and the associated audio unit index.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint already provided, the description adds useful context: the precise scope of what is listed (primary output + FX buses) and the exact return fields (bus index, name, enabled state, audio unit index). It is consistent with the annotation and discloses no 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 concise, well-structured sentences: the first states the primary action and scope, the second lists return fields. No 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?
For a zero-parameter read-only list with an output schema, the description conveys purpose, scope, and return contents. It omits minor details like behavior when no buses exist, but that is adequately covered by the output schema and the simplicity of the operation.
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 burden on the description. Baseline for zero-parameter tools is 4, which is met; no parameter explanation is necessary.
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 all audio buses') and the resource ('audio buses in the project'), with explicit scope ('primary output + FX buses'). It also enumerates the returned fields, distinguishing it from sibling tools that mutate, enable, or remove buses.
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 use as a read-only enumeration ('List all audio buses'), but does not explicitly contrast with other tools that might provide similar or overlapping information (e.g., get_mixer_state, get_project_state). No when-to-use or when-not-to-use guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_audio_regionsARead-only
List all audio regions with file name, position, and duration.
unit_index: Audio unit index. track_index: Specific audio track (-1 = all audio tracks).
Returns list of regions with: region_index, track_index, position_beats, duration_seconds, file_name.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that this is a safe, non-mutating operation. The description aligns with this ('List') without adding additional behavioral context such as error conditions, sorting, or limits. Since annotations cover the safety profile, a middle score is appropriate, but the description doesn't enrich behavioral transparency beyond the annotation.
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: a one-sentence purpose, followed by parameter definitions and a clear list of return fields. No filler words or redundant information. 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 read-only list operation, this description is complete. It covers the purpose, parameters (including the sentinel value), and return fields, giving the agent everything needed to invoke the tool and interpret the results. The low complexity and presence of an output schema further reduce the need for additional context. No significant 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?
The schema provides no descriptions for the parameters (0% coverage), so the description carries the full burden. It clearly explains both unit_index and track_index, and crucially documents the special value '-1' for track_index meaning 'all tracks'. This adds significant meaning beyond the bare schema names and fully compensates for the missing 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 begins with a clear, specific verb and resource: 'List all audio regions with file name, position, and duration.' It distinguishes itself from sibling list tools (e.g., list_note_regions) by explicitly targeting audio regions and describing the relevant fields. 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 provides clear context for when to use this tool: when you need to list audio regions. It also clarifies parameter usage, especially the sentinel value '-1' for track_index to target all audio tracks. However, it doesn't explicitly mention alternatives or when-not-to-use conditions, so it falls slightly 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.
mcp_opendaw_list_automatable_fieldsARead-only
List all automatable parameter fields on an instrument (or specific Playfield sample).
Shows which fields support Pointers.Automation — only these can be automated.
unit_index: Audio unit index containing the instrument. sample_index: For Playfield, which sample slot (-1 = top-level instrument).
Returns field names with current values and whether they're automatable.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| sample_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description reinforces this by saying 'List' and describing return metadata. It adds context about what the tool returns (field names, current values, automatable status) and clarifies 'supports Pointers.Automation'. No contradiction, but the description is not overly detailed about edge cases.
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, with three short paragraphs: purpose, automation relevance, parameter explanations, and return value summary. Every sentence adds value without 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 output schema, the description doesn't need to detail return fields; it summarizes them. The tool is simple (list fields) and the description covers purpose, parameters, and output, making it complete for an agent to select and 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?
Schema coverage is 0% but the description fully explains both parameters: 'unit_index' is the audio unit index containing the instrument, and 'sample_index' is for Playfield sample slots with default -1 for top-level. This adds meaningful semantics 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?
The description uses a specific verb ('List') and identifies the exact resource ('automatable parameter fields on an instrument or specific Playfield sample'). It clearly differentiates from sibling tools like list_instrument_params and list_effect_parameters by focusing on automatable fields only.
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 this tool: to discover which fields support automation ('only these can be automated'). It also clarifies context for sample_index with Playfield. However, it does not explicitly mention alternatives or exclusions, so it earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_automation_eventsARead-only
List automation events (ValueEventBox) on a unit's automation tracks.
Finds all Value-type tracks (automation) on the given audio unit and returns their automation points: position (beats), value (0-1), interpolation type.
unit_index: Audio unit index. track_index: Specific automation track (-1 = all automation tracks on the unit).
Returns list of tracks with their automation events.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that the tool filters Value-type tracks, returns automation points with specific attributes, and interprets track_index=-1 as 'all tracks'. This adds meaningful behavioral context without contradicting the read-only annotation.
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 a one-sentence summary, followed by concise explanatory details. It avoids redundancy and every sentence contributes meaningful information. The structure is clean and appropriately sized for the tool's complexity.
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 what the tool does, parameter semantics, and return value shape. Given an output schema exists and the tool is a simple read-only listing operation, the description provides sufficient context. Minor gaps like error behavior for invalid indices 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?
Schema description coverage is 0%, but the description fully explains both parameters: unit_index is the audio unit index, and track_index specifies a specific automation track or -1 for all. This compensates entirely 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 tool lists automation events (ValueEventBox) on a unit's automation tracks, with specific details about returning position, value, and interpolation type. This distinguishes it from sibling tools like list_automation_events_detail (which likely provides more detail) and get_automation_value (which fetches a single value).
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 on how to use the tool: it requires unit_index and track_index, and explains that track_index=-1 selects all automation tracks. Though it does not explicitly mention alternatives or when not to use this tool, the parameter semantics give sufficient usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_automation_events_detailARead-only
List all automation events on a value track with full detail — position, value, interpolation.
More detailed than list_automation_events — includes interpolation type and curve slope.
unit_index: AU index. track_index: Value (automation) track index.
Returns event list with positions in beats, values, and interpolation details.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description is consistent, describing a read-only listing operation. It adds behavioral context beyond the annotation by specifying return content ('Returns event list with positions in beats, values, and interpolation details') and units. No contradiction; lacks mention of error cases or scale but sufficient for a list 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 tight and well-structured: purpose sentence, comparison, parameter explanations, and return summary. Every sentence earns its place with no repetition 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 covers purpose, differentiation, parameter semantics, and return format. The output schema exists, so return details are structured elsewhere. Minor gaps: no mention of error conditions or handling of empty/invalid tracks, but for a simple list tool this is acceptable given the annotations and 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 has 0% description coverage, but the description compensates by clarifying 'unit_index: AU index' and 'track_index: Value (automation) track index.' This adds domain meaning beyond the raw integer type, though not exhaustive about lookup methods.
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: 'List all automation events on a value track with full detail — position, value, interpolation.' It also distinguishes itself from the sibling tool by noting 'More detailed than list_automation_events — includes interpolation type and curve slope.' This is a specific verb+resource+scope with explicit 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?
Explicitly frames when to use this tool vs the alternative: 'More detailed than list_automation_events — includes interpolation type and curve slope.' The parameter explanations also clarify which track/unit to target, giving clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_clipsARead-only
List clips (session view / clip launcher) on tracks.
Clips live on TrackBox.clips (ClipCollection). Three types:
NoteClipBox: MIDI clips (index, duration, mute, label, hue, triggerMode)
AudioClipBox: Audio clips (same + file, gain, playMode)
ValueClipBox: Automation clips (same + events)
unit_index: Audio unit index. track_index: Track index (-1 = all tracks on the unit).
Returns list of clips with type, index, duration, mute, label, loop.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds behavioral detail: clip types (NoteClipBox, AudioClipBox, ValueClipBox), their fields, storage location (TrackBox.clips), and track_index=-1 semantics. This goes beyond the annotation's safety flag.
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?
Structured with a one-line purpose, bullet-pointed clip types, and short parameter/return lines. No filler; each section adds necessary context.
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 list tool with output schema, the description covers purpose, parameters, and return fields. It lacks error handling or ordering details, but these aren't critical for a listing operation.
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 only titles with 0% coverage. Description explains unit_index as 'Audio unit index' and track_index as 'Track index (-1 = all tracks on the unit)', providing the special sentinel value. This is essential context missing from 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?
Description opens with 'List clips (session view / clip launcher) on tracks' — a specific verb+resource. It distinguishes from arrangement-region tools by explicitly scoping to session view/clip launcher. The three clip types further clarify what 'clip' means.
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 context that clips live on TrackBox.clips and explains track_index=-1 means all tracks, but it doesn't explicitly state when to prefer this tool over list_tracks or list_audio_regions. The session-view scoping implicitly tells the agent when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_effect_parametersARead-only
List all parameters of an effect on an audio unit.
unit_index: Audio unit index. effect_index: Effect position in the chain (0-based, from add_effect return).
Returns parameter names, current values, units, and ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is present, and the description adds value by stating what the tool returns: 'parameter names, current values, units, and ranges.' This goes beyond the annotation to disclose output structure, but does not detail error behaviors or edge cases.
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: a one-sentence purpose, two line-item parameter definitions, and a return summary. No extraneous information is present; 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?
Given the tool's simplicity, the presence of a readOnlyHint, and an output schema, the description covers purpose, parameter semantics, and return content adequately. It is sufficient for an agent to select and 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?
Schema coverage is 0%, yet the description explicitly defines both parameters: 'unit_index: Audio unit index' and 'effect_index: Effect position in the chain (0-based, from add_effect return).' This fully compensates 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 opens with a specific verb and resource: 'List all parameters of an effect on an audio unit.' This clearly differentiates it from sibling tools like list_midi_effect_params or list_instrument_params, which target different effect 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?
The description provides useful context by specifying that effect_index is 0-based and comes from add_effect return, implying a prerequisite call. However, it does not explicitly state when to use this tool over alternatives or provide exclusion criteria, 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.
mcp_opendaw_list_effectsARead-only
List all available audio and MIDI effect types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already conveys the safety profile. The description adds that the tool returns a list of effect types, but nothing beyond that. Given the annotation coverage, this is adequate.
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 clear sentence, front-loaded with the action and resource. 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, read-only tool with an output schema, the description is complete. It states what is listed (audio and MIDI effect types) and the annotation covers safety. 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 tool has zero parameters, so there are no parameter semantics to explain. The description is not burdened by parameter details, and the 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 and resource: 'List all available audio and MIDI effect types.' It clearly states what it returns and implicitly differentiates from sibling tools like mcp_opendaw_list_midi_effects by including both audio and MIDI.
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. The sibling mcp_opendaw_list_midi_effects likely overlaps, but the description does not mention it or clarify when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_genre_profilesARead-only
List all available genre reference profiles for mix analysis.
Each profile defines target LUFS, spectral balance, stereo width, and dynamic range for professional mixes in that genre.
Use compare_to_profile() to check your mix against any of these.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is already declared, so the read-only behavior is covered. The description adds context about profile contents (LUFS, spectral balance, stereo width, dynamic range), which sets expectations for returned data. It does not contradict annotations, but it doesn't go beyond that to discuss prerequisites 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?
The description is three short sentences with no redundancy. It leads with the purpose, then explains what profiles contain, and finishes with a workflow pointer. 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 zero-parameter list tool with an output schema present, the description is complete. It explains the tool's role, the profile definition, and the typical follow-up action. The output schema handles return-value details, so no further description 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 tool has zero parameters, so the input schema is fully documented (coverage 100%). Baseline 4 applies, and no additional parameter semantics are necessary or provided.
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 ('genre reference profiles'), and clarifies the purpose ('for mix analysis'). It clearly distinguishes itself from sibling tools like compare_to_profile and analyze_mix by indicating this is the listing 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?
The description explicitly directs the agent to 'Use compare_to_profile() to check your mix against any of these,' providing clear guidance on when to use which tool. This is an explicit alternative/next-step reference, matching the high-scoring pattern from the calibration example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_instrument_paramsARead-only
List all parameters of the instrument connected to an audio unit.
unit_index: Audio unit index (-1 = auto-detect first non-master AU with an instrument).
Returns instrument type, all parameter fields with values, units, and constraints. Works with: Vaporisateur (cutoff/resonance/ADSR/etc), Tape (flutter/wow/noise/saturation), Nano (volume/release), Soundfont (presetIndex), MIDIOutput (channel), Playfield, Apparat.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the description adds value by explaining the unit_index behavior (-1 auto-detect first non-master AU) and describing the return content (instrument type, parameters with values/units/constraints). No side effects are mentioned, which is consistent with read-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 well-structured with separate lines for purpose, parameter semantics, and return details. Each sentence is informative and 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 the simple one-parameter tool, an output schema, and read-only annotation, the description covers purpose, parameter semantics, supported instruments, and return content. It is sufficiently complete for an agent to select and 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 schema provides no parameter descriptions (0% coverage), but the description explains unit_index's meaning and the special -1 value, adding critical context for correct invocation. This fully compensates for the schema 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 lists instrument parameters for an audio unit, with a specific verb and resource. It lists compatible instruments, which helps distinguish from effect or MIDI effect tools, but does not explicitly differentiate from sibling tools like list_vaporisateur_params.
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 use for inspecting instrument parameters and notes compatible instrument types, but gives no explicit guidance on when to choose this over alternative list tools (e.g., list_effect_parameters, list_vaporisateur_params) or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_markersARead-only
List all timeline markers with positions and labels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, and the description reinforces this by using 'List'. It adds that the output includes positions and labels, which is useful behavioral context about the result contents. No additional limitations or side effects are disclosed, but for a read-only operation this is 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, starting with the action verb, and includes only necessary information about scope and output. 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?
Given the tool's minimal complexity (no parameters), existing readOnly annotation, and presence of an output schema, the description fully covers what the agent needs to know: it lists all timeline markers with their positions and labels. 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?
With zero parameters, the description is not required to add parameter semantics. The schema is empty, and the description correctly mentions no inputs 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 specifies the verb 'List', the resource 'timeline markers', and the scope 'all', with the output content 'positions and labels'. This clearly distinguishes it from sibling marker tools like add_marker, delete_marker, and list_warp_markers.
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 a read-only usage context but does not explicitly state when to choose this over alternatives such as list_warp_markers or list_automation_events. No exclusion criteria are provided, but the simplicity of the tool makes 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.
mcp_opendaw_list_midi_effect_paramsARead-only
List all parameters of a MIDI effect with current values.
unit_index: Audio unit index. effect_index: MIDI effect position in the chain (0-based).
Returns parameter names, values, units, and constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, which already signals a safe read operation. The description adds behavioral detail by stating it returns 'parameter names, values, units, and constraints' and specifies that values are current. It does not contradict the annotations and provides useful output expectations beyond the structured 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?
The description is compact and front-loaded with the core purpose. It adds parameter explanations and a one-line return summary, all in four short lines. No unnecessary words 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 two-parameter read-only tool with an output schema, the description covers the essential usage and return semantics. It does not discuss error cases or prerequisites, but the simplicity of the operation and the existing readOnlyHint annotation make that 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?
Schema coverage is 0% and the description compensates by explaining both parameters: 'unit_index: Audio unit index' and 'effect_index: MIDI effect position in the chain (0-based).' The effect_index explanation is especially clear, though unit_index could be slightly more precise about what 'audio unit' refers 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 begins with a specific verb and resource: 'List all parameters of a MIDI effect with current values.' This clearly distinguishes the tool from siblings like list_midi_effects or list_effect_parameters by specifying it targets MIDI effect parameters, not the effects themselves.
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 for when to use the tool: when you need parameter names, values, units, and constraints for a MIDI effect. It also explains the parameters needed to target the correct effect. However, it does not explicitly mention alternatives or provide exclusion criteria, 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.
mcp_opendaw_list_midi_effectsARead-only
List all available MIDI effect types.
MIDI effects process note data before it reaches the instrument. They are inserted on the MIDI effect chain (au.midiEffects).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the read-only nature is known. The description adds meaningful domain context (MIDI effects process note data before reaching the instrument, and are inserted on au.midiEffects chain), which helps the agent understand the entity being listed. 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?
The description is three short sentences: the first front-loads the purpose, and the next two give essential domain context. Every sentence earns its place; no redundant or excessive 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?
For a simple zero-parameter list tool with output schema and read-only annotation, the description covers what the tool does, what MIDI effects are, and where they live. This is complete for the tool's complexity. The return format is covered by the 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 zero parameters, so the schema contains nothing to explain. The description correctly focuses on the purpose rather than parameter semantics. Baseline for 0 params is 4, and no further parameter info 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 uses a specific verb 'List' with a clear resource 'MIDI effect types' and states its scope ('all available'). It distinguishes from sibling tools like mcp_opendaw_list_effects (which likely lists audio effects) and mcp_opendaw_add_midi_effect (which adds rather than lists).
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 MIDI effects are and where they are inserted (au.midiEffects), implying when this listing would be useful, but it does not explicitly state when to use this over alternatives or provide exclusions. No sibling tool is named as a comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_midi_output_devicesARead-only
List all MIDI output devices registered in the project (hardware MIDI outputs).
Returns id, label, delayInMs, sendTransportMessages for each device.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds the scope (project-registered hardware outputs) and return fields, but does not disclose any further behavioral traits such as ordering, performance, or side effects. This aligns with the calibration sample where a read-only tool with additional context scores 3.
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 compact two sentences: the first sentence states the purpose and scope, the second lists the return fields. Every word contributes value; no 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?
For a simple, zero-parameter listing tool with readOnlyHint=true and an output schema present, the description fully captures the essential information: what is listed, the scope, and what is returned. There is no significant missing 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?
With zero parameters, the schema coverage is 100% and there is nothing to add about parameter semantics. The description focuses on return fields, which is beyond the schema's empty properties, so it earns the baseline 4 for a no-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 clearly states the action ('List'), the resource ('MIDI output devices'), and the scope ('registered in the project', 'hardware MIDI outputs'). It also enumerates the return fields, fully distinguishing it from any sibling listing 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 provides clear context by specifying it lists hardware MIDI outputs registered in the project, which implies when this tool should be used. However, it does not explicitly name alternatives or state when not to use it, so it misses the highest tier of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_modular_connectionsARead-only
List all connections (patch cables) in a Modular device.
au_index: Audio unit index. effect_index: Effect index within the AU.
Returns connections with source and target module/connector info.
| Name | Required | Description | Default |
|---|---|---|---|
| au_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is established. The description adds that it returns connections with source/target info, which is useful but not deeply behavioral. No contradictions with annotations, and the added return description is minimal beyond what the output schema likely provides.
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, front-loaded with the main purpose, and uses clear line breaks for parameter explanations. Every sentence serves a purpose with no extraneous content.
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 list operation, the description covers the tool's purpose, parameters, and return format. With output schema present and annotations for safety, there are no significant gaps in 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 description explicitly explains both parameters: 'au_index: Audio unit index' and 'effect_index: Effect index within the AU.' This adds meaning that the schema lacks, since the schema only lists titles with no descriptions. It fully compensates for the 0% schema description 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 states 'List all connections (patch cables) in a Modular device' with a specific verb and resource, making it clear this tool retrieves connection data. It distinguishes itself from sibling tools like list_modular_modules and list_modular_devices by focusing on connections.
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 context by indicating the tool operates on a Modular device and requires au_index and effect_index, implying when it applies. However, it does not explicitly mention alternatives or when not to use this tool, so usage guidance remains 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.
mcp_opendaw_list_modular_devicesARead-only
List all Modular audio effect devices in the project.
Returns a list of modular devices with their AU index, label, and module/connection counts. Modular is a patchable modular synthesizer inside an audio effect slot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already signals safety. The description adds useful behavioral context by explaining the return payload (AU index, label, module/connection counts) and defining what a Modular device is. This goes beyond annotation coverage without contradicting it.
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 concise sentences with the primary action front-loaded. The first sentence states the function, the second summarizes the return, and the third provides necessary domain context. 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 (no params, read-only, has output schema). The description covers the purpose, return data, and domain definition sufficiently for an agent to select and invoke it. No gaps remain for this low-complexity 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 tool has 0 parameters, so schema coverage is trivially 100% and the baseline is 4. The description adds scope details ('all', 'in the project') that clarify the implicit result set, which is valuable since there are no parameters to constrain the query.
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 'List all Modular audio effect devices in the project' – a specific verb ('List') and resource ('Modular audio effect devices') with explicit scope. It distinguishes this from sibling tools like list_modular_modules and list_modular_connections by focusing on devices as higher-level units.
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 a clear context: use this to enumerate all Modular devices in the project. It doesn't explicitly mention alternatives or exclusions, but the scope is unambiguous and no competing tool serves this exact purpose among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_modular_modulesARead-only
List all modules in a Modular device.
au_index: Audio unit index. effect_index: Effect index within the AU.
Returns modules with their type, label, x/y position, inputs, outputs, and parameter values. Module types: gain, delay, multiplier, audio-input, audio-output.
| Name | Required | Description | Default |
|---|---|---|---|
| au_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds useful behavioral context by specifying the return content (type, label, x/y position, inputs, outputs, parameter values) and enumerating module types (gain, delay, multiplier, audio-input, audio-output). This goes beyond the annotation and helps the agent understand what to expect from the call.
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, starting with the core purpose in the first sentence. It then provides parameter details and return information without any redundant fluff. Every sentence earns its place, making it an example of efficient writing.
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?
An output schema exists, so the description does not need to detail every return field. It already covers the input parameters and return content. A minor gap is that it does not mention how to obtain au_index/effect_index (e.g., via list_modular_devices), but for a straightforward read-only listing tool, the description 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 input schema has zero descriptions for its two parameters, but the description compensates fully by defining au_index as 'Audio unit index' and effect_index as 'Effect index within the AU.' This provides essential semantic meaning that the schema lacks, making the parameters self-explanatory.
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 'List all modules in a Modular device,' which clearly states the action (list), the resource (modules), and the scope (in a Modular device). It distinguishes itself from sibling tools like list_modular_devices (lists devices) and list_modular_connections (lists connections) by specifically targeting modules within a device.
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 parameters (au_index, effect_index) which implies when to use the tool, but it does not explicitly state when to use this over alternatives like list_modular_connections or provide exclusion criteria. The usage context is implied rather than explicit, so a score of 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_note_regionsARead-only
List all note regions with position, duration, and note count.
unit_index: Audio unit index (-1 = all AUs). track_index: Specific note track (-1 = all note tracks).
Returns list of regions with: region_index, unit_index, track_index, position_beats, duration_beats, label, note_count.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a read operation. The description adds value by specifying the output fields returned (region_index, unit_index, track_index, position_beats, duration_beats, label, note_count) and the meaning of -1 for both parameters, which goes beyond the annotation. No contradictions with the annotation were found.
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: the first sentence states the tool's purpose, followed by two concise parameter explanations and a clear list of return fields. Every line contributes useful information with no 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?
For a straightforward list operation, the description covers the purpose, parameter behavior, and return structure. Since an output schema exists and the tool is simple, there are no significant gaps. The description is sufficiently complete for an agent to select and 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 input schema provides no descriptions for unit_index and track_index (0% coverage), but the description fully compensates by explaining each parameter and the special -1 value indicating 'all'. This is essential semantic information that the schema lacks.
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 action ('List all note regions'), the resource ('note regions'), and the key returned attributes ('position, duration, and note count'). This distinguishes it from sibling tools like list_notes and list_audio_regions, which operate on different entities.
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 concrete parameter semantics: unit_index and track_index, with -1 meaning 'all'. This gives clear context for invoking the tool correctly. However, it does not explicitly compare to alternatives or state when to prefer this over list_notes/list_audio_regions, so it misses the higher bar for explicit exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_notesARead-only
List all note events within a region.
Returns each note with position (beats), duration (beats), pitch (MIDI 0-127), velocity (0-1), cent, and chance (0-100).
unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region to list notes from (0-based).
Returns list of notes sorted by position.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks this as safe, and the description does not contradict that. Beyond the annotation, it adds valuable behavioral context: unit_index -1 searches all audio units, and results are sorted by position. It also discloses the exact return fields, which helps set expectations. This adds genuine value beyond the annotation.
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: a one-line purpose, a brief return format section, and a parameter list. Every sentence adds necessary information, with no fluff. The line breaks separate logical components, making it easy to scan. This is a model of concise technical writing.
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 list tool, the description fully covers the purpose, all parameters, return value semantics (position, duration, pitch, velocity, cent, chance), and sorting behavior. An output schema exists, so the return format is further specified, but the description already provides the key fields. No significant gaps remain for an agent 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 schema has 0% description coverage, so the description carries the burden. It explains all three parameters: unit_index (-1 = search all AUs), track_index (note track within the AU), and region_index (0-based region). However, track_index is slightly ambiguous regarding whether it is 0-based or scoped within the AU; the -1 wildcard behavior is only explained for unit_index, not track_index. Still, the description provides substantive meaning beyond the bare schema titles.
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 all note events within a region.' It specifies the resource (note events within a region) and distinguishes itself from siblings like list_note_regions and list_automation_events. The verb 'list' is specific 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?
Usage is implied: the description indicates this tool lists note events within a region, so an agent can infer when to use it. However, it does not explicitly name alternatives (e.g., list_note_regions for regions) or provide when-not-to-use guidance. The context clues from siblings help, but the description itself offers no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_playfield_samplesARead-only
List all drum pads (samples) on a Playfield drum machine.
unit_index: Audio unit index (-1 = auto-detect Playfield).
Returns list of pads with MIDI note, enabled state, and effects.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds useful behavioral detail by specifying what the returned pad list includes (MIDI note, enabled state, effects). It does not contradict annotations and gives enough transparency for a read-only list 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 compact and front-loaded: a one-sentence purpose, a parameter explanation, and a return summary. Every sentence contributes valuable information without 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 the simple nature of the tool and presence of an output schema, the description covers the essential parameter and return categories. It could mention error conditions or default behaviors, but for a listing operation 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?
Schema description coverage is 0%, but the description fully explains the single parameter 'unit_index' including the special -1 auto-detect value. This compensates for the missing schema documentation and is sufficient for one required 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?
Description uses a specific verb ('List') and clear resource ('drum pads (samples) on a Playfield drum machine'). It distinguishes from sibling tools like list_samples by focusing on Playfield-specific pads and explicitly mentions the returned fields (MIDI note, enabled state, effects).
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 querying Playfield pads but does not explicitly state when to use this tool over alternatives like list_samples or set_playfield_sample_enabled. The unit_index explanation with auto-detect gives some context but lacks exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_samplesARead-only
List all audio file samples used in the project.
Returns sample UUIDs and metadata for each audio file referenced in the project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is present, so the safety profile is already known. The description adds that it returns UUIDs and metadata, which is useful context, but it does not disclose additional behavioral traits such as pagination or performance implications. It does not contradict 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?
The description is two short, front-loaded sentences with no redundant wording. Each sentence adds value: the first defines the action and scope, the second specifies the return content. 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?
Given the tool's simplicity (no parameters, read-only, output schema present), the description is complete. It clearly states what is listed (all audio file samples used in the project) and what is returned (UUIDs and metadata), leaving no ambiguity about the tool's 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 tool has 0 parameters, and the schema is empty. Per the rubric, the baseline for 0 parameters is 4. The description does not need to explain parameter semantics since none exist, and it correctly focuses on the 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 a specific verb ('List') and resource ('audio file samples used in the project'), and specifies the scope ('all'). It distinguishes from sibling tools like list_playfield_samples by focusing on samples 'used in the project'.
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 one needs to list project samples, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. No comparison to list_playfield_samples or other similar tools is given, leaving the context inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_script_paramsARead-only
List @param declarations on a scriptable device with full mapping info.
Each parameter includes: label, index, current value, default value,
min, max, mapping type (unipolar/linear/exp/int/bool), and unit.
Mapping info is parsed from // @param <name> <default> <min> <max> <type> <unit>
declarations in the code — the code is the single source of truth.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| device_type | Yes | ||
| device_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds valuable context: mapping info is derived from code declarations, not runtime introspection, and the code is the single source of truth. This goes beyond the annotation and helps the agent understand data provenance.
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; the first states the core purpose and the second adds essential detail about output fields and data source. 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?
Output schema and return values are covered, and the description explains what the list contains. However, without any param semantics, the tool is incomplete for an agent that needs to know how to specify a scriptable device. This is a noticeable gap for a 3-required-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 description coverage is 0% and the description does not explain device_type, unit_index, or device_index. The agent is given no semantic meaning for any of the three required parameters, making correct invocation largely guesswork.
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+resource: 'List @param declarations on a scriptable device with full mapping info.' It details exactly what is returned (label, index, current value, min, max, etc.) and distinguishes itself from sibling list tools by targeting scriptable device parameters.
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 (parsed from `// @param` declarations, code is source of truth) but does not explicitly state when to use this tool over alternatives like list_effect_parameters or list_instrument_params, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_script_samplesARead-only
List @sample declaration slots on a scriptable device.
Each sample slot is a WerkstattSampleBox with: label, index, file (pointer to AudioFileBox).
Sample slots are auto-created from // @sample <name> declarations in the code.
The file pointer is null until a sample is loaded.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| device_type | Yes | ||
| device_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses useful behavioral details: each slot is a WerkstattSampleBox with label, index, and a file pointer, and the pointer is null until a sample is loaded. This adds meaningful context about the return structure and null-state 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, with three sentences that each add value: the main purpose, the slot structure, and the auto-creation/null behavior. It is appropriately front-loaded and free of 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 covers the domain concepts and return semantics well, and the presence of an output schema helps with the return side. However, the complete lack of parameter explanations leaves a significant gap in how to invoke the tool, especially with three required parameters and no schema descriptions.
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 cover 0% of the three required parameters, and the description does not compensate. It mentions 'scriptable device' but never explains how device_type, unit_index, or device_index map to that concept. The agent is left with no guidance on how to fill the required arguments.
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 'List @sample declaration slots on a scriptable device', which uses a specific verb and resource, and distinguishes this tool from siblings like mcp_opendaw_list_samples by focusing on @sample declarations and scriptable devices. The additional details about WerkstattSampleBox slots make the scope 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 provides clear context for when to use the tool (inspecting sample slot declarations on a scriptable device) and clarifies that slots are auto-created from code declarations. It does not explicitly name alternatives or exclusion criteria, but the context is strong enough to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_sendsARead-only
List all aux sends on an audio unit.
unit_index: Audio unit index to inspect.
Returns list of sends with: send_index, target_bus_name, send_level_db, routing.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true in annotations, the safety profile is already disclosed. The description adds value by specifying the return shape (send_index, target_bus_name, send_level_db, routing) and confirms the read-only nature by saying 'List all'. No contradictions found.
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, front-loaded with the main action, followed by parameter explanation and return format. Each sentence serves a purpose with no 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?
Given the tool's simplicity (one parameter, one action) and the presence of an output schema, the description fully covers the purpose, parameter meaning, and return content. It is complete and self-contained.
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 the type and name for unit_index, with 0% description coverage. The description compensates by stating 'Audio unit index to inspect', providing the necessary semantic context for the single 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 'List all aux sends on an audio unit' — a specific verb, resource, and scope (the audio unit). It distinguishes itself from sibling tools like create_send or set_send_level by focusing on listing, and from list_audio_buses by referencing sends rather than buses.
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 for when to use this tool: it lists sends on a given audio unit. It does not explicitly name alternatives or exclusion conditions, but the operation is self-evident and complements the related send-management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_signature_changesARead-only
List all time signature changes on the timeline's signature track.
Returns each signature event with position (beats), numerator, and denominator.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already covers the read-only safety profile. The description adds value by disclosing the return structure (position in beats, numerator, denominator), which assists in understanding what the tool outputs beyond the annotation. This is meaningful behavioral context, though it doesn't cover sorting or limits.
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, no filler. It front-loads the main action in the first sentence and immediately explains the return data in the second. 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 simple, zero-parameter, read-only list tool with an output schema present, the description is complete. It names the specific source (signature track), the scope (all changes), and the key return fields (position, numerator, denominator). No further context is needed given the simplicity and annotation coverage.
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 input schema is empty with 100% coverage. The description correctly focuses on what the tool does rather than explaining nonexistent parameters. Per rubric, a zero-parameter tool gets a baseline of 4, and nothing in the description needs 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 tool's action ('List all time signature changes') with a specific resource ('the timeline's signature track') and even details the returned fields. However, it does not explicitly differentiate from the sibling tool get_signature_events, which could overlap in purpose, so it falls 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?
The description provides clear context: this is for retrieving all time signature changes on the signature track. It implies usage for inspection/read purposes, and the readOnlyHint reinforces that. But it does not mention alternatives or exclusions, such as when to use get_signature_events or list_tempo_changes instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_split_modesARead-only
List available stem separation modes with descriptions.
Returns all modes supported by mcp_opendaw_split_stems, with SDR scores and use-case recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation, so the description's burden is lighter. It adds value by noting the return includes SDR scores and use-case recommendations, but it does not disclose response size, ordering, or performance characteristics. This is acceptable given the annotation, but 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?
The description is two concise sentences that immediately state the action ('List'), the target resource, and the key return contents. Every sentence contributes meaningful information, with no repetition of the schema or annotations.
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 informational tool with an output schema, the description covers the essential aspects: purpose, scope (all modes), and return value highlights. The explicit link to mcp_opendaw_split_stems gives it the necessary context for an agent to decide when to call 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 and the input schema is empty, so there is no parameter detail to add. The description correctly focuses on return value context (SDR scores and recommendations), which is more useful than parameter information 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?
The description clearly identifies the tool as 'List available stem separation modes with descriptions' and explicitly ties it to mcp_opendaw_split_stems. This distinguishes it from related tools like split_stems or export_stems by framing it as the informational counterpart, with a specific verb and resource.
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 establishes clear context: this tool returns all modes supported by mcp_opendaw_split_stems, implying it should be used to discover available separation modes before invoking split_stems. However, it does not explicitly state when not to use it or mention alternative tools, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_tempo_changesARead-only
List all tempo (BPM) changes on the timeline's tempo track.
Returns each tempo event with position (beats), BPM, and interpolation type. The tempo track uses normalized values mapped to minBpm..maxBpm (default 60..240).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the safe read-only nature, and the description adds useful behavioral context beyond that: it explains the return fields (position, BPM, interpolation type) and the normalized value mapping (minBpm..maxBpm, default 60..240). This goes beyond a bare 'list' statement and aids interpretation.
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 action, and contains no fluff. Every sentence adds meaningful information: the first states what it does, the second details the return values and a critical normalization caveat.
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 low complexity, the presence of an output schema, and readOnlyHint annotation, the description is complete. It covers the essential semantics: what is returned, the units (beats, BPM), and the normalization mapping which is crucial for correctly interpreting the BPM values. No gaps 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?
The tool has zero parameters, and the schema coverage is trivially 100%. Per the rubric, 0 params establishes a baseline of 4. The description adds no parameter-specific 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 clearly states the tool lists all tempo (BPM) changes on the timeline's tempo track, using the specific verb 'List' and naming the resource. This distinguishes it from siblings like get_tempo_at (which retrieves a single tempo) and list_signature_changes (which handles a different track 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 provides clear context that this tool is for enumerating tempo changes on the timeline, making its usage obvious. It doesn't explicitly mention when not to use it or name alternatives, but the purpose is unambiguous given the sibling tool names (e.g., get_tempo_at vs. list_tempo_changes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_tracksARead-only
List all tracks across all audio units with their type, effects, and regions.
Returns structured info: audio units with their tracks (audio/note/automation), effects chain, volume, panning, and region count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, which aligns with 'List'. The description goes beyond annotations by detailing the returned structure: audio units with tracks (audio/note/automation), effects chain, volume, panning, and region count. This adds useful behavioral context about the output, with no contradictions.
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?
Exactly two sentences: the first states the action and scope, the second summarizes the return details. Every word earns its place, with no redundancy or filler. The action is front-loaded in the first 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 read-only listing tool with no parameters and an output schema present, the description covers the essential aspects: what is listed (tracks across all audio units) and what is included (type, effects, regions, volume, panning, region count). It is complete for practical use, though it omits possible edge cases like empty projects or performance considerations.
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 empty schema is fully covered. Per the baseline for 0-param tools, the description does not need to explain any parameters and correctly focuses on the result. No room for additional 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?
The description clearly states 'List all tracks across all audio units with their type, effects, and regions' – a specific verb, resource, and scope. It distinguishes from sibling list tools (list_markers, list_notes, etc.) by focusing on tracks and their associated data, 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?
The description implies usage: when an agent needs an overview of all tracks and their properties. However, it provides no explicit guidance on when to use this tool versus other listing tools like list_note_regions or list_effects, nor any exclusions. It's a generic read-only listing context with only implied applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_transient_markersARead-only
List transient markers for an audio region's audio file.
Transient markers are auto-detected hit points in the audio. Useful for beat slicing and groove extraction.
unit_index/track_index/region_index: Audio region coordinates.
Returns array of transient positions (in samples) or empty if none.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states return behavior: 'Returns array of transient positions (in samples) or empty if none.' It also explains what transient markers are, adding context beyond the readOnlyHint annotation. No contradiction with the annotation exists.
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: the first sentence states the purpose, followed by a brief definition, use case, parameter guidance, and return value. Each sentence earns its place with no unnecessary verbiage.
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 listing tool with an output schema, the description covers the key aspects: what it lists, why it is useful, how to locate the region, and what to expect as output. It does not clarify whether sample positions are relative to the region or file, but that is a minor gap given the tool's simplicity.
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?
With 0% schema coverage, the description provides the only parameter context: 'unit_index/track_index/region_index: Audio region coordinates.' This gives a collective role for the three indices but does not individually explain their hierarchy or meaning. It offers minimal but non-zero 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 clearly: 'List transient markers for an audio region's audio file.' The verb 'List' is specific, and the resource 'transient markers' is well-defined as 'auto-detected hit points in the audio.' This distinguishes it from sibling tools like list_markers and list_warp_markers, which are simpler or different in 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?
It provides a clear usage context: 'Useful for beat slicing and groove extraction.' This tells the agent when the tool is appropriate. However, it does not explicitly state when not to use it or mention alternative tools (e.g., list_markers for manual markers), so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_value_regionsARead-only
List automation regions (ValueRegionBox) on value/automation tracks.
Finds all Value-type tracks (automation) and lists their regions with position, duration, loop settings, mute, and label.
unit_index: Audio unit index (-1 = search all AUs). track_index: Specific value track (-1 = all value tracks on the unit).
Returns list of automation regions.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the description adds value by explaining the -1 sentinel behavior for scanning all AUs and all value tracks, plus listing returned fields. No contradiction with annotations, and no destructive/concurrency concerns are relevant.
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: purpose, behavior, parameter explanations, and return type are each covered in one short line. No 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?
For a read-only list tool with two parameters and an existing output schema, the description covers the essential selection and invocation details. It explains parameter semantics, returned fields, and scope behavior sufficiently.
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 explicitly explains both parameters: unit_index and track_index, including the meaning of -1 as 'search all'. This fully compensates 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 states a specific verb ('List') and resource ('automation regions on value/automation tracks'), and further clarifies with 'ValueRegionBox'. This clearly distinguishes it from sibling listing tools like list_audio_regions or list_note_regions.
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 for when to use the tool: when you need region-level data (position, duration, loop, mute, label) on value/automation tracks. It does not explicitly name alternatives or exclusions, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_vaporisateur_paramsARead-only
Get full Vaporisateur synthesizer state: oscillators, LFO, noise, main params.
unit_index: Audio unit index (-1 = auto-detect Vaporisateur).
Returns:
oscillators: [{index, waveform, volume, octave, tune}]
lfo: {waveform, rate, sync, attack, decay, release}
noise: {volume, attack, decay, release}
main: cutoff, resonance, attack, release, filterEnvelope, decay, sustain, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, and the description adds meaningful context: the unit_index '-1 = auto-detect' behavior and a detailed breakdown of the returned state. This goes beyond the annotation by explaining what specific data will be returned and how to target the synth, though it does not address error cases like a missing Vaporisateur unit.
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 efficiently structured with a one-line summary, parameter explanation, and a bulleted return breakdown. The trailing 'etc.' is vague but does not significantly undermine the overall clarity; every major section 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 single-parameter read tool with an output schema and read-only annotation, the description covers the essential aspects: what state is retrieved, how to target the synth, and the structure of the response. It lacks only edge-case behavior (e.g., no Vaporisateur found), which is minor for a getter.
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 explicitly explains the only parameter: 'unit_index: Audio unit index (-1 = auto-detect Vaporisateur)'. This adds semantic value beyond the bare integer type, including the special sentinel value, making the tool usable.
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 'Get full Vaporisateur synthesizer state' which uses a specific verb and resource, clearly distinguishing it from sibling setters like set_vaporisateur_osc_param and generic getters like list_instrument_params. The listed sections (oscillators, LFO, noise, main) further clarify 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 context implies this tool is for reading all Vaporisateur parameters at once, but no explicit alternatives or exclusions are mentioned. An agent might not know when to prefer this over get_effect_state or list_instrument_params, though the specialized name and return structure give reasonable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_list_warp_markersARead-only
List warp markers on a time-stretched or pitch-stretched audio region.
Warp markers define the mapping between musical position (ppqn) and audio time (seconds). Used for tempo-matching audio regions.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index.
Returns warp marker list (position, seconds, isAnchor), or empty if no stretch mode.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds behavioral context by specifying the return format (position, seconds, isAnchor) and the empty result when no stretch mode is present. This goes beyond the annotation without contradicting it.
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, using short sentences with clear sectioning for parameters and return value. Every sentence adds value, and there is no redundant 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?
With an output schema present and simple list operation, the description covers purpose, usage, parameter meaning, and return behavior. It is sufficiently complete for an agent to select and 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?
Schema description coverage is 0%, but the description explicitly defines each parameter: 'unit_index: AU index', 'track_index: Track index within the AU', 'region_index: Audio region index'. This fully compensates for the missing 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 opens with 'List warp markers on a time-stretched or pitch-stretched audio region', which is a specific verb+resource statement. It further explains what warp markers are and distinguishes this from sibling tools like list_markers or list_transient_markers by specifying warp markers on stretched regions.
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 states 'Used for tempo-matching audio regions', providing clear context for when to use the tool. It also implies a precondition (time-stretched/pitch-stretched region), but does not explicitly mention exclusions or alternatives, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_load_audioA
Load an audio file (WAV/MP3/FLAC/OGG) into the DAW project.
file_path: Absolute path to the audio file on disk. If the file is inside the headless-daw/public/ directory, it will be fetched via URL (much faster for large files). Otherwise loaded via base64. name: Optional display name (defaults to filename).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the URL-vs-base64 loading behavior and performance implications, but does not clarify side effects (e.g., whether a track is created, overwrite behavior, or error handling). Some behavioral insight is provided but not comprehensive.
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: a one-line purpose followed by per-parameter explanations. Every sentence adds useful information without 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 covers the two main parameters and loading behavior, but leaves ambiguity about what 'load into the DAW project' means in practice (e.g., does it create an audio track or just import an asset?). With an output schema present, return values are not needed, but broader operational context could be clearer.
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 are explained beyond the schema: file_path describes required absolute path and the public-directory optimization; name is described as optional with a default, though the schema marks it required (a minor inconsistency). This substantially compensates for the 0% schema description 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 ('Load') with a clear resource ('audio file') and destination ('DAW project'), and lists supported formats (WAV/MP3/FLAC/OGG). This clearly distinguishes it from sibling tools like create_audio_track or import_audio_to_tracks, which serve different actions.
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 practical guidance on when to use certain loading paths, such as placing files in headless-daw/public/ for faster URL-based fetching versus base64 otherwise. It does not explicitly compare against alternatives, but the context 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.
mcp_opendaw_load_effect_presetB
Load a .opb preset file into the DAW and apply it to an audio unit.
Reads the preset bundle, decodes the effect chain via PresetDecoder, and inserts it onto the specified audio unit. If unit_index is -1, uses the primary (first non-output) audio unit.
filepath: Path to the .opb preset bundle file. unit_index: Target audio unit index. -1 = primary instrument unit.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | ||
| unit_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does mention the internal process (reads, decodes via PresetDecoder, inserts) and the -1 default behavior, but it does not disclose whether the operation is destructive (e.g., replaces the entire effect chain), whether it can be undone, or what happens on invalid file paths. This is a significant gap for a mutating operation on the DAW.
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 about four sentences, and front-loads the main purpose. It organizes information logically: purpose, internal behavior, and parameter definitions. Slight redundancy exists between the first and second sentences (both describe loading and applying), but overall every sentence adds useful 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 two parameters and an output schema, the description covers the essential context: the file format, the target audio unit, and the special -1 case. It does not mention whether the operation overwrites existing effects or the exact effect chain insertion behavior, but the presence of an output schema means return values need not be explained. It is reasonably complete for the tool's complexity, though a note on usage relative to sibling preset tools would elevate 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 input schema provides only titles ('Filepath', 'Unit Index') with no descriptions (0% schema coverage). The description compensates well by explicitly defining filepath as the path to the .opb preset bundle and unit_index as the target audio unit index, including the important -1 sentinel meaning. This gives clear semantic meaning beyond the schema, though it could note constraints like file existence or valid index ranges.
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 loads a .opb preset file and applies it to an audio unit, which is specific and action-oriented. It even notes internal mechanics (PresetDecoder) and the special -1 behavior, making it distinct from simple 'load' operations. However, it does not explicitly distinguish itself from sibling tools like import_preset or replace_from_preset, so it falls 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?
The description implies the tool is used when you need to load a preset bundle onto an audio unit, providing clear context for its primary use. It does not mention when to use this over alternatives like import_preset, nor does it state any exclusions or prerequisites (e.g., required audio unit existence). This is implied usage, not explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_load_projectA
Load a previously saved project from a .odaw file.
Restores the full project state (tracks, regions, effects, notes, settings) from a serialized ArrayBuffer. The engine must be restarted after loading (call start_engine again).
filename: Name of the .odaw file in the exports directory (without path). Returns: box count and confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that loading restores full project state and requires an engine restart, which is useful. However, it does not explicitly warn that loading overwrites the current project or that unsaved changes may be lost, which would be important for a 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 concise and well-structured: purpose sentence, restoration scope, engine restart instruction, and parameter definition. Every sentence earns its place with no 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?
For a single-parameter tool with an output schema, the description covers the essential context: file location, restoration scope, engine restart requirement, and what return value to expect. It could be improved by noting the overwrite behavior, but overall it is sufficiently complete for an agent 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 only provides type and title for filename, but the description adds key semantics: 'Name of the .odaw file in the exports directory (without path).' This fully compensates for the schema's lack of description and gives the agent actionable 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 opens with a specific verb+resource: 'Load a previously saved project from a .odaw file.' It clearly distinguishes this from sibling tools like save_project or reset_project by focusing on the loading action and restoration of full project 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 critical explicit instruction: 'The engine must be restarted after loading (call start_engine again).' This gives clear when-to-use context (after a project has been saved) and what to do next, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_map_velocity_by_pitchA
Map velocity based on pitch — expressive dynamics from note height.
Adjusts note velocity proportionally to pitch position. High notes get quieter, low notes get louder (or vice versa). This simulates natural acoustic instrument behaviour where register affects perceived intensity.
Modes:
"higher_quieter" — high notes quieter, low notes louder (piano natural, orchestral mockups). Default. Kick drum louder than hi-hat.
"lower_quieter" — low notes quieter, high notes louder (lead synth patches, bell-like timbres where highs cut through).
"bell_curve" — loudest in the middle register, quieter at extremes (vocal range, mid-range instruments like guitar/violin).
"inverse_bell" — quietest in the middle, louder at extremes (experimental).
intensity: 0-1, how much pitch affects velocity (0 = no change, 0.5 = moderate, 1.0 = full effect). At 0, velocities are unchanged.
The formula for "higher_quieter": relative_pos = (pitch - pitch_ref) / 48 (48 = 4 octaves range) factor = 1.0 - relative_pos * intensity new_vel = current_vel * factor (clamped to min/max)
pitch_ref: MIDI pitch that serves as the neutral point (no change). 60 = C4 (middle C). Adjust for your instrument's register.
Use cases:
Make flat MIDI velocities sound more natural (piano, orchestra)
Drum kits: kick (low pitch) louder than hi-hat (high pitch)
Lead synth: highs cut through more (lower_quieter)
Vocal range emphasis (bell_curve around pitch_ref=64)
unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first, -2 = all regions). mode: higher_quieter / lower_quieter / bell_curve / inverse_bell. intensity: 0-1, strength of pitch-to-velocity mapping. min_velocity / max_velocity: Clamp range. pitch_ref: Neutral pitch (default 60 = C4).
Returns modification summary with per-octave velocity stats.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | higher_quieter | |
| intensity | No | ||
| pitch_ref | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| max_velocity | No | ||
| min_velocity | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 reveals the transformation formula, mode differences, intensity effect, clamping behavior, and return summary. It lacks explicit caution about in-place modification or undo behavior, but the algorithm is thoroughly disclosed.
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 well-structured with sections for modes, formula, use cases, and parameters. It is somewhat verbose and repeats mode and intensity details in the parameter list, but the front-loaded summary and logical organization make 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?
Given real complexity (8 parameters, 4 modes, a formula, and multiple use cases), the description is remarkably complete. It covers all parameters, examples, the algorithm, and return value. The presence of an output schema further reduces the need for explanatory detail.
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%, yet the description compensates by explaining every parameter including unit_index, track_index, region_index, mode, intensity, min/max_velocity, and pitch_ref. It even includes the formula showing how parameters interact, exceeding what 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 clearly states the tool maps velocity based on pitch with a specific verb and resource ('Map velocity based on pitch'). It distinguishes itself from sibling velocity tools like scale_velocity or apply_velocity_curve by emphasizing the pitch-velocity relationship and natural acoustics.
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 use cases such as piano/orchestral mockups, drum kits, lead synth, and vocal range emphasis. However, it does not name alternative tools or state when not to use this tool, so it falls short of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_match_to_referenceA
Automatically match your mix to a reference track — spectral + loudness alignment.
Like Phantom's match_to_reference: takes your mix and a reference, then:
Measures LUFS difference → applies gain compensation
Measures per-band spectral difference → applies EQ correction
(Optional) Measures stereo width → applies stereo adjustment
Outputs a matched WAV file. This is automated A/B matching — the mix gets as close to the reference as possible without re-mixing.
filename: Your mix WAV (exports dir or absolute path). reference: Reference track WAV (exports dir or absolute path). output_filename: Output filename (default: _matched.wav). match_lufs: Match integrated LUFS. match_spectrum: Match per-band spectral energy (7-band EQ correction). match_stereo: Match stereo width (experimental).
Returns analysis of what was applied + output file path.
Example: match_to_reference("my_mix.wav", "pro_track.wav")
→ {lufs_adjusted: +1.4 dB, eq_curves: [...], output: "my_mix_matched.wav"}
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| reference | Yes | ||
| match_lufs | No | ||
| match_stereo | No | ||
| match_spectrum | No | ||
| output_filename | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the algorithmic steps, the fact that it outputs a new WAV file, and labels stereo matching as 'experimental.' It doesn't mention whether the original mix is preserved or if any DAW-specific prerequisites exist, but the core behavior (gain, EQ, stereo adjustments) is transparently explained.
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 well-structured and efficient: a one-sentence summary, numbered algorithmic steps, a parameter list, return description, and an example. Each section earns its place without redundancy. The formatting with line breaks and code-style example enhances readability.
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 essential: purpose, process, parameters, output, and return value, even including an example return object. It lacks explicit mention of prerequisites (e.g., DAW engine running, supported file formats) and edge-case behavior, but given the presence of an output schema and the tool's focused scope, it is sufficiently complete for an agent to select and 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 schema has 0% description coverage, but the description compensates admirably by explaining each parameter: filename, reference, output_filename (with default), and the three boolean toggles with their effects (e.g., 'Match per-band spectral energy (7-band EQ correction)'). It also provides a concrete example call with expected return shape, fully clarifying 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?
The description opens with a specific verb-resource statement: 'Automatically match your mix to a reference track — spectral + loudness alignment.' It then details three concrete processing steps (LUFS gain, EQ correction, optional stereo adjustment) and states the output is a matched WAV. This clearly distinguishes it from sibling tools like compare_to_reference, which likely only analyzes without modifying.
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 implies usage for automated A/B matching without re-mixing, and explicitly mentions optional stereo matching. It also references 'Like Phantom's match_to_reference' as a conceptual precedent. However, it does not explicitly name alternative tools (e.g., compare_to_reference for analysis-only) or state when NOT to use it, leaving a small gap in exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_measure_lufsA
Measure LUFS (integrated) and true peak of an exported WAV file.
Uses ITU-R BS.1770-4 simplified algorithm:
K-weighting: 2nd-order high-shelf (+4dB @ ~1.5kHz) + highpass (~38Hz)
Gated mean squares (400ms blocks, 75% overlap, -10 LU relative gate)
Integrated LUFS = -0.691 + 10*log10(gated mean square)
filename: Name of the WAV file in the exports directory (without path).
Returns: LUFS (integrated), true peak (dBTP), max sample, duration seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on full responsibility. It reveals the algorithm implementation details (K-weighting, gating, formula), which is highly transparent about how measurements are computed. It also states the return values, though it doesn't mention 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?
The description is efficiently organized with a summary, algorithm bullet points, parameter explanation, and returns. It's slightly verbose due to the algorithm details, but those add 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 simple (one parameter) and has an output schema, so the description needn't detail return structures. It covers the main aspects, though it omits prerequisites like ensuring the file exists or that the export is 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 provides only a 'filename' string with a title, but the description adds crucial meaning: it's a WAV file in the exports directory, without path. This compensates well for the schema's 0% 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 it measures LUFS and true peak of an exported WAV file, with a specific verb and resource. The detailed algorithm description further 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?
It specifies the target (exported WAV file) but does not offer explicit guidance on when to choose this over sibling analysis tools like analyze_dynamics or get_audio_file_info. The use case is implied for loudness measurement, but no exclusions or alternatives are listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_merge_consecutive_notesA
Merge consecutive notes of the same pitch into single sustained notes.
Scans notes sorted by position. When two notes have the same pitch and the gap between them is within max_gap_beats, they are merged into one note spanning from the first note's start to the last note's end. Useful for cleaning up repeated hits, converting staccato patterns to sustained notes, or simplifying busy passages.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) same_pitch_only: If True, only merge notes with identical pitch. If False, merge any consecutive notes regardless of pitch (uses first note's pitch for the merged result). max_gap_beats: Maximum gap between note end and next note start to qualify for merging (0.0 = touching/overlapping only, 0.25 = up to a 16th note gap, 1.0 = up to 1 beat gap). velocity_mode: Velocity for merged note — "first" = use first note's velocity, "last" = use last note's velocity, "max" = use highest velocity, "avg" = use average velocity across merged notes.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| max_gap_beats | No | ||
| velocity_mode | No | first | |
| same_pitch_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the scanning algorithm, merging rules (same pitch, gap threshold), and the resulting note span. It also details the effects of same_pitch_only and velocity_mode. However, it does not explicitly state that the operation permanently modifies the track or is destructive, but the phrase 'merged into one note' implies replacement, and the logic is thoroughly described.
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 despite its length. Every sentence contributes: a clear one-line summary, an algorithm explanation, usage guidance, and a structured parameter list. There is no redundancy or filler. The formatting is scannable and front-loaded with 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 tool has six parameters, an output schema, and a moderately complex transformation. The description covers the purpose, algorithm, use cases, and all parameter semantics. With an output schema present, return values need not be described. The description is fully self-contained for an agent to decide if and how to 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%, but the description's Args section explains every parameter in detail, including examples for max_gap_beats (0.0, 0.25, 1.0) and enumerates all velocity_mode options. This greatly exceeds the schema's bare titles and provides all necessary semantic meaning for correct invocation.
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: 'Merge consecutive notes of the same pitch into single sustained notes.' This clearly distinguishes it from sibling tools like merge_note_regions (which merges regions) and merge_note_tracks (which merges tracks). The behavior is unambiguous and unique.
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 provides use cases: 'cleaning up repeated hits, converting staccato patterns to sustained notes, or simplifying busy passages.' This gives clear context for when to apply the tool. It does not explicitly mention when not to use it or name alternatives, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_merge_note_regionsA
Merge two note regions on the same track into one.
Copies all notes from region B into region A's note collection, adjusting positions so they remain at their original absolute timeline position. Region A's duration is extended to cover both regions. Region B is deleted.
The regions do not need to be adjacent — if there's a gap between them, the merged region spans the full range (with silence in the gap).
Use cases:
Join verse + chorus into one continuous region
Consolidate split regions back together
Merge separately-recorded MIDI takes
Simplify arrangement before export
unit_index: AU index. track_index: Note track index. region_index_a: First region (keeps its identity, absorbs B's notes). region_index_b: Second region (deleted after merge).
Returns merged region details.
Example:
Merge regions 0 and 1 into one
merge_note_regions(0, 0, 0, 1)
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index_a | Yes | ||
| region_index_b | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and delivers: explicitly states B is deleted, A is extended, positions adjusted, silence fills gaps, and returns merged details. This is exceptional disclosure for a 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?
Well-structured with intro, behavior, edge case, use cases, parameter definitions, return note, and example. No redundant sentences; all content 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?
Output schema exists, so return values are covered. Description includes algorithm details, non-adjacent gap behavior, and example. Missing domain context on what 'AU' stands for, but overall complete for a mutating region merge 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 provides only titles with 0% description coverage; description compensates by explaining each parameter's role (AU index, track index, region A as identity-preserving absorber, region B as deleted). Adds example call. Minor gap: 'AU index' is not elaborated, but sufficient for invocation.
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 clearly it merges two note regions on the same track into one, with specific behavior (copies notes from B to A, deletes B). Distinguishes from sibling tools like merge_note_tracks and merge_consecutive_notes by specifying same-track scope and region-level 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?
Lists concrete use cases (joining verse+chorus, consolidating split regions, merging MIDI takes, simplifying arrangement) that signal when to invoke. Does not explicitly name alternatives or state when not to use, 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.
mcp_opendaw_merge_note_tracksA
Merge notes from a source track into a destination track.
Combines notes from two tracks into one, optionally deleting the source. Overlapping notes are resolved by the chosen strategy. Unlike copy_notes_to_track (which just copies), merge consolidates two note streams into a single coherent track — the source notes are integrated into the destination region and optionally removed from origin.
Typical use cases:
Merge a doubled melody into the main melody track
Consolidate counterpoint into the harmony track
Combine left-hand and right-hand piano into one track
Flatten multi-track MIDI into a single instrument
Args: source_unit: AU index of source track source_track: Note track index within source AU dest_unit: AU index of destination track dest_track: Note track index within destination AU source_region: Source region index (-1 = first region) dest_region: Destination region index (-1 = first region, or auto-create if none exists) delete_source: If True, delete source notes after merge. If False, notes remain in both tracks (copy mode). resolve_overlaps: Strategy for overlapping notes — "keep_higher_velocity" = keep louder note at conflict point, "keep_lower_velocity" = keep quieter note, "keep_source" = prefer source notes, "keep_dest" = prefer destination notes, "keep_both" = keep all overlapping notes (no resolution), "shorten_earlier" = truncate the earlier-starting note to end where the later one begins. transpose: Semitones to transpose source notes (-24 to 24).
| Name | Required | Description | Default |
|---|---|---|---|
| dest_unit | Yes | ||
| transpose | No | ||
| dest_track | Yes | ||
| dest_region | No | ||
| source_unit | Yes | ||
| source_track | Yes | ||
| delete_source | No | ||
| source_region | No | ||
| resolve_overlaps | No | keep_higher_velocity |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, and it does well: it discloses overlap resolution strategies, source deletion behavior (via delete_source), and transposition range. It also mentions auto-creation for missing dest_region. However, it does not mention error conditions, whether the dest track must be created beforehand, or undo/reversibility; these gaps prevent a perfect score.
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 long but well-organized: a one-sentence summary, a contrast paragraph, use cases, and a cleanly formatted Args block. Every sentence adds value, with no filler. The structure makes the long content easy to scan, and the front-loaded purpose ensures the key information is immediate.
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 (9 parameters, multiple overlap strategies, and an output schema), the description covers everything an agent needs to know to invoke it correctly. It explains the merge semantics, side effects (deletion), edge cases (auto-create dest_region), and option values. There is no obvious missing information that would impede 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?
Schema coverage is 0%, so the description must and does fully explain all 9 parameters. Each parameter gets a line with a clear meaning, including the -1 semantics for region indices and a detailed list of all overlap strategies. The transpose range (-24 to 24) and default behaviors are also specified, far exceeding what the bare schema 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 opens with a specific verb+resource: 'Merge notes from a source track into a destination track.' It clearly distinguishes itself from copy_notes_to_track by explaining the difference ('Unlike copy_notes_to_track... merge consolidates two note streams'). It also lists concrete use cases, leaving no ambiguity about what the 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 explicitly contrasts with a sibling tool ('Unlike copy_notes_to_track (which just copies)') and gives typical use cases (merge melody, consolidate counterpoint, etc.). It also clarifies the delete_source parameter allows copy versus move behavior, which serves as a guide for when to use this tool versus a plain copy operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_modulate_progressionA
Transpose a chord progression to a new key.
Modulation is the technique of changing key within a song. This tool takes a progression like "Am-F-C-G" (key of A minor) and transposes every chord to a new key while preserving chord qualities (major/minor/ 7th etc.) and interval relationships.
Common modulations:
Up a fourth (C→F): most natural, adds energy for chorus
Up a fifth (C→G): bright, triumphant
To relative major (Am→C): minor→major mood shift
To relative minor (C→Am): major→minor mood shift
Down a third (C→A): darker, bridge section
progression: Source progression (e.g. "Am-F-C-G"). target_key: Target key root note (e.g. "C", "F", "D", "Bb"). direction: "up" or "down" (affects octave placement, default "up").
Returns the modulated progression string + per-chord mapping.
Example:
A minor → C major (relative major)
modulate_progression("Am-F-C-G", target_key="C")
→ "C-G-Am-F" (I-V-vi-IV in C major)
A minor → F (up a fourth for chorus)
modulate_progression("Am-F-C-G", target_key="F")
C major → A minor (relative minor for bridge)
modulate_progression("C-G-Am-F", target_key="A")
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | up | |
| target_key | No | C | |
| progression | No | Am-F-C-G |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 chord qualities are preserved, direction affects octave placement, and the return value includes a per-chord mapping. This goes beyond a basic definition, though it does not explicitly state side-effect behavior (e.g., 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 well-structured with a lead sentence, explanatory paragraph, common modulation list, parameter docs, and examples. It is somewhat lengthy, but each section adds useful information; no wasted 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 covers what the tool does, how to invoke it, common use cases, and what it returns. An output schema exists, so detailed return format is not required. It could mention edge cases or errors, but overall it is sufficient for selection and 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 input schema has 0% description coverage, but the tool description fully documents all three parameters with examples (progression, target_key, direction) and notes the default for direction. This compensates entirely for the missing 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 opens with a specific verb+resource: 'Transpose a chord progression to a new key.' It clearly distinguishes this tool from siblings like reharmonize_progression or transpose_notes by emphasizing preservation of chord qualities and interval relationships. The scope 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 provides clear context with 'Common modulations' and musical scenarios (chorus, bridge, mood shifts), and example invocations. However, it does not explicitly mention when not to use this tool or name alternative tools, 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.
mcp_opendaw_move_audio_unitA
Move an audio unit up or down in the mixer order.
Uses AudioUnitBoxAdapter.move(delta) — reindexes the AU within its type group (Instrument/Aux/Output). Delta is relative: -1 = up, +1 = down.
unit_index: Current AU index. delta: Relative move (-1 up, +1 down).
Returns new index or error.
| Name | Required | Description | Default |
|---|---|---|---|
| delta | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the reindexing behavior, relative delta semantics, and the return value (new index or error). It does not mention permissions, reversibility, or edge cases, but for a simple move operation, this is adequate and goes beyond what the schema provides.
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, front-loaded with the main purpose, and each sentence contributes meaningful information. The parameter explanations are tightly integrated and directly useful, with no 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?
Given the simple two-parameter tool, the description covers purpose, precise behavior, parameter semantics, and expected return. An output schema exists to document the return value, so the description need not detail that further. It is sufficient for an agent to select and invoke this 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?
Schema description coverage is 0%, so the description must compensate. It does so effectively by explaining both parameters: unit_index is 'Current AU index' and delta is 'Relative move (-1 up, +1 down).' This adds semantic meaning beyond the raw schema properties and clarifies their roles.
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 ('Move') and resource ('an audio unit up or down in the mixer order'), and further clarifies the scope by noting it reindexes within its type group (Instrument/Aux/Output). This distinguishes it from sibling tools like move_effect and move_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 provides clear context by explaining that the move is relative and reindexes within type groups, but it does not explicitly state when to use this tool versus alternatives or mention exclusions. The context is clear enough for an agent to infer the appropriate scenario, but it stops short of explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_automation_eventA
Move an automation event to a new position on the timeline.
unit_index: AU index. track_index: Value (automation) track index. event_index: Event index (from list_automation_events). new_position_beats: New position in beats (float).
Returns success with old and new positions.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| event_index | Yes | ||
| track_index | Yes | ||
| new_position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It mentions the return value ('Returns success with old and new positions') but does not disclose potential errors, side effects, reversibility, or prerequisites beyond the implied index. For a mutating tool, this is insufficient 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 concise and front-loaded with the purpose, followed by parameter definitions and return behavior. Every sentence is informative, with no waste 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 covers the essential purpose, parameters, and return value, making it moderately complete. However, with no annotations, it lacks guidance on error handling, invalid indices, or any behavioral constraints. The output schema exists, but the description could do more to explain what 'success' entails and any side effects.
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 fully compensates by explaining each parameter's meaning, including the source for event_index and the type of new_position_beats. This adds significant meaning beyond the schema's bare property titles.
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 'Move an automation event to a new position on the timeline,' which clearly states the specific verb and resource. This distinguishes it from sibling tools like delete_automation_event or update_automation_event, which focus on other aspects of automation events.
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 by noting 'event_index: Event index (from list_automation_events),' indicating a prerequisite workflow. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions, so usage guidance is only 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.
mcp_opendaw_move_effectA
Reorder an effect within an audio unit's effect chain.
Chain order matters: EQ → Compressor → Reverb sounds different than Compressor → EQ → Reverb. Use this to move effects to the desired position.
unit_index: Audio unit index. from_index: Current effect position (0-based). to_index: Target effect position (0-based).
Effects between from and to shift accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| to_index | Yes | ||
| from_index | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key behavioral traits: the reordering nature, 0-based indexing, and the fact that effects between from and to shift accordingly. It doesn't mention error handling or idempotency, but the core behavior is well-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 compact and front-loaded with the main purpose. The chain-order example earns its place, and the parameter list is integrated cleanly. 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?
Given the tool's simplicity and the presence of an output schema, the description is quite complete. It covers parameters and behavior well. Minor omissions like out-of-bounds handling or what happens when from_index equals to_index prevent a perfect score, but these are edge 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?
Schema description coverage is 0%, so the description compensates fully by explaining each parameter: unit_index, from_index, and to_index, including their 0-based nature. This adds crucial meaning beyond the bare integer titles 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 function with a specific verb and resource: 'Reorder an effect within an audio unit's effect chain.' It also distinguishes from siblings like add_effect or remove_effect by focusing on reordering, and provides a concrete example of chain-order importance.
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 on when to use the tool ('Use this to move effects to the desired position') and explains why ordering matters. It doesn't explicitly mention alternatives or when not to use it, but the context is sufficient for most agents to select it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_notesA
Move notes from a source region to another track — copy + delete.
Copies notes from source region to destination track (auto-creating a region or appending to an existing one), then optionally deletes the originals. Useful for splitting material across tracks, reorganising arrangements, or moving a section to a different instrument.
Args: source_unit: Source audio unit index source_track: Source note track index source_region: Source region index dest_unit: Destination audio unit index dest_track: Destination note track index time_offset: Shift all moved notes by N ticks (0 = keep positions) transpose: Transpose all moved notes by N semitones (0 = no change) velocity_scale: Multiply velocity of moved notes (1.0 = unchanged, 0.8 = quieter, 1.2 = louder, clamped to 0-1) delete_source: If True (default), delete notes from source after copy. If False, behaves like copy_notes_to_track. dest_region: Destination region index (-1 = auto-create or append to last)
Returns: JSON with notes_moved, notes_deleted, source_region_cleared, and destination region info.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_unit | Yes | ||
| transpose | No | ||
| dest_track | Yes | ||
| dest_region | No | ||
| source_unit | Yes | ||
| time_offset | No | ||
| source_track | Yes | ||
| delete_source | No | ||
| source_region | Yes | ||
| velocity_scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It clearly discloses the mutation behavior: copies notes, auto-creates or appends to a destination region, deletes source notes by default, and clamps velocity to 0-1. It also reveals return fields like source_region_cleared, making the tool's effects 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 well-structured: a concise first sentence captures the core action, a short paragraph provides usage context, and a bulleted Args list adds necessary parameter details. Every sentence contributes value, and the front-loaded summary allows quick 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?
The description covers all aspects needed for an agent to use this 10-parameter tool: parameter semantics, default behaviors, the difference from copy_notes_to_track, and the return value. It also clarifies edge cases like dest_region=-1. The presence of an output schema further supports completeness.
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 Args section explains every one of the 10 parameters with additional meaning beyond the schema titles, including defaults and examples (e.g., velocity_scale: '0.8 = quieter, 1.2 = louder'). This fully compensates for the 0% schema description 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 operation: 'Move notes from a source region to another track — copy + delete.' This specific verb-resource pair distinguishes it from sibling tools like copy_notes_to_track, especially with the delete_source parameter explicitly linking to copy 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?
Provides explicit use cases: 'Useful for splitting material across tracks, reorganising arrangements, or moving a section to a different instrument.' It also references copy_notes_to_track when delete_source=False, giving an alternative. However, it does not explicitly say when NOT to use it, so it lacks a full when-not/exclusion statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_region_contentA
Shift the content start of a region without moving the region itself.
Moves the content inside the region by delta_beats — adjusts waveform offset (audio) or note positions (MIDI) while keeping the region position. Useful for realigning content within a region after tempo changes.
For audio regions with seconds timeBase, delta is converted via tempo map. For note regions, note positions shift by -delta (content moves left = positive delta).
unit_index: AU index. track_index: Track index within the AU. region_index: Region index. delta_beats: Shift amount in beats (positive = content moves left, region shrinks from left).
Returns new position, duration, and loopDuration, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| delta_beats | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does an excellent job explaining the audio vs. MIDI behavior, including the tempo map conversion and the sign convention for MIDI notes. It also mentions the return values. However, it does not disclose potential side effects (e.g., whether the operation is destructive or reversible via undo) or note any permission/associated DAW engine state requirements. This leaves some gaps for an AI agent to infer.
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 well-structured and front-loaded. The first sentence states the core purpose, followed by targeted detail for audio vs. MIDI, then a concise parameter list, and a brief return-value note. Every sentence adds valuable information; there is no fluff or repetition. It remains compact enough to parse quickly.
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 annotations and schema descriptions, the description provides a complete picture: it defines the operation, distinguishes between audio and note regions, explains parameter meanings, and states the return values. It even accounts for tempo map conversion. While it does not discuss edge cases (e.g., negative delta or region boundary limits), it covers all necessary information for an AI agent to select and invoke the tool correctly for typical use 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?
Schema coverage is 0% (no descriptions in the input schema). The description compensates fully by explicitly listing each parameter: 'unit_index: AU index', 'track_index: Track index within the AU', 'region_index: Region index', and 'delta_beats: Shift amount in beats (positive = content moves left, region shrinks from left)'. This adds semantic meaning, including the critical sign convention for delta_beats, which is not evident from 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 opens with a specific verb and resource: 'Shift the content start of a region without moving the region itself.' This clearly differentiates it from sibling tools like set_region_position or move_notes, which alter the region position or notes independently. The distinction is concrete 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 states 'Useful for realigning content within a region after tempo changes,' providing clear usage context. It does not explicitly mention alternative tools or when not to use it, but the phrase 'without moving the region itself' implicitly contrasts with region-moving operations. No exclusions are needed for a niche tool like this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_region_to_trackA
Move a region from one track to another (possibly in a different audio unit).
The region keeps its position, duration, and content. The source track loses the region.
src_unit_index: Source audio unit index. src_track_index: Source track index within source unit. region_index: Region index within source track. dst_unit_index: Destination audio unit index. dst_track_index: Destination track index within destination unit.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| region_index | Yes | ||
| dst_unit_index | Yes | ||
| src_unit_index | Yes | ||
| dst_track_index | Yes | ||
| src_track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 key side effects: the region keeps its position/duration/content and the source track loses the region. It also states the return behavior ('Returns success or error'). This goes beyond a bare mutation claim by specifying invariants and the fact that the source is affected, though it does not cover undo behavior or edge-case validation.
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: an opening sentence stating the core action, a behavioral invariant sentence, a bullet-like parameter list, and a return-value note. Every sentence earns its place; no redundant or filler content.
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 essential semantics for a 5-parameter cross-unit move operation: parameter meanings, the preservation of region properties, and the source track losing the region. However, it omits guidance on when to use this over the closely related copy_region_to_track or transfer_region, and it does not mention possible failure modes (e.g., invalid indices) or whether the operation is undoable. Given the complexity, it is adequate 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?
Schema description coverage is 0%, so the description must compensate. It defines each parameter in plain language (src_unit_index, src_track_index, region_index, dst_unit_index, dst_track_index) with context ('Source track index within source unit'), adding meaning that the schema's bare titles lack. This fully explains the 5-parameter interface.
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 ('Move') and resource ('region from one track to another'), and clarifies that it can cross audio units. It distinguishes from the copy sibling by stating 'The source track loses the region,' making the tool's unique 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?
The description gives clear context for when to use the tool (when moving a region between tracks), but it does not explicitly mention alternatives or provide exclusions. The statement 'The source track loses the region' implies a contrast with copying, but it never explicitly says 'to keep the source, use copy_region_to_track' or otherwise compare against sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_sectionA
Move all regions within a beat range to a new position (non-destructive rearrangement).
Scans all tracks across all specified audio units, finds every region that overlaps the [from_beat, to_beat) range, and moves each one to target_beat with the same relative offset. Unlike duplicate_section, this removes the original — a true cut-and-paste operation.
This is the arrangement tool for restructuring: "move the bridge from bar 33 to bar 17" or "shift this 4-bar fill 8 bars earlier". One call replaces N delete + N create sequences.
from_beat: Start of the source section in beats. to_beat: End of the source section in beats (exclusive). target_beat: Where to move the section (beat 0 = start of project). unit_indices: Comma-separated AU indices to scan (default: all AUs).
Returns number of regions moved, per-track details, and old/new positions.
Examples: move_section(from_beat=32, to_beat=48, target_beat=16) -> Move bars 9-12 to bar 5 (shift 16 beats earlier) move_section(from_beat=0, to_beat=16, target_beat=32, unit_indices="0,1") -> Move first 4 bars from AUs 0,1 to beat 32
| Name | Required | Description | Default |
|---|---|---|---|
| to_beat | Yes | ||
| from_beat | Yes | ||
| target_beat | Yes | ||
| unit_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the cut-and-paste behavior, that it scans all tracks across specified AUs, and that it returns move details. However, it does not discuss edge cases like target collisions or overlapping source/target ranges, which leaves some behavioral ambiguity.
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 a one-sentence summary, followed by a logical breakdown: behavior, parameters, return, examples. No sentences are redundant; the examples earn their place by clarifying the half-open range and offset logic.
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 moderate complexity and the presence of an output schema, the description covers all necessary aspects: operation scope, parameter meanings, return values, and explicit comparison to duplicate_section. It even explains the relative offset behavior and default AU handling, making it fully actionable 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 0%, so the description must fully define parameters. It does, specifying from_beat, to_beat (exclusive), target_beat (relative to project start), and unit_indices (comma-separated, default all AUs). The examples further illustrate the beat-to-bar mapping, going well 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 opens with 'Move all regions within a beat range to a new position' and explicitly frames it as a non-destructive cut-and-paste, contrasting with duplicate_section. This specifies a concrete verb+resource and differentiates it from sibling rearrangement 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 names an alternative: 'Unlike duplicate_section, this removes the original.' It also explains the ideal use case ('move the bridge from bar 33 to bar 17') and highlights that one call replaces delete+create sequences, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_signature_eventA
Move a time signature change event to a new PPQN position.
Automatically recalculates relative positions of subsequent events.
event_index: Index of the signature event (from add_signature_change list). target_ppqn: New position in PPQN.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| event_index | Yes | ||
| target_ppqn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose that subsequent event positions are automatically recalculated and that it returns success or error, which adds context beyond a bare 'move' operation. However, it omits details about permissions, reversibility, undo behavior, or error conditions, so it is only partially 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 written in a few short sentences covering purpose, side effect, parameters, and return value without excessive fluff. Each sentence adds value beyond the schema, and the structure flows logically from summary to behavior to parameters, though it could be slightly tightened.
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 two parameters and an output schema, the description provides essential invocation details but lacks some contextual completeness. It doesn't mention what happens with invalid indices, whether the move is undoable, or how it relates to other signature management tools like set_time_signature or change_base_signature, leaving some gaps for a new 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?
Because the input schema has 0% description coverage, the description is the sole source of parameter meaning. It explains event_index as the index from the add_signature_change list and target_ppqn as the new PPQN position, which is workable and clear. It doesn't define PPQN or give valid ranges, but it compensates well for the schema's lack of 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 opens with a specific verb ('Move') and resource ('a time signature change event') plus destination ('new PPQN position'), clearly distinguishing it from sibling tools like add/delete/list signature changes. It also references the add_signature_change list as the source for event_index, reinforcing the specific 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 gives meaningful context for when to use the tool by explaining that the event_index comes from the add_signature_change list and noting that subsequent events are recalculated. This implies it is for moving existing events rather than adding or deleting, but it doesn't explicitly name alternatives or state when-not-to-use conditions, so it falls short of full explicitness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_move_trackA
Move a track up or down within an audio unit.
Uses AudioUnitBoxAdapter.moveTrack(adapter, delta) — reindexes the track. Delta is relative: -1 = up, +1 = down.
unit_index: AU index. track_index: Track index within AU. delta: Relative move (-1 up, +1 down).
Returns new index or error.
| Name | Required | Description | Default |
|---|---|---|---|
| delta | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 it uses AudioUnitBoxAdapter.moveTrack and 'reindexes the track,' and mentions the return value ('new index or error'). However, it does not describe potential side effects on other tracks, validation, permissions, or reversibility.
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 purpose, followed by implementation note, parameter explanations, and return value. Every sentence is informative 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 covers the action, parameters, behavior, and return value. Since an output schema exists, return details are not required. Minor gaps include bounds or error conditions, but overall it is sufficiently complete for a simple move operation.
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 descriptions are absent (0% coverage), but the description explains each parameter: unit_index as 'AU index,' track_index as 'Track index within AU,' and delta with explicit semantics ('-1 up, +1 down'). This adds clear meaning beyond the bare schema fields.
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 starts with 'Move a track up or down within an audio unit,' which uses a specific verb, resource, and scope. It distinguishes itself from sibling tools like move_audio_unit by clarifying track_index is within an AU, and it explains the delta direction.
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 reordering tracks inside an audio unit but gives no explicit 'when to use' or 'when not to use' guidance, nor does it mention alternatives such as move_audio_unit or move_effect. It is adequate 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.
mcp_opendaw_note_statsA
Get comprehensive statistics for notes in a region.
Returns a full statistical profile of the MIDI content:
Note count, pitch range (min/max/span)
Velocity statistics (min/max/mean/median/std)
Duration statistics (min/max/mean in beats)
Density (notes per beat)
Pitch class histogram (how often each of 12 pitch classes appears)
Most common pitches (top 5)
Time span (first note to last note end)
Useful for:
Analyzing imported MIDI before processing
Comparing regions (which has more notes, wider range)
Identifying register (is this bass, mid, or lead?)
Detecting programming issues (all same velocity = robotic)
Feeding data to arrangement decisions
unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first region).
Returns statistics object.
Example: stats = note_stats(0, 0)
stats includes: note_count, pitch_range, velocity_stats, density, pitch_class_histogram
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral disclosure. It goes beyond a simple statement by enumerating the exact statistics returned (note count, pitch range, velocity stats, density, pitch class histogram, etc.) and showing an example output shape. It implies read-only behavior via 'Get statistics' but doesn't explicitly state that no modifications occur. It also doesn't mention edge cases like empty regions or invalid indices, but for a stats tool this level of detail is strong.
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 structured with a clear introductory sentence, a bullet list of statistics, a compact 'Useful for' list, parameter definitions, and a short example. It conveys substantial information without being bloated. The bullet lists are easy to scan and every sentence carries meaning. It is slightly longer than necessary but well organized.
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 moderate complexity, the description is complete. It covers purpose, output contents, use cases, and all parameters. The output schema (statistics object) is supplemented by the detailed field list in the description, making return values clear. No critical information about when or how to use this tool 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 0% parameter description coverage, leaving the description to explain all parameters. The description explicitly covers each parameter: 'unit_index: AU index. track_index: Note track index. region_index: Region (-1 = first region).' This fully compensates for the schema gap and adds clarity beyond the bare integer types. The example call also helps clarify usage.
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+resource: 'Get comprehensive statistics for notes in a region.' It clearly identifies the tool's function as a read-only analysis operation on MIDI note content. The scope is precise and distinguishes it from sibling tools like analyze_melody or analyze_track, which target different aspects.
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 'Useful for' list that gives clear context for when to use the tool (analyzing imported MIDI, comparing regions, identifying register, detecting programming issues). It doesn't explicitly state when not to use it or mention alternative tools, but the use cases strongly imply appropriate scenarios. It lacks exclusionary guidance like 'use X instead for Y', but the guidance is sufficient for a selectable tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_place_audio_regionA
Place a previously loaded audio sample as a region on a track.
sample_id: The ID returned by mcp_opendaw_load_audio. unit_index: Audio unit index (default 0). start_beat: Beat position to place the region. track_index: Track index within the audio unit (default 0).
NOTE: The audio unit must be an instrument AU with a Tape device. Use mcp_opendaw_create_instrument_track first if no instrument AU exists.
| Name | Required | Description | Default |
|---|---|---|---|
| sample_id | Yes | ||
| start_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It adds the key behavioral constraint about the instrument AU and Tape device, which is valuable. However, it does not disclose failure modes, e.g., what happens if the AU lacks a Tape device or if the beat number is out of range. It also does not state whether the operation is destructive (e.g., overwrites existing regions) or if any side effects 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 compact and well-structured: a one-sentence purpose, a short parameter list, and a NOTE for prerequisites. Each line earns its place. Minor redundancy exists (default 0 stated twice for different parameters) and the parameter list could be slightly more concise, but overall it is 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?
The description covers purpose, parameters, and prerequisites, and references related tools (load_audio and create_instrument_track). It does not explain what a 'Tape device' is or why it is required, nor does it mention potential errors or edge cases. With no annotations and an output schema present but not shown, the description is functionally complete but not fully comprehensive.
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 fully compensates by explaining all four parameters in plain language. It specifies that sample_id is the ID returned by mcp_opendaw_load_audio, defines unit_index and track_index as audio unit and track indices with defaults, and describes start_beat as the beat position. This gives agents sufficient semantic meaning to invoke the tool 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 starts with a clear verb–resource–object statement: 'Place a previously loaded audio sample as a region on a track.' It specifies the input source (sample_id from mcp_opendaw_load_audio) and distinguishes this from sibling tools like list_audio_regions or delete_audio_region by focusing on placement of a loaded sample.
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 the prerequisite: 'The audio unit must be an instrument AU with a Tape device' and gives a direct next step: 'Use mcp_opendaw_create_instrument_track first if no instrument AU exists.' It also references mcp_opendaw_load_audio as the source of sample_id. It does not explicitly list alternative tools or exclusions, but 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.
mcp_opendaw_ppqn_to_partsA
Convert a PPQN position to musical parts: bars, beats, semiquavers, ticks.
Useful for understanding where a position falls in the musical grid, accounting for time signature changes.
position_ppqn: Position in PPQN (960 = 1 quarter note).
Returns bars, beats, semiquavers, ticks, and the active time signature.
| Name | Required | Description | Default |
|---|---|---|---|
| position_ppqn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 conversion accounts for time signature changes and lists the exact return components (bars, beats, semiquavers, ticks, active time signature). This goes beyond the bare schema and clearly frames the tool as a pure, non-destructive read 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 compact and well-structured: action, use case, parameter explanation, and return summary. Every sentence adds value, and the information is front-loaded. No fluff 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 one-parameter conversion tool with an output schema, this description is complete. It states the purpose, parameter semantics, key behavioral nuance (time signature awareness), and expected output. No significant gaps remain for typical 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 input schema provides only a type ('number') with 0% description coverage. The description fully compensates by explaining the meaning of position_ppqn and giving the conversion factor (960 = 1 quarter note). This makes the parameter semantics crystal clear.
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 ('Convert') and identifies both the input (a PPQN position) and the output (musical parts: bars, beats, semiquavers, ticks). This clearly differentiates the tool from siblings like ppqn_to_seconds and seconds_to_beats, which convert to other units.
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 understanding where a position falls in the musical grid' line gives a clear use case, and it notes that time signature changes are taken into account. It does not explicitly mention alternatives or when not to use the tool, but the context is sufficient given the distinct output format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_ppqn_to_secondsA
Convert a position in beats (PPQN units) to seconds using the project's tempo map.
Accounts for tempo automation — each segment of the timeline may have a different BPM, so the conversion integrates over tempo change events. 1 beat = PPQN.Quarter = 960 pulses.
position_beats: Position in beats (float, e.g. 4.0 = beat 4).
Returns seconds (float), or error.
| Name | Required | Description | Default |
|---|---|---|---|
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden. It does so by revealing that conversion integrates over tempo change events and defining the PPQN unit (960 pulses per beat). It also notes the return type and potential error. It could mention edge cases or lack of side effects, but the key behavioral nuance is present.
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, focused paragraphs: the action, the tempo-automation context, and the parameter/return specification. No fluff, and each sentence adds value. The example and unit definition are compact.
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 conversion tool with an output schema, the description explains the conversion logic, the tempo-map behavior, parameter semantics, and return type. It could explicitly mention the inverse tool or edge cases (e.g., negative positions), but the available information is sufficient for an agent to invoke it correctly in most 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 schema provides merely 'position_beats' as a number. The description adds that it is a float in beats, gives an example (4.0 = beat 4), and clarifies its semantic position. With 0% schema coverage, this fully compensates and exceeds 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 opening sentence 'Convert a position in beats (PPQN units) to seconds using the project's tempo map' uses a specific verb and resource, clearly distinguishing it from the sibling inverse tool `mcp_opendaw_seconds_to_beats`. The scope is defined 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 explains that the conversion accounts for tempo automation and integrates over tempo changes, giving clear context for when this tool is necessary (accurate conversion in a non-constant tempo timeline). However, it does not explicitly name alternatives or state when not to use it, so it falls short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_quantize_notesA
Quantize note positions to a grid division.
Snaps each note's start position to the nearest grid line.
division: Grid division — '1/4', '1/8', '1/16', '1/32', or '1/64'. unit_index: Audio unit index (-1 = all AUs). track_index: Specific note track (-1 = all note tracks). strength: 1.0 = full quantize, 0.5 = 50% (keeps some groove).
Returns count of notes quantized.
| Name | Required | Description | Default |
|---|---|---|---|
| division | Yes | ||
| strength | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior—snapping start positions to the nearest grid line—and how strength affects the result. However, it does not mention potential destructiveness, undo behavior, or whether note durations are affected. Since no annotations are provided, the description carries the burden of behavioral disclosure; the missing details on side effects leave a notable 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 well-structured: a one-line summary, a brief behavioral clarification, parameter definitions, and a return-value note. Each line adds distinct value with no redundancy or fluff. It is front-loaded with the primary purpose, 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 moderate-complexity operation with four required parameters and an output schema, the description covers all necessary aspects: what it does, how parameters behave, and what is returned. The parameter ranges and defaults are explicit, and the output count is stated. No significant contextual information 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 is the only source of parameter meaning. It thoroughly explains all four parameters, including the allowed division values, the sentinel meanings for unit_index and track_index (-1 = all), and the strength value semantics. This fully compensates for the bare input 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 opens with a specific verb and resource: 'Quantize note positions to a grid division.' It clearly states what the tool does and distinguishes it from related note-manipulation tools like humanize_notes or rotate_notes by specifying the grid-snapping action. The return value is also disclosed, completing 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?
The description makes the use case clear: aligning note start positions to a grid with optional partial strength. It explains the meaning of each parameter and the range for strength, providing enough context for an agent to decide when this tool is appropriate. It does not explicitly discuss exclusions or alternatives, but the operation is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_quantize_velocitiesA
Quantize note velocities to discrete stepped levels.
Snaps each note's velocity to the nearest of N evenly-spaced levels, like MPC 16-level mode or stepped dynamics. Great for creating uniform, robotic feel (techno, industrial) or restoring clean velocity tiers from humanized performance data.
Args: unit_index: Audio unit index (from list_tracks) track_index: Note track index within the unit levels: Number of velocity steps (2-128). 2 = on/off, 4 = pp/p/mf/f, 8 = classical dynamics, 16 = MPC classic, 32 = fine control. mode: "snap" = nearest level, "floor" = round down to level, "ceil" = round up to level, "round_random" = probabilistic round (coins flip for half-values) min_velocity: Floor for the quantized range (0.0-1.0) max_velocity: Ceiling for the quantized range (0.0-1.0) region_index: Specific region to process (-1 = all regions)
Returns: JSON with per-region stats: notes_processed, velocity distribution across levels, original avg, new avg, changes count.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | snap | |
| levels | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| max_velocity | No | ||
| min_velocity | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains the modes and return stats, but it does not disclose whether the operation modifies notes in place, is reversible, or requires a specific state (e.g., undo support). It describes 'snap' behavior well but lacks broader side-effect 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 well-structured with a headline, explanatory paragraphs, an Args list, and a Returns section. It is longer due to the need to explain 7 parameters and 4 modes, but every sentence provides value and it is front-loaded with the core purpose. No 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 the complexity (7 params, no annotations), the description is complete: it covers purpose, use cases, all parameters with examples, and return value shape. It even references how to obtain unit_index ('from list_tracks'), aiding invocation. The presence of an output schema means return values are also formally defined, but the description adds meaningful 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 coverage is 0%, but the description compensates thoroughly. It explains every parameter in the Args section, including meaningful defaults and examples (e.g., 'levels: 2 = on/off, 4 = pp/p/mf/f, 8 = classical dynamics'), and clarifies how mode values behave. This goes far 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?
The description clearly states the action ('Quantize note velocities to discrete stepped levels') and the resource ('note velocities'). It distinguishes itself from siblings by describing the specific mechanism (snapping to N evenly-spaced levels) and provides relevant musical context ('like MPC 16-level 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 gives explicit use cases: 'Great for creating uniform, robotic feel (techno, industrial) or restoring clean velocity tiers from humanized performance data.' However, it does not mention alternative tools (e.g., scale_velocity, humanize_notes) or when not to use it, so it lacks direct exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_query_loading_completeA
Check if all audio samples are loaded and ready for playback.
Returns: loaded: true if all samples have finished loading is_ready: true if engine is fully initialized
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses the return values and their semantic meaning ('loaded' and 'is_ready'), which effectively conveys the read-only, status-query nature. It does not discuss potential blocking behavior or error handling, but for a simple status check this is adequate.
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: one sentence for the purpose and a compact bulleted list of return fields. Every sentence contributes value, and the main purpose 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 parameterless status query with an output schema, the description fully explains the tool's function and both return fields. It is complete within its simple scope, and 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 tool has zero parameters and schema coverage is 100%, so no parameter descriptions are needed. The description adds no parameter semantics, but the baseline for 0-param tools is 4 because there is nothing to clarify.
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 checks if all audio samples are loaded and ready for playback. It uses a specific verb ('Check') and resource, distinguishing it from sibling status tools like engine status or wait_for_condition.
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 is implied as a readiness check before playback, but the description does not explicitly mention when to use this tool versus alternatives like mcp_opendaw_get_engine_status or mcp_opendaw_wait_for_condition. No exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_randomize_note_chanceA
Randomize note playback probability (chance) — generative variation.
Sets a random chance value (0-100%) for each note, controlling whether it plays on each run. This is the core of generative MIDI — patterns that are different every time while maintaining structure. Notes with chance=100 always play, chance=50 play half the time, chance=0 never play (silent ghost).
Perfect for:
Ghost notes that appear/disappear (drum variation)
Generative melodies where notes drop in/out
Call-and-response patterns with probabilistic responses
Evolving textures that change per iteration
mode: Distribution of chance values:
"uniform" — random between min_chance and max_chance, evenly distributed. Each note gets an independent random chance. Default mode.
"decreasing" — chance decreases linearly from max to min across the region. First notes are most likely, last notes least. Creates fade-out of probability — pattern dissolves.
"increasing" — chance increases from min to max. Pattern emerges from silence. Builds anticipation.
"sparse" — most notes get min_chance, but some get max_chance. Creates sparse texture with occasional hits. Good for ghost notes.
"binary" — each note gets either min_chance or max_chance (coin flip). Creates stark on/off patterns.
min_chance: Minimum chance value (0-100, default 50). max_chance: Maximum chance value (0-100, default 100). seed: Random seed for reproducibility.
Returns per-track note counts, chance range applied.
Example:
Ghost note variation — 30-80% chance
randomize_note_chance(unit_index=0, track_index=0, min_chance=30, max_chance=80)
Dissolving pattern — high to low
randomize_note_chance(unit_index=0, track_index=2, mode="decreasing", min_chance=0, max_chance=100)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | uniform | |
| seed | No | ||
| max_chance | No | ||
| min_chance | No | ||
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains chance semantics (100 always plays, 50 half the time, 0 never), the five distribution modes, seed reproducibility, and the return value (per-track note counts and chance range). It falls short of a 5 because it does not clarify the meaning of unit_index/track_index/region_index or whether the operation destructively modifies the original notes.
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 well-structured with a clear title, use-case list, mode explanations, parameter definitions, and concrete examples. Despite being long, every section earns its place, front-loading the primary purpose and using bullet points and examples to convey complex information 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?
Given the tool's complexity and the absence of annotations, the description covers the core purpose, all modes, parameter meanings (for the main parameters), use cases, and return value. It is slightly incomplete because it omits explicit explanations of the index parameters, and the output schema is not shown, leaving return-value details to a single sentence.
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 thoroughly explains mode (including all five distributions), min_chance, max_chance, and seed, but it does not explain unit_index, track_index, or region_index beyond showing them in examples. This leaves three of seven parameters without explicit semantic 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 opens with 'Randomize note playback probability (chance) — generative variation,' clearly identifying the tool's function and distinguishing it from siblings like randomize_note_durations. It provides a specific verb+resource (randomize note playback probability) and explains the outcome (sets a random chance value for each note).
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 'Perfect for' section explicitly lists four generative use cases (ghost notes, generative melodies, call-and-response, evolving textures), giving clear context for when to use the tool. However, it does not mention when not to use it or name alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_randomize_note_durationsA
Randomize note durations with controllable distribution.
Adds generative variation to note lengths. Unlike humanize_notes (which adjusts timing+velocity), this focuses purely on duration with 5 distribution modes for different musical characters.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) variation: Amount of variation (0.0=no change, 0.3=moderate, 1.0=extreme). Applied as percentage of original duration. distribution: Distribution mode — "uniform" = equal probability across range, "increasing" = durations tend to get longer over time, "decreasing" = durations tend to get shorter over time, "bimodal" = clusters around short and long extremes, "jitter" = small perturbations around original values. min_duration_beats: Minimum duration in beats (0.0625=1/64th, 0.125=1/32nd, 0.25=1/16th). max_duration_beats: Maximum duration in beats (4=whole note, 8=two whole notes). preserve_total: If True, scale all durations so the total summed duration equals the original. Useful for maintaining phrase length. seed: PRNG seed for reproducibility.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| variation | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| distribution | No | uniform | |
| region_index | No | ||
| preserve_total | No | ||
| max_duration_beats | No | ||
| min_duration_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It explains distribution modes, variation interpretation, preserve_total scaling, and seed reproducibility. However, it does not explicitly state that the operation modifies note data in place, whether it is reversible, or what happens to notes outside the region/selection — gaps for a mutating 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?
The description opens with a one-sentence summary, adds a distinguishing comparison paragraph, and then a well-structured Args list where each parameter gets one concise line. 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?
The tool has 9 parameters and a complex domain (distribution modes, beat bounds, total preservation), and the description covers all of them with examples and semantics. It omits explicit mutability/undo warnings, and return values are covered by the output schema, so the remaining gap is minor.
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 fully compensates by explaining every parameter: unit_index, track_index, region_index with default interpretation, variation with examples, all 5 distribution modes with one-line definitions, min/max duration with beat examples, preserve_total semantics, and seed purpose.
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 first sentence 'Randomize note durations with controllable distribution' provides a specific verb and object, and the description explicitly contrasts with 'humanize_notes (which adjusts timing+velocity)' and enumerates 5 distribution modes, clearly differentiating it from 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 explicitly names 'humanize_notes' as the alternative and contrasts the focus ('purely on duration' vs timing+velocity), telling the agent when to choose this tool for duration-based variation. It also gives context for generative variation, making the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_redoA
Redo the last undone operation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, leaving the description to carry the full burden of behavioral disclosure. The phrase 'Redo the last undone operation' states the action but does not disclose that this is a mutating operation, whether it can fail if no undone operation exists, or how it affects the redo stack. This is significant for a state-changing tool with no annotation coverage.
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 states the action. It is front-loaded and contains no filler or redundant information, earning the highest score for conciseness and 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 parameter-less tool with an output schema, the description is minimally adequate, but it lacks contextual details such as when redo is available (e.g., after an undo), what happens if the redo stack is empty, and any error behavior. Since the tool is simple, a score of 3 reflects that it is usable but has clear gaps in behavioral 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 an empty input schema, so there are no parameter semantics to describe. The baseline score of 4 is appropriate since no parameter information is needed, and the description does not need to compensate for any schema gaps.
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 'Redo the last undone operation.' uses a specific verb ('redo') and a clear resource ('last undone operation'), which precisely defines the tool's functionality. It also distinguishes this tool from its sibling mcp_opendaw_undo by explicitly stating it reverses an undo, making the 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?
There is no guidance on when to use this tool relative to undo or any other sibling. The description does not mention that redo is only applicable after an undo operation, nor does it provide any exclusions or alternative tool suggestions. Usage context is only implied by the tool's name and standard behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_reharmonize_progressionA
Reharmonize a chord progression — substitute chords with functionally equivalent alternatives for richer harmony.
Reharmonization is the art of replacing chords while preserving (or enhancing) the harmonic function. This tool applies classical and jazz substitution techniques to transform a progression without changing its fundamental direction.
progression: Hyphen-separated chords (same format as create_chord_pads). "Am-F-C-G" = i-VI-III-VII in A minor. "C-Am-F-G" = I-vi-IV-V in C major.
technique: Substitution technique:
"tritone_sub" — Replace V7 with ♭II7 (Db7 for G7). Guide tones (3rd+7th) are shared, creates chromatic bass motion. Jazz standard.
"secondary_dominant" — Insert V7 of the target chord before it. e.g. before Am → insert E7 (V7 of Am). Adds forward motion.
"diatonic_sub" — Replace with functionally equivalent diatonic chord. I→iii or I→vi (submediant), IV→ii (supertonic). Shares tones.
"modal_interchange" — Borrow chords from parallel key (minor↔major). In major: ♭VI, ♭III, ♭VII from natural minor. In minor: IV, II from major. Adds color and emotional depth.
"passing_dim" — Insert diminished passing chord for chromatic bass motion between chords a whole step apart. Creates smooth bass lines.
intensity: How many chords to substitute:
"light" — substitute 1 chord (the most impactful)
"medium" — substitute ~30% of eligible chords
"heavy" — substitute all eligible chords
target_chord: Index of specific chord to substitute (0-based). -1 = auto select. Only used for tritone_sub and diatonic_sub.
Returns the reharmonized progression string + per-chord mapping + explanation of each substitution.
Example:
Tritone substitution on a ii-V-I
reharmonize_progression("Dm7-G7-Cmaj7", technique="tritone_sub")
→ "Dm7-Db7-Cmaj7" (G7→Db7, guide tones shared)
Modal interchange on pop progression
reharmonize_progression("C-G-Am-F", technique="modal_interchange")
→ "C-G-Am-Fm" (F→Fm, borrowed from C minor)
Secondary dominants for jazz
reharmonize_progression("C-Am-Dm-G7", technique="secondary_dominant")
→ "C-E7-Am-A7-Dm-G7" (E7 before Am, A7 before Dm)
| Name | Required | Description | Default |
|---|---|---|---|
| intensity | No | medium | |
| technique | No | tritone_sub | |
| progression | No | Am-F-C-G | |
| target_chord | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 thoroughly explains the transformation behavior for each technique, the meaning of intensity levels, and explicitly states the return value (progression string + mapping + explanation). This is significantly transparent. However, it does not explicitly state whether the tool modifies project state or is purely computational, which would have made it 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 long but every sentence earns its place. It is front-loaded with a clear summary, then systematically explains each parameter with examples and musical rationale. The use of bullet-like formatting for techniques and intensity levels improves scannability without wasting 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?
Given the tool's complexity (4 parameters, 5 techniques, multiple intensity levels) and absence of annotations, the description is remarkably complete. It covers input format, all technique variants with musical context, intensity semantics, target_chord behavior, and the return payload. The existence of an output schema means return-value details are not strictly needed in the 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?
Schema description coverage is 0%, so the description must fully compensate. It does: every parameter (progression, technique, intensity, target_chord) is explained with concrete musical examples, possible values, and their effects. This goes far beyond the bare schema, providing essential context for correct invocation.
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: 'Reharmonize a chord progression — substitute chords with functionally equivalent alternatives for richer harmony.' This clearly states the tool's function and distinguishes it from sibling tools like create_chord_progression or modulate_progression. The detailed technique list further clarifies its unique 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 provides clear context for when to use the tool (reharmonization for richer harmony) and details each technique's musical purpose (e.g., 'Jazz standard', 'Adds forward motion'). However, it does not explicitly name alternative tools or state when not to use this tool compared to siblings, so it misses the explicit exclusion guidance for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remix_trackA
Full Suno remix pipeline in one call — analyze → import → harmony → mix → master.
Takes any audio file (from download_audio or local) and creates a complete remix: detect BPM + key → set project tempo → import stems → auto-generate matching chord progression → harmonic arrangement → genre mix → mastering. One call replaces 8-10 individual tool calls.
Steps performed:
analyze_track (BPM + key + mode + LUFS)
set_bpm to detected tempo
import_audio_to_tracks (with stem separation if stem_mode set)
create_progression_from_key (diatonic, style-appropriate)
create_harmonic_arrangement (arp + melody on top of stems)
apply_genre_mix (genre-specific processing)
add_mastering_chain (LUFS target)
After this call, the project is remix-ready — call render_full to export.
filename: Path to audio file (from download_audio or local path). genre: Genre for mix processing (synthwave, house, techno, dnb, trap, etc). style: Progression style (pop, jazz, rock, synthwave, folk, lofi). stem_mode: Stem separation mode ("bs2", "bs4", "bs6") or "" for simple import. master_lufs: Mastering target (-14 Spotify, -10 loud, -16 Apple). add_harmony: If True, generates harmonic layers (arp + melody). Default True. add_counter_melody: If True, adds counter-melody layer. Default False. bars: Arrangement length in bars. Default 8.
Returns: analysis results, tracks created, harmony layers, effects, mastering.
Example:
Full pipeline: Suno → download → remix
chirp_generate → audio_url download_audio(audio_url) → /tmp/track.wav remix_track("/tmp/track.wav", genre="synthwave", style="synthwave", stem_mode="bs6", add_counter_melody=True) render_full() → export
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| genre | No | synthwave | |
| style | No | pop | |
| filename | Yes | ||
| stem_mode | No | bs4 | |
| add_harmony | No | ||
| master_lufs | No | ||
| add_counter_melody | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does well by disclosing the exact ordered steps (analyze_track, set_bpm, import_audio_to_tracks, etc.), conditional stem separation, and return contents. It lacks explicit error behavior, idempotency, or whether existing project state is cleared, so it is not perfect.
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 well-structured with an overview, numbered step list, parameter definitions, returns, and an example. There is minor redundancy between the opening pipeline phrase and 'One call replaces 8-10 individual tool calls,' but the length is justified for an 8-parameter complex 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 covers all essential dimensions: when to use, what the pipeline does step-by-step, all parameter semantics, return values, and a concrete usage example. Given the tool's complexity and lack of annotations, this is 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%, but the description compensates fully with a dedicated parameter list defining every parameter with concrete examples and defaults: genre examples, stem_mode choices ('bs2', 'bs4', 'bs6'), master_lufs targets (-14 Spotify, -10 loud), and boolean semantics. This is excellent 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 opens with 'Full Suno remix pipeline in one call — analyze → import → harmony → mix → master', clearly identifying a specific composite verb+resource. It distinguishes itself from granular siblings by stating 'One call replaces 8-10 individual tool calls,' making its unique pipeline role 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?
It states input context ('Takes any audio file (from download_audio or local)') and provides a clear follow-up workflow ('call render_full to export'). It implicitly guides usage via 'One call replaces 8-10 individual tool calls', but does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remove_audio_busA
Remove an FX audio bus and its associated audio unit.
Provide either bus_index (from list_audio_buses) or fx_unit_index (from create_send). Cannot remove the primary output bus (index 0).
bus_index: Bus index to remove (must be > 0, i.e. not primary). fx_unit_index: Alternative — the FX AU index returned by create_send.
| Name | Required | Description | Default |
|---|---|---|---|
| bus_index | Yes | ||
| fx_unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry transparency. It discloses the destructive nature: removing the bus and its associated audio unit, and the index-0 restriction. But it does not mention side effects on sends routed to the bus, reversibility (undo), or any permission requirements. The description covers the core destructive action but lacks richer 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 compact and front-loaded: first line states the purpose, followed by clear parameter guidance and a constraint. Every sentence contributes unique information with no filler. It is well-organized for quick scanning.
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 focused removal tool, the description covers the main action, parameter sources, and the critical primary-bus limitation. It does not discuss impact on sends/effects that reference the bus or clarify the return value, but an output schema is present, reducing that need. Overall, it is sufficiently complete for an agent to invoke correctly under most circumstances.
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 explains bus_index must be > 0 and preferred from list_audio_buses, and fx_unit_index is an alternative from create_send. This adds meaning beyond the schema's bare 'Bus Index' and 'Fx Unit Index'. However, the 'either/or' phrasing contradicts the schema marking both as required, creating ambiguity about how to supply 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 opens with a specific verb and resource: 'Remove an FX audio bus and its associated audio unit.' This clearly differentiates from sibling tools like create_audio_bus, list_audio_buses, and set_bus_enabled. The object is precisely an FX audio bus, not a generic bus or send.
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 the two parameter sources: bus_index from list_audio_buses and fx_unit_index from create_send, and warns the primary output bus (index 0) cannot be removed. However, it does not compare with related tools like remove_send or delete_audio_unit to clarify when this tool is preferable. The 'either/or' guidance also conflicts with the schema's both-required constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remove_effectA
Remove an audio effect from an audio unit's chain.
unit_index: Audio unit index. effect_index: Effect position to remove (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the removal but does not mention side effects like reindexing of remaining effects, error behavior for invalid indices, or any destructive/irreversible implications. This is a significant 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?
The description is exceptionally concise: one purpose line and two parameter definitions. Every sentence adds value, with no fluff or repetition. The structure front-loads the action and then lists parameters clearly.
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 removal tool, the description is adequate but leaves gaps: no guidance on locating indices, no error handling details, and no mention of whether unit_index is 0-based. An output schema exists, so return values need not be explained, but the lack of usage and error context makes it 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%, but the description compensates by clearly defining both parameters: 'unit_index: Audio unit index.' and 'effect_index: Effect position to remove (0-based).' It adds the crucial 0-based detail for effect_index, though remaining ambiguity about unit_index's indexing prevents a perfect score.
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 action: 'Remove an audio effect from an audio unit's chain.' This clearly identifies the verb, resource, and scope, and distinguishes it from sibling tools like add_effect, list_effects, remove_midi_effect, and set_effect_enabled.
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 is implied through the action and parameter definitions, but the description does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites such as obtaining valid indices via list_effects. No exclusions or context guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remove_midi_effectA
Remove a MIDI effect from an audio unit's MIDI chain.
unit_index: Audio unit index. effect_index: MIDI effect position to remove (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 of behavioral disclosure. It mentions 0-based indexing, but does not state whether the removed effect is permanently deleted, what happens if the index is out of range, whether the operation is reversible, or if subsequent effect indices shift. For a destructive 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 extremely concise: two sentences plus two parameter lines, all front-loaded and directly relevant. Every word adds value, with no redundant explanations 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?
For a simple tool with two integer parameters and an output schema, the description covers the core operation and parameter meanings. It omits practical context like verifying the effect exists or noting index shifting after removal, but the presence of an output schema and the tool's low complexity make this 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?
Schema description coverage is 0%, but the description compensates by defining both parameters: unit_index as 'Audio unit index' and effect_index as 'MIDI effect position to remove (0-based)'. This adds essential meaning beyond the raw schema property titles, clarifying the 0-based nature of the index.
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 'Remove a MIDI effect from an audio unit's MIDI chain' uses a specific verb (remove) and clearly identifies the target resource and container. It distinguishes this from sibling tools like remove_effect (audio effects) and add_midi_effect, 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?
The description states what the tool does but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like list_midi_effects for obtaining valid indices or remove_effect for audio effects. Usage is implied by the name and purpose but not explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remove_modular_moduleA
Remove a module from a Modular device.
au_index: Audio unit index. effect_index: Effect index within the AU. module_index: Module index to remove.
Returns success or error. All connections to/from this module are also removed.
| Name | Required | Description | Default |
|---|---|---|---|
| au_index | Yes | ||
| effect_index | Yes | ||
| module_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explicitly discloses a key side effect: 'All connections to/from this module are also removed.' It also notes the return type (success or error). Missing details like irreversibility, but the major behavioral trait is 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?
Five short lines: one for purpose, three for parameters, one for side effect. Front-loaded and every sentence adds value with no 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 the tool's simplicity (3 integers, no annotations, no output schema richness needed), the description covers the action, parameters, side effect, and return. It could mention how to obtain valid indices or error behavior, but it is sufficient for a focused mutation 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 0%, so the description compensates by explaining each parameter: 'au_index: Audio unit index', 'effect_index: Effect index within the AU', 'module_index: Module index to remove.' This adds hierarchical context beyond the bare integer names. It doesn't specify zero-based indexing or how to retrieve valid indices, but it is meaningful.
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 starts with a specific verb+resource: 'Remove a module from a Modular device.' This clearly distinguishes it from sibling tools like add_modular_module, list_modular_modules, and connect_modular_modules.
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 is implied by the action and parameter context, but there is no explicit 'when to use' or exclusion of alternatives (e.g., remove_effect for non-modular chains). It doesn't mention prerequisites like obtaining indices via list_modular_modules, but the operation itself is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_remove_sendA
Remove an aux send from an audio unit.
unit_index: Source audio unit index. send_index: Send index to remove (from list_sends).
| Name | Required | Description | Default |
|---|---|---|---|
| send_index | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits on its own. It reveals the destructive nature (removing a send) but does not mention potential side effects (e.g., audio routing changes, irreversibility, or error conditions). This is a significant gap for a mutation tool, warranting a low score.
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 first sentence states the purpose, followed by two brief parameter definitions. Every sentence earns its place with no 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?
For a simple two-parameter operation, the description is largely sufficient: it explains the operation and both parameters, and an output schema exists so return values do not need elaboration. It could benefit from noting that the send index comes from list_sends, which it does, but does not mention prerequisites like the audio unit existing. Overall, it is complete enough for the tool's low 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 schema provides only parameter names and types with 0% description coverage, so the description compensates by explaining both parameters clearly: 'unit_index: Source audio unit index' and 'send_index: Send index to remove (from list_sends)'. This adds actionable meaning beyond the schema, though it does not elaborate on constraints or formats.
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 an aux send') and the target resource ('an audio unit'). This distinguishes it from sibling tools like create_send, list_sends, and set_send_level, which have different verbs and purposes.
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 when you want to delete an existing aux send, and the parameter hint 'from list_sends' provides useful context about how to obtain the correct send_index. However, it does not explicitly name alternatives or state when not to use the tool, 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.
mcp_opendaw_rename_unitA
Rename an audio unit's instrument and optionally set its icon.
Instrument AUs have a label (display name) and icon (symbol) on their InstrumentBox. This sets both. The output AU (index 0) has no instrument and cannot be renamed.
unit_index: Audio unit index (must be >= 1, not the output AU). name: New display name (empty = skip). icon: New icon symbol (empty = skip, e.g. 'piano', 'guitar', 'drums').
Returns old and new name/icon.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | Yes | ||
| name | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It transparently states that the tool 'sets both' label and icon, that empty name/icon values cause a skip, and that it 'Returns old and new name/icon'—revealing the mutation and feedback behavior. It doesn't discuss error handling for invalid indices or permissions, but the core behavior is well 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 well-structured and front-loaded: a one-sentence summary, followed by necessary context about InstrumentBox, then a concise parameter list with constraints, and a note about return values. Every sentence earns its place; 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 tool, the description is quite complete: it covers the operation, constraints, parameter semantics, and return values. An output schema exists, and the description also mentions the return. It doesn't specify behavior for non-existent unit indices, but the 'must be >= 1' constraint implies the expected usage. Minor gap, but overall very 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?
The schema has 0% description coverage for parameters, but the description fully compensates. It explains each parameter precisely: unit_index must be >= 1 and cannot be the output AU, name is a display name with empty=skip, and icon is a symbol with empty=skip and examples ('piano', 'guitar', 'drums'). This adds meaning far 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?
The description opens with a clear, specific verb+resource: 'Rename an audio unit's instrument and optionally set its icon.' It further clarifies the scope by explaining that Instrument AUs have a label and icon on their InstrumentBox, and that both are set. This distinguishes it from sibling tools like set_device_label or replace_instrument by focusing on the instrument's display name and icon.
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: renaming an instrument AU's label/icon. It explicitly states a when-not condition: 'The output AU (index 0) has no instrument and cannot be renamed,' and adds the constraint that unit_index must be >= 1. However, it does not name alternative tools for other scenarios, 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.
mcp_opendaw_render_and_analyzeA
Render the current project and run full audio analysis in one call.
Combines export_audio + analyze_mix into a single tool — the feedback loop for iterative mixing. Agent renders, listens, and gets concrete numbers: LUFS, spectrum, stereo, dynamics, and prioritized suggestions.
This is the 'ears' tool. After making mix changes, call this to verify:
Renders project to WAV via offline engine
Runs full mix analysis (LUFS, spectrum, stereo, dynamics)
Returns concrete numbers + prioritized suggestions
filename: Output filename (without .wav extension). sample_rate: Render sample rate (48000 recommended). analysis_depth: "full" (all analyses) or "quick" (LUFS + spectrum only).
Returns analysis JSON with mix_suggestions, master_check, and file path.
Example:
After adjusting mix
result = render_and_analyze("my_mix")
→ {lufs: -14.2, spectrum: {...}, suggestions: [...], file: "..."}
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | render_analysis | |
| sample_rate | No | ||
| analysis_depth | No | full |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 provides good insight: it renders to WAV via offline engine, runs full analysis (LUFS, spectrum, stereo, dynamics), and returns concrete numbers plus prioritized suggestions. It also explains the difference between 'full' and 'quick' analysis depth. However, it omits potential side effects like file overwrites or timing considerations.
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 well-structured with a clear opening, numbered steps, and an example. It front-loads the purpose and remains focused. There is slight redundancy ('feedback loop' and 'After making mix changes, call this to verify' overlap), preventing a perfect score.
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 combined render+analyze tool, the description covers what it does, when to use it, all parameters, and the return structure (analysis JSON with mix_suggestions, master_check, file path). It could mention where the WAV file is saved or whether it overwrites existing files, but it is largely complete for agent 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%, but the description fully explains all three parameters: filename (output filename without .wav extension), sample_rate (48000 recommended), and analysis_depth ('full' vs 'quick' with exact meanings). This far exceeds the bare schema and makes parameter choice unambiguous.
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 verb+resource: 'Render the current project and run full audio analysis in one call.' It distinguishes itself by explicitly saying it combines export_audio + analyze_mix and positions itself as the 'ears' tool for iterative mixing, setting it apart from sibling analysis/rendering 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 provides clear when-to-use guidance: 'After making mix changes, call this to verify' and frames it as the feedback loop for iterative mixing. It does not explicitly state when not to use it or name alternative tools beyond mentioning it combines two others, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_render_fullA
Render the entire project as a single stereo WAV file (full mixdown).
filename: Output filename (without .wav extension). sample_rate: Export sample rate (default 48000).
Uses OfflineEngineRenderer with Option.None (no stems config = full mix). Renders from beat 0 to the end of the last region.
Returns the path to the exported WAV and audio metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | full_mix | |
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the internal rendering mechanism (OfflineEngineRenderer with Option.None), the exact time range rendered, and the return payload (path and audio metadata). It does not mention potential side effects like file overwriting, but for a render operation this is solid 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 tightly structured: a one-sentence purpose, a brief parameter list, and two implementation/behavior details. Every sentence adds value, 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?
The description covers the purpose, both parameters with usage semantics, the exact render range, the rendering engine used, and the return format. With an output schema available for the return value, this is a complete and self-contained description for a two-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?
The schema provides defaults for both parameters, but the description adds value by clarifying that filename should be given without the .wav extension and restating the default sample rate. This helps the agent avoid common errors, going 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 opens with a specific verb+resource+scope: 'Render the entire project as a single stereo WAV file (full mixdown).' This clearly distinguishes it from range renders, stem exports, and other audio export tools by emphasizing the full mixdown scope and single-file output.
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: it renders the full project from beat 0 to the last region, and is intended for a full mixdown. However, it does not explicitly name alternative tools (e.g., export_mix, render_range) or state when not to use it, so it stops short of a full usage guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_render_full_formatA
Render the entire project and convert to MP3 or FLAC in one step.
filename: Output filename (without extension). sample_rate: Export sample rate (default 48000). format: 'wav' (default), 'mp3', or 'flac'. MP3/FLAC uses system ffmpeg. bitrate: MP3 bitrate for CBR (default '320k'). Ignored for WAV/FLAC.
Combines render_full + convert_audio. Returns both WAV and converted file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | wav | |
| bitrate | No | 320k | |
| filename | No | full_mix | |
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the return values ('Returns both WAV and converted file paths'), the dependency on system ffmpeg, default sample rate, and that bitrate is ignored for WAV/FLAC. It could go further (e.g., potential runtime, side effects), but the provided transparency is solid.
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 efficient: a purpose sentence, parameter explanations, and a final sentence covering combination and return. No fluff or repetition; every line 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 moderate complexity (4 optional params, no required fields), an output schema, and no annotations, the description is comprehensive. It covers purpose, parameters, dependencies, and return values. Missing usage exclusion is the only small gap, already captured in usage_guidelines.
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 fully compensates. It explains each parameter meaning beyond defaults: filename ('without extension'), sample_rate, format values and defaults, bitrate behavior including 'Ignored for WAV/FLAC'. This adds significant value over 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 opens with a specific verb and resource: 'Render the entire project and convert to MP3 or FLAC in one step.' It also explicitly notes it 'Combines render_full + convert_audio,' which clearly distinguishes it from sibling rendering and conversion 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 clear context for when to use this tool (when a one-step full-project render and format conversion is needed) and references the two underlying operations, 'render_full + convert_audio.' However, it does not explicitly state when NOT to use it or list alternative tools for WAV-only or conversion-only tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_render_full_songA
Render the entire project — auto-detects song length from all regions.
Scans all note and audio regions across all tracks to find the latest ending point, then renders from beat 0 to that point plus a configurable tail for reverb/delay tails. No manual beat counting needed.
This closes the pipeline gap: after create_song_with_variations (or any arrangement tool), call render_full_song to get the final WAV.
filename: Output filename (without .wav extension). sample_rate: Export sample rate (default 48000). tail_beats: Extra beats at the end for reverb/delay tails (default 4 = 1 bar).
Returns the path to the exported WAV, song duration in seconds, and audio metadata (peak, has_audio).
Example:
After building a song
create_song_with_variations("dnb") render_full_song(filename="my_dnb_track")
Shorter tail for tight electronic
render_full_song(filename="techno_mix", tail_beats=2)
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | full_song | |
| tail_beats | No | ||
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does explain the rendering algorithm (scans all note/audio regions, finds the latest ending point, renders from beat 0 plus a configurable tail) and the return payload (WAV path, duration, peak, has_audio). It stops short of disclosing operational traits like whether the output file overwrites existing files or whether the audio engine must be running.
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 well-structured and front-loaded: lead purpose statement, algorithm detail, pipeline context, parameter list, return list, and two compact examples. There is slight redundancy between 'auto-detects song length from all regions' and the following sentence that re-describes the scanning, but nothing is wasted or off-topic.
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 that all parameters are optional, an output schema exists, and this is a simple render operation, the description covers everything needed for correct invocation: purpose, algorithm, parameters, returns, and a pipeline example. Its main gap is not explicitly distinguishing the closely named siblings render_full and render_full_format, which could cause selection confusion among the large sibling set.
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 inline parameter documentation is essential and fully compensates: filename (specified without .wav extension), sample_rate (export rate, default 48000), and tail_beats (extra beats for reverb/delay tails, default 4 = 1 bar). The two examples further demonstrate parameter usage, making all three parameters clear despite 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?
The description opens with 'Render the entire project — auto-detects song length from all regions,' which states a specific verb (render), resource (entire project), and a distinguishing scope (auto-detection across all regions). This clearly differentiates it from nearby siblings like render_range and export_mix, which target specific ranges or export formats rather than full-project rendering.
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 explicit: 'after create_song_with_variations (or any arrangement tool), call render_full_song to get the final WAV,' and the phrase 'No manual beat counting needed' implies an advantage over range-based alternatives. However, it never names direct alternatives (render_range, render_full, export_stems) or states when NOT to use this tool, so exclusion conditions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_render_rangeA
Render only a portion of the project (e.g. chorus only) for quick A/B comparison.
start_beat: Start position in beats (0 = project start). end_beat: End position in beats. filename: Output filename (without .wav extension). sample_rate: Export sample rate (default 48000).
Uses OfflineEngineRenderer with custom range. Faster than full export for checking specific sections during mixing.
Returns the path to the exported WAV and audio metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| end_beat | Yes | ||
| filename | Yes | ||
| start_beat | Yes | ||
| sample_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the underlying implementation ('Uses OfflineEngineRenderer with custom range'), the output ('Returns the path to the exported WAV and audio metadata'), and the speed benefit. It does not explicitly state that rendering is non-destructive, but as an export operation this is largely implied and no contradictory behavior is hinted.
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 well-structured and efficient: a one-sentence purpose, a concise parameter list, an implementation note, and the return value. Every sentence provides value with no filler. The purpose is front-loaded, making it easy for an agent 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?
Given the tool's moderate complexity (4 parameters, all documented), the presence of an output schema that covers return values, and the clear usage context, the description is complete. It even includes an internal implementation detail and a performance comparison, which helps the agent reason about when to choose this tool over full renders.
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%, but the description compensates fully by explaining every parameter: start_beat (with '0 = project start'), end_beat, filename (without .wav extension), and sample_rate (with default). This adds concrete meaning beyond the bare schema field names and 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 opens with a specific verb and resource ('Render only a portion of the project') and gives a concrete example ('chorus only'). It clearly distinguishes itself from full-export tools by explicitly limiting scope to a range, which is reinforced by the tool name and sibling names.
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: 'for quick A/B comparison' and 'Faster than full export for checking specific sections during mixing.' It implies when to use it (section-level mixing checks) but does not explicitly name alternative tools or describe when not to use it, though the comparison to full export gives sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_reorder_sectionsA
Reorder song sections — rearrange blocks on the timeline.
Takes a list of section boundaries and rearranges them into a new order. Each section is defined by its start and end beat. The tool collects all note content from each section, then places them in the specified new order, back-to-back, starting from the first section's original start position.
This is the full song structure editor: instead of swapping two sections (swap_sections), you can completely rearrange the form. Turn verse-chorus-verse-chorus-bridge-chorus into chorus-verse-bridge-chorus-verse-chorus in one call.
section_order: JSON array of section objects, each with "start" and "end" beat positions, listed in the NEW desired order. Example: '[{"start":0,"end":8},{"start":16,"end":24},{"start":8,"end":16}]' This takes sections at [0-8], [16-24], [8-16] and places them in that order, starting at beat 0.
Sections can overlap in the original but not in the output — they are placed sequentially. Section lengths are preserved.
unit_indices: Comma-separated unit indices to process ("" = all units).
Returns sections reordered, notes moved per unit, new section layout.
Example:
Move chorus to front
reorder_sections('[{"start":16,"end":32},{"start":0,"end":8},{"start":8,"end":16}]')
| Name | Required | Description | Default |
|---|---|---|---|
| unit_indices | No | ||
| section_order | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 an excellent job. It explains the algorithm (collects note content, places in new order, back-to-back, from original start), handles edge cases (overlapping sections are allowed but placed sequentially), and states what is returned. This is far beyond a basic 'reorders sections' statement.
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?
Though the description is longer than typical, every sentence adds value: a one-line summary, behavioral details, parameter explanation with example, and return information. It is well-organized and front-loaded, making it easy for an agent to grasp the essential information quickly.
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 an output schema, the description still mentions the return values, and it fully covers the parameter semantics, behavioral rules, and usage context. For a tool with this complexity (full song structure rearrangement), the description is comprehensive and self-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%, so the description fully compensates by explaining both parameters in detail. It defines section_order as a JSON array with start/end beats, gives an example, and clarifies ordering semantics (sections placed sequentially). It also explains unit_indices and its default behavior ("" = all units).
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 and resource: 'Reorder song sections — rearrange blocks on the timeline.' It also explicitly distinguishes itself from the sibling tool swap_sections, making it clear this is the full structure editor versus a simple swap.
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 guidance on when to use this tool: 'This is the full song structure editor: instead of swapping two sections (swap_sections), you can completely rearrange the form.' It also includes a concrete example of transforming a song structure, giving the agent clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_repeat_notesA
Repeat existing notes in a region N times with per-repeat transformations.
Takes the notes already in the region and copies them repeats times,
each copy offset in time, pitch, and velocity. Unlike create_midi_echo
(which decays feedback repeats), this tool preserves note structure and
applies a uniform transform per repeat cycle — ideal for sequences,
ostinato patterns, and motivic development.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) repeats: Number of repeat cycles (1-16, each cycle = full copy of source notes) transpose_semitones: Semitones added per repeat cycle (0=same, 12=octave up, -12=octave down, 7=fifth up). Cumulative. velocity_decay: Velocity multiplier per repeat (0=fade out, 1=constant, 0.8=gradual fade). Applied cumulatively. time_gap_beats: Extra gap between repeats in beats (0=back-to-back, 0.5=half-beat rest between cycles) direction: Transpose direction — "up" or "down" (affects sign of transpose) dest_track_index: Destination track (-1 = same track)
| Name | Required | Description | Default |
|---|---|---|---|
| repeats | No | ||
| direction | No | up | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| time_gap_beats | No | ||
| velocity_decay | No | ||
| dest_track_index | No | ||
| transpose_semitones | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosing behavior. It explains the copy-and-transform mechanic, cumulative parameter effects (transpose, velocity decay, time gap), and note-structure preservation. However, it does not explicitly state whether original notes are retained or replaced, which is a minor transparency 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 well-structured: a one-sentence summary, a behavioral explanation, and a detailed parameter list. Every sentence adds operational value, and the Args section is essential given the sparse schema. There is 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 tool with 9 parameters, no annotations, and an output schema, the description covers purpose, mechanics, parameter semantics, and usage context. It omits edge cases (e.g., behavior when region has no notes) but overall provides sufficient detail 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 schema has 0% description coverage, but the Args section fully compensates by documenting all 9 parameters with units, ranges, and behavioral meaning (e.g., velocity_decay: '0=fade out, 1=constant, 0.8=gradual fade'). This is far richer than the 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 clearly states 'Repeat existing notes in a region N times with per-repeat transformations', specifying the verb, resource, and scope. It explicitly contrasts with create_midi_echo, distinguishing this tool from a sibling and eliminating 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?
The description explicitly names create_midi_echo as an alternative and explains the difference: 'Unlike create_midi_echo (which decays feedback repeats), this tool preserves note structure and applies a uniform transform per repeat cycle'. It also lists ideal use cases (sequences, ostinato patterns, motivic development), giving concrete guidance on when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_repeat_phraseA
Repeat a melodic phrase N times with transposition — melodic sequence.
A sequence is one of the most powerful development techniques in Western music: repeat a melodic idea at different pitch levels. Each repetition is transposed by a fixed interval, creating a chain of related but evolving phrases.
Unlike repeat_notes (which repeats individual notes), create_sequence copies an entire phrase — all notes in the source region — and places each copy after the previous one, transposed and optionally with velocity and timing transformations.
Diatonic transposition moves through the scale (preserving scale membership), while chromatic transposition shifts by exact semitones. Sequences can ascend or descend, accelerating or decelerating.
Bach fugues, jazz ii-V-I chains, pop chorus lifts, film score ostinato builds, and minimalistic pattern music all use sequences.
Args: unit_index: Audio unit index track_index: Note track index with source phrase region_index: Region index (-1 = first region) repetitions: Number of sequence copies (2-16, default 4). Each copy is placed after the previous one in time. transpose_semitones: Transposition interval per repetition (1-12, default 2 = step). Positive = ascending, negative = descending. Used as scale steps in diatonic mode, exact semitones in chromatic mode. transpose_mode: Transposition method — "diatonic": move through scale (preserves scale membership) "chromatic": shift by exact semitones (may leave scale) scale: Scale for diatonic transposition ("major", "minor", "dorian", "phrygian", "lydian", "mixolydian", "locrian", "harmonic_minor", "melodic_minor", "pentatonic", "blues", "chromatic") root: Root note for scale velocity_pattern: Velocity transformation across repetitions — "constant": same velocity as source "crescendo": linear ramp from velocity_start to velocity_end "decrescendo": linear ramp from velocity_end to velocity_start "fade_out": each repetition softer than previous "build": exponential increase, climax at last repetition velocity_start: Starting velocity (0-1, default 0.8) velocity_end: Ending velocity (0-1, default 0.8) time_stretch: Duration multiplier per repetition (0.5-2.0, default 1.0 = same duration). 0.5 = accelerating, 2.0 = slowing down. Creates rhythmic sequences. cross_track: If >= 0, place sequences on this track index instead of source track (preserves original phrase).
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | C | |
| scale | No | major | |
| unit_index | Yes | ||
| cross_track | No | ||
| repetitions | No | ||
| track_index | Yes | ||
| region_index | No | ||
| time_stretch | No | ||
| velocity_end | No | ||
| transpose_mode | No | diatonic | |
| velocity_start | No | ||
| velocity_pattern | No | constant | |
| transpose_semitones | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It clearly explains the repetition, transposition, placement, and cross-track preservation behavior. However, it does not explicitly state whether the default operation modifies the source region, whether it creates new regions, or if the operation is reversible — significant gaps 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 front-loaded with a clear one-sentence summary, followed by useful musical context and a well-organized Args section. The musical examples (Bach, jazz, etc.) are somewhat verbose but add context. The length is justified by the 0% schema coverage, though it could be trimmed slightly.
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 (13 parameters) and the presence of an output schema, the description is highly complete. It explains the operation, all parameters, options, and even musical applications. It lacks only explicit side-effect statements, but the detailed parameter and behavior documentation covers nearly all necessary 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 description coverage is 0%, but the description fully compensates with a detailed Args section covering all 13 parameters, including ranges, defaults, examples, and mode explanations. This goes far beyond the schema's mere titles and defaults, making parameter meanings immediately clear.
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+resource+scope: 'Repeat a melodic phrase N times with transposition.' It distinguishes from repeat_notes, but confusingly attributes the entire-phrase copy behavior to 'create_sequence' rather than this tool, which may blur identity with the sibling create_sequence. This is a clear purpose with a minor naming ambiguity.
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 contrasts with repeat_notes (individual notes vs entire phrase) and explains the musical context for sequences, giving clear when-to-use signals. However, it does not provide explicit when-not-to-use guidance beyond the repeat_notes contrast, and the create_sequence reference introduces ambiguity about which tool to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_replace_from_presetA
Replace an audio unit's instrument/effects/timeline from a preset.
Uses PresetDecoder.replaceAudioUnit — swaps the instrument in an existing AU, optionally keeping the target's MIDI effects, audio effects, and/or timeline. The preset must contain a compatible instrument type (MIDI→MIDI, Audio→Audio).
unit_index: Target AU index to replace. preset_b64: Base64 preset bytes from export_preset. keep_midi_effects: If true, keep target's existing MIDI effects. keep_audio_effects: If true, keep target's existing audio effects. keep_timeline: If true, keep target's existing tracks/regions/notes.
Returns success or error with reason.
| Name | Required | Description | Default |
|---|---|---|---|
| preset_b64 | Yes | ||
| unit_index | Yes | ||
| keep_timeline | No | ||
| keep_midi_effects | No | ||
| keep_audio_effects | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains that the tool swaps the instrument, optionally keeping effects/timeline (defaults imply they are not kept), and specifies the compatibility constraint. It also mentions the return type (success or error). This is meaningful behavioral context beyond the schema, though it doesn't discuss reversibility 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?
The description is concise and well-structured: a purpose statement, a method reference, a compatibility note, a bullet-style parameter list, and a return statement. Every sentence earns its place without 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 covers purpose, parameters, constraints, and return behavior. Given the tool's complexity (5 params, mutation, no annotations) and the presence of an output schema, it is quite complete. It could add guidance on when to use it (covered under usage guidelines) or what happens with invalid presets, but these are minor 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 coverage is 0% (no property descriptions in the schema), but the description thoroughly explains each parameter: unit_index, preset_b64, and the three keep_* flags. This fully compensates for the schema gap and adds precise meaning, including defaults and provenance (preset_b64 from export_preset).
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 'Replace an audio unit's instrument/effects/timeline from a preset' with a specific verb and resource. It also names the underlying method and the optional elements (MIDI effects, audio effects, timeline). However, it does not explicitly differentiate from similar tools like mcp_opendaw_replace_instrument, so it falls 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?
The description implies usage with presets from 'export_preset' and notes the compatibility requirement (MIDI→MIDI, Audio→Audio), but it does not explicitly state when to use this tool instead of alternatives such as mcp_opendaw_replace_instrument or mcp_opendaw_import_preset. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_replace_instrumentA
Replace the instrument on an audio unit with a different MIDI instrument.
Uses ProjectApi.replaceMIDIInstrument — deletes the old instrument and creates a new one on the same AU. Only works for MIDI instruments (Nano, Vaporisateur, Soundfont, Apparat). Tape (audio player) cannot be replaced this way.
The AU must have a CaptureMidiBox (i.e. it was created as a synth/note instrument, not an audio track).
unit_index: Audio unit index (must be >= 1). new_instrument: Factory key — 'Vaporisateur', 'Nano', 'Soundfont', 'Apparat'.
Returns old and new instrument type.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| new_instrument | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparently discloses that the operation deletes the old instrument and creates a new one, which is critical destructive behavior. It also states return data (old and new instrument type) and constraints, though it does not mention potential side effects or success/failure conditions.
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 well-structured with a clear opening statement, followed by implementation details, constraints, parameter explanations, and return value. Every sentence adds necessary information with no fluff or repetition, striking a good balance between completeness and 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?
Given the tool's moderate complexity, the description covers all key aspects: operation, scope, limitations, prerequisites, parameter semantics, and return value. With an output schema present (per context signals) and the description already stating the return type, the tool is fully specified for an agent to use 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 only provides parameter names and types with 0% coverage. The description compensates thoroughly by defining unit_index as an audio unit index with a minimum of 1, and new_instrument as a factory key with the allowed values listed explicitly ('Vaporisateur', 'Nano', 'Soundfont', 'Apparat'). This is essential information 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 opens with a specific verb and resource: 'Replace the instrument on an audio unit with a different MIDI instrument.' It clearly distinguishes this from sibling tools by specifying it operates on audio units and is limited to MIDI instruments, and even notes which instruments are excluded (Tape).
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 when-to-use guidance: works only for MIDI instruments (Nano, Vaporisateur, Soundfont, Apparat) and explicitly states when not to use it (Tape cannot be replaced this way). It also gives a prerequisite (the AU must have a CaptureMidiBox), but it does not mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_reset_playfield_paramsADestructive
Reset all parameters of a Playfield drum sample to defaults.
Resets mute, solo, exclude, polyphone, pitch, attack, release, sampleStart, sampleEnd, gate to their default values.
unit_index: AU index containing the Playfield. sample_index: Sample slot index to reset.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| sample_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the destructiveHint annotation by listing exactly which parameters are reset (mute, solo, exclude, polyphone, pitch, attack, release, sampleStart, sampleEnd, gate). It clearly communicates the destructive scope, though it does not mention undoability or side effects on other sample slots.
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: a clear purpose line, a list of affected parameters, and parameter definitions. Every sentence earns its place, with 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?
Given the tool's relative simplicity and the presence of an output schema, the description is sufficiently complete. It covers the operation, the affected parameters, the required inputs, and the return type ('Returns success or error'). No critical information 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 schema has 0% description coverage, so the description must explain the parameters. It provides one-line definitions for both: 'unit_index: AU index containing the Playfield' and 'sample_index: Sample slot index to reset.' This adds meaning beyond the bare property names, though it could be richer with range or indexing 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 clearly states the tool's function: 'Reset all parameters of a Playfield drum sample to defaults.' This uses a specific verb with a precise resource and scope, and it is distinct from sibling tools like 'set_playfield_sample_enabled' or 'create_playfield_sample'.
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 you need to reset all Playfield sample parameters), but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or conditions. No sibling tools are referenced as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_reset_projectADestructive
Reset the project to a fresh state — removes all audio units, tracks, regions, effects.
Useful for starting a new mix session without reloading the browser. The output audio unit is preserved (required for audio routing).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description details what is removed and what is preserved (output audio unit). Also clarifies the behavioral benefit ('without reloading the browser'). 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?
Three concise sentences, each serving a purpose: action, use case, and a key exception/preservation detail. Effective front-loading of the primary verb and resource.
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 completely covers what the tool does, when to use it, and what is preserved, which is especially important for a destructive operation. Output schema covers return values, so no gap there.
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 baseline is 4. The description does not need to explain parameter syntax, and none are present.
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?
Clear, specific verb ('Reset the project') and resource with explicit list of what gets removed (audio units, tracks, regions, effects). Distinguishes from sibling tools by describing a global fresh-state 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?
Provides explicit usage context: 'Useful for starting a new mix session without reloading the browser.' Does not name alternatives, but no direct alternative exists for this reset operation. Could be improved by stating when not to use (e.g., if you need to preserve current arrangement).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_reverse_notesA
Reverse the order of notes in a region — retrograde variation.
Swaps note positions so the last note becomes first and vice versa. Durations and velocities are preserved; only positions are mirrored.
unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track).
Returns count of notes reversed.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states that durations and velocities are preserved while only positions are mirrored, and that region_index -1 targets all regions. It also notes the return value (count of notes reversed), which provides useful context beyond the name.
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 main action, then gives essential behavioral details and parameter definitions. It is reasonably concise with no filler, though the parameter lines could arguably be more detailed without harming readability.
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 transformation tool, the description covers the operation, preservation rules, scope of region_index, and return value. Since an output schema exists, the description does not need to describe return structure. The context is complete for an agent to decide and 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?
Schema coverage is 0%, so the description must compensate. It provides one-line explanations for each parameter: unit_index is the AU index, track_index is a note track index, and region_index has an explicit default meaning. This goes beyond the bare schema titles, though 'AU index' could be more fully explained.
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 'Reverse the order of notes in a region — retrograde variation', which clearly identifies the operation and resource. It distinguishes from sibling tools like rotate_notes or invert_notes by specifying the exact transformation and its musical name, so an agent can select it appropriately.
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 via the phrase 'retrograde variation', but it does not explicitly compare with alternatives or state exclusions. There is no mention of when not to use it, such as for rotating notes instead of reversing. The guidance is implied by the purpose rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_rotate_notesA
Rotate notes in a region by N positions (cyclic shift).
Shifts notes cyclically — the first rotate_by notes move to the
end, and the remaining notes shift left to fill the gap. This is
a fundamental compositional technique used in serialism (rotational
arrays — Berg, Webern), jazz melodic variation, and pattern
transformation in electronic music.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) rotate_by: Number of positions to rotate (positive = left shift, negative = right shift). Wrapped modulo note count. axis: Rotation axis — "position" = rotate note order by position (notes keep pitch, positions are reassigned in rotated order), "pitch" = rotate pitches (positions stay, pitches shift cyclically among the notes), "both" = rotate both position and pitch together (true permutation — notes swap places entirely). preserve_pitch_contour: If True, after rotation adjust pitches to maintain the original melodic contour (interval sequence). Useful for melodic rotation that stays singable.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | position | |
| rotate_by | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No | ||
| preserve_pitch_contour | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosure. It thoroughly explains the cyclic shift mechanics, wrap-around behavior, axis semantics, and preserve_pitch_contour effect. It falls short of mentioning whether other note properties (velocity, duration) are preserved or if the operation is reversible, which would be valuable 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 well-structured with a clear opening sentence, a detailed shift explanation, a brief musical context paragraph, and an organized Args section. While moderately long, each section adds value and the content is front-loaded with 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?
Given the tool's complexity (6 parameters, no annotations), the description covers the core operation, parameters, and usage contexts comprehensively. It does not address edge cases like empty regions or prerequisites, but overall it provides enough for an agent to decide when and how to invoke 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 input schema has zero description coverage (only bare titles), so the description must—and does—compensate fully. Every parameter (unit_index, track_index, region_index, rotate_by, axis, preserve_pitch_contour) is explained with meaningful details, including defaults, direction semantics, and the three axis options.
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, actionable statement: 'Rotate notes in a region by N positions (cyclic shift).' This clearly identifies the action, resource, and transformation type, distinguishing it from sibling tools like reverse_notes, invert_notes, or transpose_notes.
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 context by mentioning compositional techniques (serialism, jazz melodic variation, electronic music pattern transformation), implying when this tool is appropriate. However, it does not explicitly state when not to use it or offer comparisons to alternatives like reverse or invert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_save_effect_presetA
Save an audio effect chain as a .opb preset file.
Encodes the specified effect (and its position in the chain) into an openDAW preset bundle (.opb) using PresetEncoder.encodeEffects(). The file can be shared, drag-and-dropped into openDAW, or loaded via mcp_opendaw_load_effect_preset.
unit_index: Audio unit index containing the effect. effect_index: Index of the effect within the unit's audio effect chain. name: Preset name (shown in preset browser). description: Optional description of what the preset does. output_path: Directory to save the .opb file. Defaults to OPENDAW_EXPORT_DIR or /tmp.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| unit_index | Yes | ||
| description | No | ||
| output_path | No | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions output_path and its default, but does not state whether existing files are overwritten, whether directories are created, or any permission requirements. The internal reference to PresetEncoder.encodeEffects() adds implementation detail but not side-effect 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 efficiently structured: a one-line summary, a brief implementation note, and a parameter list. The mention of PresetEncoder.encodeEffects() is slightly extraneous, but the overall size is appropriate and front-loaded with the main action.
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 complexity (5 parameters, output schema present), the description covers core semantics and defaults effectively. It omits details like overwrite behavior and precise return values, but the output schema exists and the parameter explanations are 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?
Schema coverage is 0%, so the description must compensate. It fully explains each parameter: unit_index, effect_index, name, description, and output_path, including the default behavior for output_path. This adds essential meaning beyond the bare schema properties, making parameter usage clear.
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 it saves an audio effect as a .opb preset file, with a specific verb and resource. The phrase 'audio effect chain' is slightly ambiguous (it saves a single effect), but the next sentence clarifies it encodes the specified effect and its position. It doesn't explicitly distinguish from sibling tools like export_effect_chain, but mention of the load counterpart adds context.
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 use case: the file can be shared, drag-and-dropped, or loaded via mcp_opendaw_load_effect_preset. It provides context for when to use the tool, but lacks explicit exclusions or comparison to alternatives like export_effect_chain. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_save_projectA
Save the current project state to a binary file.
Serializes the boxGraph (all tracks, regions, effects, notes, settings) to an ArrayBuffer and saves it as a .odaw file in the exports directory. Use load_project to restore later.
filename: Name for the saved project (without extension). Returns: file path, size, and box count.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 serialization process (boxGraph to ArrayBuffer), the output format (.odaw), the save location (exports directory), and return values (file path, size, box count). It does not mention potential overwrites or errors, but the provided details go well beyond a minimal 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 compact and well-organized: a main action sentence, a short technical explanation, a cross-reference to load_project, and explicit parameter/return notes. Every sentence earns its place with no fluff 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 tool with one parameter and no nested objects, the description is complete. It covers what the tool does, what data it serializes, where it saves, what the filename parameter means, and what it returns. The existence of an output schema further reduces the need to explain return structure in prose.
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 lists 'filename' with type string and no description. The description adds crucial meaning: 'Name for the saved project (without extension).' This clarifies that the extension is added automatically, which is essential for correct usage. For a single-parameter tool, this fully compensates 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 description clearly states the action ('Save the current project state to a binary file'), specifies the resource (boxGraph with all tracks, regions, effects, notes, settings), and differentiates from siblings by mentioning the .odaw format and exports directory. It also explicitly references load_project, distinguishing it as the saving counterpart.
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 clear context: use this to persist the entire project for later restoration, and explicitly mentions 'Use load_project to restore later.' It does not enumerate exclusions or compare with other export tools, but the context is specific enough for an agent to choose it over alternatives like export_midi or export_mix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_scale_durationsA
Scale the duration of all notes in a region — MIDI note length control.
Like scale_velocity but for note durations. Multiply, set, add, quantize, or snap to grid. Useful for changing articulation globally — make all notes shorter (staccato feel), longer (legato feel), or snap to a grid.
mode: How to scale durations:
"multiply" — multiply each note's duration by value (0.5 = half length, 2.0 = double). Clamped to min/max.
"add" — add value (in beats) to each duration. Clamped.
"set" — set all durations to value (in beats).
"quantize" — snap each duration to the nearest grid division. value = grid in beats (0.25 = 16th, 0.5 = 8th, 1.0 = quarter).
"legato" — extend each note to just before the next note's start. value = gap fraction (0.0 = touch next note, 0.1 = 10% gap before next).
value: The scaling parameter (meaning depends on mode). region_index: Region index (-1 = first region). min_duration / max_duration: Clamp range in beats. quantize: Grid for quantize mode ("16th", "8th", "quarter", "half") — overrides value if mode="quantize".
Returns count of notes modified, original and new duration stats.
Example:
Make everything half length (staccato feel)
scale_durations(0, 0, mode="multiply", value=0.5)
All notes to quarter note length
scale_durations(0, 3, mode="set", value=1.0)
Snap durations to 16th grid
scale_durations(0, 0, mode="quantize", quantize="16th")
Legato — extend to next note with small gap
scale_durations(0, 1, mode="legato", value=0.1)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | multiply | |
| value | No | ||
| quantize | No | none | |
| unit_index | Yes | ||
| track_index | Yes | ||
| max_duration | No | ||
| min_duration | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure and delivers comprehensively. It details each mode's exact behavior (multiply, add, set, quantize, legato), explicitly mentions clamping to min/max, quantize overriding value, and legato gap semantics. It also states the return value (count of notes modified and duration stats), providing a thorough behavioral contract.
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 detailed but well-organized: an introductory summary, a structured list of modes with clear definitions, parameter explanations, and a practical example block. Every sentence adds meaningful information; no filler or redundancy. The formatting with bullets and spacing enhances readability without bloating the content.
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, 5 modes, clamping, quantize override), the description covers all necessary context: parameter meaning, mode behavior, defaults, and examples. The return value is also described, which, combined with the output schema, gives a complete picture. No 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 must fully compensate for all 8 parameters. It does so by explaining every mode's effect on the value parameter, defining min/max as clamp range, region_index's -1 meaning, and quantize override behavior. The inclusion of concrete examples (e.g., mode=multiply with value=0.5) further clarifies parameter usage 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?
The description clearly states the tool's purpose: 'Scale the duration of all notes in a region' with an explicit scope (MIDI note length control). It distinguishes itself from siblings by referencing scale_velocity ('Like scale_velocity but for note durations'), making it immediately clear which operation it performs and how it differs from similar 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 provides clear usage context: 'Useful for changing articulation globally — make all notes shorter (staccato feel), longer (legato feel), or snap to a grid.' It also names an alternative (scale_velocity) to clarify when this tool is not appropriate. While it doesn't explicitly enumerate when not to use it, the comparison to scale_velocity gives a strong implicit guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_scale_velocityA
Scale the velocity of all notes in a region — MIDI dynamics control.
Unlike create_crescendo (which creates a gradient from start to end), this uniformly scales all existing velocities. Think of it as gain for MIDI dynamics — boost, attenuate, normalize, or compress the velocity range of an entire track or region.
mode: How to scale velocities:
"multiply" — multiply each velocity by value (1.0 = no change, 0.8 = 20% quieter, 1.2 = 20% louder). Clamped to 0-1.
"add" — add value to each velocity (0.1 = louder, -0.1 = quieter). Clamped to 0-1.
"set" — set all velocities to value (0.8 = uniform velocity).
"normalize" — scale all velocities so the maximum equals value (0.95 = normalize to 95% max). Preserves relative dynamics.
"compress" — compress velocity range around midpoint. value = ratio (0.5 = halve the dynamic range, 1.0 = no change). Pulls extremes toward center — makes quiet notes louder, loud notes quieter.
value: The scaling parameter (meaning depends on mode). region_index: Region index (-1 = first region). min_velocity / max_velocity: Clamp range (0-1). Use to limit extremes.
Returns count of notes modified, original velocity range, new range.
Example:
Make drums 20% quieter
scale_velocity(0, 0, mode="multiply", value=0.8)
Normalize melody to 95% max velocity
scale_velocity(0, 3, mode="normalize", value=0.95)
Compress velocity range — reduce dynamics
scale_velocity(0, 0, mode="compress", value=0.6)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | multiply | |
| value | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| max_velocity | No | ||
| min_velocity | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes full responsibility for behavioral disclosure. It explains all five scaling modes with clamping behavior, describes the return value (count, original and new velocity ranges), and provides three concrete examples with expected outcomes. This goes far beyond minimal 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 lengthy but every sentence earns its place: definition, differentiation, parameter breakdown, return value, and examples. It's well-structured with clear hierarchy, making the complexity approachable 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?
Despite zero schema coverage and no annotations, the description covers every aspect needed to invoke the tool correctly: purpose, usage context, all parameters, mode-specific behavior, clamping, return value, and practical examples. It is a complete standalone 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 description provides exhaustive semantics for mode (all five options with formulas), value, region_index, and min_velocity/max_velocity, going far beyond the schema's bare parameter names. However, it omits explicit explanation for the required unit_index and track_index parameters, though the examples imply their positional role.
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 'Scale' and resource 'velocity of all notes in a region', clearly stating the tool's core function. It immediately distinguishes itself from create_crescendo with an 'Unlike' clause, making its unique purpose 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?
The description explicitly contrasts with create_crescendo, stating what that tool does (gradient) versus what this tool does (uniform scaling). This gives the agent clear when-not guidance and an explicit alternative, satisfying the top of the scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_schedule_clip_playA
Schedule clips to play in session view (live triggering).
Args: clip_ids: Comma-separated list of clip UUIDs to trigger
| Name | Required | Description | Default |
|---|---|---|---|
| clip_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does not explain whether scheduling is immediate or queued, whether it affects transport, or what happens if a clip is already playing. The phrase 'live triggering' gives some context but leaves key behavior unspecified.
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 plus an args definition, immediately stating the primary purpose and then clarifying the parameter. No redundant information, and the key 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?
The tool has one parameter and a simple purpose, but the description lacks details about scheduling semantics (e.g., when the clips actually trigger, whether they stop previous clips). It is minimally adequate but leaves room for confusion in a DAW context where scheduling could imply timed behavior.
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%, but the description compensates by explaining that clip_ids is a comma-separated list of clip UUIDs to trigger. This adds format and value semantics beyond the bare schema, though it could be more explicit about requiredness or 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 tool's function: scheduling clips to play in session view for live triggering. The verb 'schedule' plus resource 'clips' and context 'session view (live triggering)' make it distinct from sibling tools like schedule_clip_stop.
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 (session view live triggering) that differentiates it from similar clip operation tools, though it does not explicitly name alternative tools or exclusion criteria. This is adequate for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_schedule_clip_stopA
Schedule clips to stop on specified tracks (session view).
Args: track_ids: Comma-separated list of track UUIDs to stop clips on
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It does mention 'schedule' but gives no details about the timing mechanism, whether clips are stopped immediately or at a future time, side effects, or reversibility. This lack of behavioral detail is a significant gap for a mutation/scheduling 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 extremely concise: a single clear sentence stating the purpose, followed by a focused 'Args:' block. Every sentence earns its place, and the most critical 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?
For a scheduling tool with no annotations, the description is incomplete. It does not explain what 'schedule' means in this context (e.g., immediate stop vs. timed event), what triggers the stop, or what the output/return value represents despite the presence of an output schema. The tool's complexity demands more 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 description adds valuable meaning beyond the schema: it explains that track_ids is a 'comma-separated list of track UUIDs' and clarifies the purpose ('to stop clips on'). Since the schema description coverage is 0%, this parameter explanation compensates well, though it could mention validation or empty-string 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 function with a specific verb ('Schedule'), resource ('clips'), and scope ('to stop on specified tracks, session view'). It distinguishes itself from the sibling tool mcp_opendaw_schedule_clip_play by explicitly saying 'stop' rather than 'play'.
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 '(session view)' implies when this tool is applicable, but there is no explicit guidance on when to use it versus alternatives like schedule_clip_play. The usage context is implied by the action itself, but no exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_screenshot_dawA
Take a screenshot of the openDAW UI. Returns base64-encoded PNG image. Useful for visual debugging and verifying project state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions the base64 PNG return format, which is key. However, it does not explicitly state whether the operation is read-only or any potential limitations, leaving some ambiguity 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?
The description is only two sentences and immediately front-loads the action and result. Every word serves a purpose 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?
Given the tool's simplicity (no parameters, clear output format), the description covers what it does, what it returns, and when it's useful. It is sufficiently complete without needing to describe complex behaviors or return structures.
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 fully defines the input. The description doesn't need to add parameter semantics, and the baseline for zero-parameter tools 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 explicitly states 'Take a screenshot of the openDAW UI' with a clear verb and object. It also specifies the output as a base64-encoded PNG, making the tool's function unambiguous. No other sibling tool appears to be a screenshot tool, so it stands distinct.
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 notes it is 'Useful for visual debugging and verifying project state,' indicating when to apply it. It does not explicitly mention alternatives or when not to use it, but the context is clear for a simple screenshot tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_seconds_to_beatsA
Convert a time in seconds to beats using the project's tempo map.
Accounts for tempo automation. Useful for aligning audio regions to the musical grid when tempo changes mid-song.
seconds: Time in seconds (float).
Returns beats (float) and PPQN position, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the burden of disclosing behavior. It states that the tool accounts for tempo automation and returns beats, PPQN position, or an error, offering important context beyond a basic conversion.
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 action. Every sentence adds value: core function, tempo automation note, use case, parameter, and return value, 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?
For a simple one-parameter conversion tool, the description covers the operation, relevant behavior, parameter semantics, and return value. The presence of an output schema means return details need not be elaborated further, making this 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?
Despite 0% schema description coverage, the description explicitly explains the 'seconds' parameter as time in seconds (float), fully compensating for the schema's lack of detail and adding clear 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 clearly states a specific action (convert seconds to beats) and resource (project's tempo map). It distinguishes itself from sibling conversion tools like mcp_opendaw_ppqn_to_seconds by specifying the direction of conversion.
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: aligning audio regions to the musical grid when tempo changes mid-song. While it doesn't explicitly mention alternatives or exclusions, the context is sufficient for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_separate_stemsA
Separate audio into stems using SOTA AI models — SCNet, BS-Roformer, PolarFormer.
Uses the creative-studio stem-splitter pipeline (much better than Demucs alone). Models available:
"ensemble": Max quality — HTDemucs FT + PolarFormer vocals + BS-Roformer (3 passes)
"scnet": SCNet XL — best 4-stem (drums, bass, other, vocals), SDR 10.08
"bs6": BS-Roformer 6-stem (bass, drums, other, vocals, guitar, piano) — fast
"polarformer": Best vocal extraction (vocals + instrumental), SDR 11.00
"dereverb": Remove reverb from vocals (dry + reverb)
"drumsep": Separate drums into kick/snare/toms/cymbals
"denoise": Clean noise from low-quality audio (128kbps MP3)
input_file: Path to audio file (absolute or relative to cwd). model: Model name from the list above. output_dir: Output directory (default: /tmp/stems).
Returns paths to separated stem files.
Example: separate_stems("suno_track.wav", model="bs6")
→ {stems: {bass: "...", drums: "...", vocals: "...", ...}}
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | bs6 | |
| input_file | Yes | ||
| output_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 'Returns paths to separated stem files' and provides a default output_dir, implying disk writes. However, it doesn't explicitly state whether the input is modified, whether files are overwritten, or performance requirements. It gives useful context but isn't 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 long but every part is necessary—the model list is essential because the schema lacks enums. It front-loads the purpose, then details models, parameters, and an example, with 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?
Given the presence of an output schema and detailed parameter descriptions, the tool is well-covered. The description includes all three parameters, model options, defaults, and an example. It could mention input file format support or overwriting behavior, but it's largely 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%, and the description compensates fully: it explains input_file, model with a complete list of valid values and their tradeoffs, and output_dir with default. The example clarifies the return structure.
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 'Separate audio into stems using SOTA AI models' with a specific verb (separate) and resource (audio into stems), and lists named models. However, it doesn't explicitly differentiate from sibling tools like 'split_stems' or 'export_stems', so it misses explicit 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 provides model selection guidance (e.g., 'bs6' for fast, 'polarformer' for best vocals) and says it's 'much better than Demucs alone', but doesn't explicitly state when to use this tool instead of alternatives like split_stems or export_stems. No exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_serializeB
Serialize the current project state to JSON. Returns the serialized project data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 not state whether the operation is read-only, whether it has side effects, performance implications, or any details about the JSON format beyond the name. The description is too sparse to inform the agent about important behavioral traits.
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 and front-loads the purpose. There is slight redundancy between 'Serialize' and 'serialized project data,' but overall it is efficient and free of 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 with no parameters and an output schema exists, which covers return value details. However, the description does not mention that this is a non-destructive operation, nor does it differentiate from similar state-querying siblings. It is 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?
The input schema has zero parameters, so there is nothing to explain. Per the baseline guideline for 0-param tools, a score of 4 is appropriate. The description adds no parameter information, but 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 clearly states the action ('Serialize the current project state to JSON') and the return value ('Returns the serialized project data'). It includes a specific verb and resource. However, it does not explicitly differentiate from sibling tools like get_project_state or get_full_project_state, so it is not a perfect 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 ('when you need to serialize the project state') but provides no explicit guidance on when to use this tool over alternatives or any exclusions. It does not mention any prerequisites or contexts. This is minimal viable implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_articulationA
Set articulation for notes — legato, staccato, or tenuto.
Articulation defines how notes connect to each other — the space or overlap between consecutive notes. This is what makes strings sound smooth (legato) or plucky (staccato), and it's separate from pitch and velocity.
Three articulations:
"legato" — each note extends to the start of the next note (minus a micro_gap in PPQN for articulation separation). Notes flow into each other seamlessly. Use for smooth string lines, vocal phrases, wind instruments, lead melodies.
"staccato" — each note is shortened to staccato_ratio of the distance to the next note. 0.5 = half the gap, 0.25 = very short and detached, 0.75 = portato (lightly separated). Creates space between notes.
"tenuto" — each note holds to its full available duration (up to the next note's start, no gap). Slightly longer than legato — full value with no separation. Use for sustained passages, horn sustains.
The last note in each region keeps its original duration (no next note to reference). Notes at the same position (chords) are treated as one unit — they all get the same treatment based on the next distinct position.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). articulation: "legato", "staccato", or "tenuto". staccato_ratio: For "staccato" — fraction of gap to fill (0.1-0.9, default 0.5 = half the available time). micro_gap: For "legato" — PPQN gap to leave between notes (default 20, ~1/48 of a beat). 0 = notes touch exactly. Higher = more separation.
Returns per-track notes adjusted, articulation type.
Example:
Smooth legato strings
set_articulation(unit_index=0, track_index=2, articulation="legato")
Crisp staccato — 30% of available time
set_articulation(unit_index=0, track_index=2, articulation="staccato", staccato_ratio=0.3)
Full tenuto — horns holding full value
set_articulation(unit_index=0, track_index=3, articulation="tenuto")
| Name | Required | Description | Default |
|---|---|---|---|
| micro_gap | No | ||
| unit_index | No | ||
| track_index | No | ||
| articulation | No | legato | |
| region_index | No | ||
| staccato_ratio | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it explains exactly how each articulation alters note durations, how staccato_ratio and micro_gap affect the result, what happens to the last note and chord notes, and the return value. This is exemplary 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 long but well-structured: opening statement, articulation definitions, parameter semantics, return note, and examples. Every section adds necessary value, and the most critical info appears early. 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 6-parameter mutation tool with no annotations, the description covers selection scope, per-articulation behavior, parameter defaults, edge cases, and return format. It is complete enough for an agent to invoke correctly 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?
Schema description coverage is 0%, so the description must carry the parameter burden. It does: all six parameters are explained with defaults, value ranges, and musical meaning (e.g., 'staccato_ratio: 0.5 = half the available time', 'micro_gap: PPQN gap to leave between notes'). This vastly exceeds schema-only information.
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: 'Set articulation for notes' with explicit legato/staccato/tenuto variants. It is specific about the resource (notes) and operation, but it does not differentiate itself from the sibling tool mcp_opendaw_apply_articulation, so it misses 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?
The description provides rich usage context, including musical recommendations ('Use for smooth string lines...', 'Use for sustained passages...') and edge-case behavior (last note, chords). It does not explicitly state when to use this tool instead of alternatives, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_audio_region_fadeA
Set fade in/out on an audio region.
Audio regions have a Fading object with four params:
in: fade-in duration in seconds (0 = no fade-in)
out: fade-out duration in seconds (0 = no fade-out)
inSlope: fade-in curve (0.5 = linear, 0.75 = fast start, 0.25 = slow start)
outSlope: fade-out curve (0.5 = linear, 0.25 = fast end, 0.75 = slow end)
Pass -1.0 for any parameter to skip changing it (keep current value).
unit_index: Audio unit index. track_index: Audio track index. region_index: Region index within the track. fade_in: Fade-in duration in seconds (-1 = skip). fade_out: Fade-out duration in seconds (-1 = skip). in_slope: Fade-in curve 0-1 (-1 = skip). out_slope: Fade-out curve 0-1 (-1 = skip).
Returns updated fade values.
| Name | Required | Description | Default |
|---|---|---|---|
| fade_in | Yes | ||
| fade_out | Yes | ||
| in_slope | Yes | ||
| out_slope | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 by explaining the Fading object's parameter semantics, the -1 skip behavior to preserve current values, and that the tool returns updated fade values. It does not disclose error behavior for invalid indices or edge cases like setting a slope without a duration, but adds substantial context beyond the bare 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 well-structured: a one-line summary, conceptual explanation of fades and slopes, the skip rule, a per-parameter reference, and a return note. There is minor redundancy between the Fading object explanation and the parameter list, but every section serves a purpose and the length is justified by the 7-parameter complexity.
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 an unannotated, 7-parameter mutation tool, this description covers the purpose, all parameter meanings, the do-not-change sentinel (-1), and the return value. The main gaps are lack of error handling details and explicit interaction with related tools, but the core usage is fully and clearly explained.
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 compensates excellently. It lists every parameter with units (seconds for fades), ranges (0-1 for slopes), and the -1 skip rule, and it maps the conceptual Fading fields (in, out, inSlope, outSlope) to the actual parameter names, adding meaning far beyond the schema's bare type declarations.
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 'Set fade in/out on an audio region,' a precise verb+resource statement that clearly identifies the tool's function. It then elaborates on the Fading object and its four parameters, distinguishing it from sibling tools like set_audio_region_gain and copy_region_fades.
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 detailed explanation of fade durations, slopes, and the -1 skip mechanism provides clear context for when to use this tool: when adjusting an audio region's fades. However, it does not explicitly mention alternatives or exclusions, such as when to prefer copy_region_fades for copying existing fade settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_audio_region_gainA
Set gain (in dB) on an audio region.
Audio regions have a per-region gain control (Float32Field, decibel). Use this for trim automation or balancing clips within a track.
unit_index: Audio unit index. track_index: Audio track index. region_index: Region index within the track. gain_db: Gain in dB (0 = unity, -6 = half volume, +6 = double).
Returns updated gain value.
| Name | Required | Description | Default |
|---|---|---|---|
| gain_db | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions the underlying Float32Field and that the tool returns the updated gain value, but it does not address potential side effects, undo behavior, or error conditions. It gives some useful domain context (dB scale examples) but lacks deeper transparency about the operation'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 concise and well-structured: first sentence states the action, second gives context, followed by a compact parameter list, and ends with the return value. Every sentence earns its place with 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 simple setter tool, the description is fairly complete: it explains the gain semantics, lists all parameters, and states the return value. It does not mention zero-based indexing or how to obtain the indices, nor error handling, but the tool's simplicity and the presence of sibling listing tools mitigate this gap. It is more complete than the mid-calibration example.
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?
Since the schema has 0% description coverage, the description compensates by listing all four parameters with brief definitions. It adds meaningful semantics for gain_db with concrete examples ('0 = unity, -6 = half volume, +6 = double'), which goes beyond the bare schema type. The index descriptions are merely restatements, but the overall parameter guidance is adequate.
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 with a specific verb and resource: 'Set gain (in dB) on an audio region.' It further distinguishes itself by mentioning the per-region gain control and its use case (trim automation or balancing clips), which sets it apart from sibling tools like set_track_volume or set_audio_region_fade.
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: 'Use this for trim automation or balancing clips within a track.' It does not explicitly mention alternatives or when not to use, but the stated purpose effectively guides the agent in selecting this tool over other setter tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_audio_region_time_baseA
Set the time base of an audio region.
Controls how the region's duration is interpreted:
'musical' — duration in PPQN (musical beats, follows tempo changes)
'seconds' — duration in seconds (fixed wall-clock time, independent of tempo)
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. time_base: 'musical' or 'seconds'.
Returns old and new time base.
| Name | Required | Description | Default |
|---|---|---|---|
| time_base | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It explains the semantic behavior of each time-base mode and states the return value ('Returns old and new time base'). However, it does not disclose potential side effects—such as how switching modes may affect the region's current timeline duration—or any prerequisites like valid indices, making it adequate but with meaningful gaps 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 compact and well-organized: a lead sentence, a formatted bullet list for the core concept, a parameter summary, and a return-value note. Every sentence earns its place, and the layout is front-loaded with 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?
The core semantics of musical vs. seconds are thoroughly explained, and the output schema covers the return value, so the description needn't detail it. However, the description omits important contextual detail for a complete picture: what happens to an existing region's duration when you change its time base, and what error behavior occurs if indices are invalid. These gaps leave the description workable but incomplete for a mutation 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 entirely. It enumerates all four parameters and gives brief definitions, with the time_base parameter receiving substantial semantic depth (the bullet list explaining musical vs seconds). However, the index parameters ('AU index', 'Track index within the AU', 'Audio region index') are nearly tautological with their names, lacking details like zero-based indexing or relationship 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 opens with a specific verb+resource statement ('Set the time base of an audio region') and expands with a clear explanation of the two modes. This distinguishes it from sibling region tools like set_region_duration or set_audio_region_gain by naming the unique operation, and the conceptual elaboration adds value beyond the tool 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?
The description provides clear context for when this tool applies: it controls how the region's duration is interpreted. It also explains the two mode options (musical follows tempo, seconds is fixed wall-clock time), which directly guides the agent's choice of the time_base value. No exclusions or alternatives are mentioned, but no direct sibling tool competes for this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_audio_region_waveform_offsetA
Set the waveform display offset of an audio region.
The waveform offset shifts the visual start of the waveform within the region, useful for aligning the waveform display with the actual audio content.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. offset: Waveform offset value (in seconds).
Returns old and new offset.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses that the offset shifts the visual start (non-destructive display) and that it returns old and new offsets. However, it doesn't disclose potential side effects, prerequisites, or error conditions, which is modest but acceptable for a simple setter.
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 action, followed by a short explanation, parameter list, and return value note. Every sentence earns its place; there is no redundant content.
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 4-parameter setter with an output schema, the description covers what the tool does, the parameters, and return behavior. It could be improved by adding how to find the indices (e.g., via list_audio_regions) or an example, but these are not essential 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 has 0% description coverage, and the description compensates by listing each parameter with a brief meaning: unit_index (AU index), track_index (Track index within the AU), region_index (Audio region index), and offset (in seconds). While terse, this adds meaning beyond the bare schema titles, especially the unit for offset. The term 'AU' is not expanded, but this is a minor 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 opens with a specific verb+resource: 'Set the waveform display offset of an audio region.' It clearly explains the concept (shifts visual start) and purpose. However, it doesn't explicitly distinguish this from sibling operations, though the unique action is clear enough without an explicit alternative.
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 tool's purpose ('useful for aligning the waveform display with the actual audio content') which gives context for when to use it, but does not explicitly state when not to use it or suggest any alternative tools. There are no exclusions or fallback recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_automation_interpolationA
Set the interpolation type of an existing automation event.
Changes how the automation curve transitions from this event to the next.
unit_index: AU index. track_index: Value (automation) track index. region_index: Region index containing the event. event_index: Event index within the region's collection. interpolation: "none" (step/hold), "linear" (straight ramp), or "curve" (custom slope). curve_slope: Slope for curve interpolation (0.0-1.0). Only used if interpolation="curve".
Returns success, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| curve_slope | No | ||
| event_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| interpolation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the main behavior (set interpolation, affects curve) and notes that curve_slope only applies to 'curve' interpolation. However, it doesn't discuss side effects, reversibility, or error conditions beyond 'Returns success, or error'.
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 main purpose, followed by a single line on effect, then a structured parameter list, and a brief return note. No wasted words; 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?
Given the tool has 6 parameters and no annotations, the description covers parameters comprehensively and the core behavior. The output schema likely handles return details. It could mention prerequisites (e.g., the event must exist) but that's an acceptable 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?
Schema description coverage is 0%, but the description fully compensates by explaining every parameter's meaning, including allowed values for 'interpolation' and the range for 'curve_slope', plus the conditional use of curve_slope. This is exemplary compensation for the schema 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 verb 'Set' and the specific resource 'interpolation type of an existing automation event'. This distinguishes it from sibling tools like create/delete/update automation event, and the effect is clarified by 'Changes how the automation curve transitions from this event to the next'.
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 clear context: it affects the transition from this event to the next, implying it's for modifying an existing event's interpolation. Does not explicitly name alternatives or exclusion cases, but the context is strong enough to infer when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_bpmA
Set the project tempo in BPM.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, but it only states the action and gives no detail about side effects (e.g., whether existing tempo automation is overridden), required permissions, or return behavior. There is no mention of what changes occur beyond setting a value.
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 sentence, front-loaded with the action, with no unnecessary words or repetition of schema fields.
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 setter with an output schema, the description is minimally adequate but leaves gaps about interactions with tempo automation and project state. It is complete on the basic action but not on behavioral consequences or alternative use 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 adds 'project tempo' and 'BPM' context to the single required parameter, clarifying that the integer 'bpm' value represents the tempo in beats per minute. Since schema description coverage is 0%, this compensation is valuable, though no range or allowed values are given.
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 ('Set') and identifies the resource ('project tempo') with the unit ('BPM'), clearly distinguishing it from tempo-related siblings like add_tempo_change or get_tempo_at. It is a concise statement of the tool's primary action.
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 such as mcp_opendaw_add_tempo_change, mcp_opendaw_list_tempo_changes, or mcp_opendaw_detect_bpm. The description implies only the basic use case and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_bus_colorA
Set the color (hue 0-360) of an audio bus.
bus_index: Bus index. hue: Color hue 0-360 (HSL).
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| bus_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosure. It does state 'Returns success or error.' revealing the return type, and specifies the hue range and HSL color model. However, it does not disclose side effects, mutation of existing state, or potential errors beyond a generic success/error, which is a moderate transparency gap for a simple setter.
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 front-loads the primary action in the first sentence, then neatly lists parameter definitions, and concludes with the return type. Every sentence adds value, and there is no redundant or vague 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?
For a simple setter with two parameters and an output schema, the description is largely complete. It covers the action, parameter semantics, and return type. The only minor gaps are lack of prerequisite context (e.g., bus existence) and any note about the color model beyond hue, but these are not critical given the tool's simplicity.
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 provides brief parameter definitions: 'bus_index: Bus index. hue: Color hue 0-360 (HSL).' These add meaning beyond the raw schema, clarifying the hue range and color model. However, details like bus_index indexing base (0 or 1-based) and valid ranges are missing, so compensation is only partial.
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 with a specific verb and resource: 'Set the color (hue 0-360) of an audio bus.' This distinguishes it from sibling tools like set_bus_label or set_bus_enabled, 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 implies when to use the tool (when needing to change a bus color) but provides no explicit guidance on when not to use it, prerequisites (e.g., bus must exist), or alternatives. No sibling tools are referenced for cross-comparison, so usage context is minimal but inferable from the action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_bus_enabledA
Enable or mute an audio bus (FX bus A/B comparison).
bus_index: Bus index from list_audio_buses (0 = primary output). enabled: True to enable, False to mute.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| bus_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the effect of the `enabled` parameter (true = enable, false = mute) and the source of `bus_index`, which is helpful. However, it does not disclose side effects (e.g., whether muting affects sends, persistence, or whether the operation is reversible) beyond the immediate parameter mapping. This 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 three lines, front-loaded with the core action, and each line serves a distinct purpose: describing the action, then defining parameters. There is no fluff or repetition. It is 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 two-parameter setter with an output schema, the description is nearly complete. It covers the tool's behavior, parameter sourcing, and a key convention (0 = primary output). It doesn't mention error conditions like an invalid bus index, but given the existence of an output schema and the simple nature of the operation, this is a minor gap. A more careful description might note that the bus must already exist or be visible from list_audio_buses.
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, and it does excellently. It explains the exact meaning and provenance of `bus_index` ('from list_audio_buses, 0 = primary output') and the meaning of `enabled` (True to enable, False to mute). This fully clarifies both parameters beyond the bare schema 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 tool's function: 'Enable or mute an audio bus' with a specific resource (audio bus) and action. The parenthetical '(FX bus A/B comparison)' adds a concrete use case, distinguishing it from other setter tools like set_track_mute. The verb and resource are specific 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 implies the usage context by mentioning 'FX bus A/B comparison,' which tells the agent when this tool is useful. It does not explicitly exclude other tools or name alternatives, but the context is clear enough for selection among the large sibling set. Slight deduction for lack of explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_bus_labelA
Set the label (name) of an audio bus.
bus_index: Bus index from create_audio_bus. label: New name for the bus (e.g. "Reverb Bus", "Drum Bus").
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| bus_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses the effect (set label) and return ('Returns success or error') but does not mention failure modes, overwriting behavior, or whether an invalid bus index produces an error. For a simple setter this is minimal but 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?
Extremely concise: purpose statement first, then per-parameter clarifications, then return value. No unnecessary words or filler. Every sentence holds the needed 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?
For a low-complexity setter with an output schema available, the description covers operation, parameter semantics, and return status. It doesn't discuss boundary conditions like invalid bus index, but the simplicity of the tool makes the description 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?
Schema has 0% description coverage, so the description compensates by explaining 'bus_index: Bus index from create_audio_bus' and 'label: New name for the bus' with concrete examples ('Reverb Bus', 'Drum Bus'). This adds useful meaning beyond the bare types 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?
Description opens with 'Set the label (name) of an audio bus' – a specific verb+resource+object. It clearly distinguishes from sibling tools like set_bus_color by targeting exactly the label/name 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 explicit when-to-use/when-not-to-use or alternatives, but 'Bus index from create_audio_bus' implies a prerequisite, providing some usage context. The operation is self-evident for renaming a bus, but the tool doesn't state exclusions or compare with other bus-related setters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_clip_hueA
Set the color (hue) of a clip in the session view.
unit_index: AU index. track_index: Track index within the AU. clip_index: Clip index. hue: Color hue 0-360.
Returns success with old and new hue.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the return behavior ('Returns success with old and new hue') and the hue range (0-360), but omits details about error conditions, side effects, or whether existing hue values are overwritten.
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: a purpose sentence, a parameter list, and a return-value note. 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?
For a simple setter tool with an output schema, the description covers the essential aspects: what is set, parameter meanings, and return behavior. It doesn't address possible failure scenarios, but given the output schema and simplicity, this is adequately complete 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?
With schema description coverage at 0%, the description compensates by explaining each parameter: unit_index as AU index, track_index within the AU, clip_index, and hue range (0-360). This clarifies the hierarchical addressing scheme that the bare schema lacks.
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 'Set the color (hue) of a clip in the session view' with a specific verb, resource, and scope. It clearly indicates the exact attribute being modified, distinguishing it from sibling tools like set_clip_mute or set_clip_label.
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 setting a clip's hue but provides no explicit guidance on when to use this tool versus alternatives. It mentions the 'session view' context but no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_clip_labelA
Set the label (name) of a clip in the session view.
unit_index: AU index. track_index: Track index within the AU. clip_index: Clip index. label: New clip name.
Returns success with old and new label.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It mentions 'Returns success with old and new label' but does not explain side effects, overwriting semantics, error conditions, or index conventions. The mutation side effect is implied by 'Set' 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?
The description is compact and front-loaded: a one-sentence purpose, a terse parameter list, and a return note. No filler or redundant content.
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 the essential purpose and parameters, and the output schema covers return values, so it is reasonably complete for a simple setter. However, it lacks guidance on how to resolve indexes or when this tool is appropriate among many similar clip/marker setters.
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 defines each of the four parameters: unit_index, track_index, clip_index, and label, with brief but meaningful explanations that go beyond the bare schema 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 the label (name) of a clip in the session view', which is a specific verb+resource that differentiates it from sibling tools like set_region_label and set_marker_label.
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 versus alternatives such as set_region_label or set_clip_properties. The description only gives the action and parameter list, with no mention of indices sourcing or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_clip_muteA
Mute or unmute a clip in the session view.
unit_index: AU index. track_index: Track index within the AU. clip_index: Clip index. mute: True to mute, false to unmute.
Returns success with old and new mute state.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 mentions the return value ('Returns success with old and new mute state') but does not disclose side effects, reversibility, permissions, or error behavior—only the obvious mute/unmute 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 compact and well-structured: a one-line purpose, a parameter list, and a return-value note. Every sentence adds value with no redundant or filler content.
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 setter tool, the description covers purpose, parameters, and return value. However, it lacks error handling, prerequisites, or any note about side effects, and with no annotations the agent gets no safety or behavioral context. The output schema exists but is not provided here, so the return note is useful; still, usage guidance 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 fully compensates by explaining each parameter: 'unit_index: AU index', 'track_index: Track index within the AU', 'clip_index: Clip index', and 'mute: True to mute, false to unmute'. This provides meaningful semantic guidance beyond bare 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 'Mute or unmute a clip in the session view' with a specific verb and resource. It distinguishes itself from sibling tools like set_track_mute or set_region_mute by focusing on clips, and the parameter list reinforces the 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?
No guidance is provided on when to use this tool versus alternatives (e.g., track mute, region mute) or any exclusions. The description only states the operation and parameter meanings, leaving the agent without explicit context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_clip_playbackA
Set clip playback parameters (loop, reverse, speed) on a clip.
Clips have a ClipPlaybackFields (triggerMode) object with:
loop: Whether the clip loops (true/false)
reverse: Play in reverse (true/false)
speed: Playback speed multiplier (1 = normal)
quantise: Quantise value
trigger: Trigger mode
Pass None for any parameter to skip changing it.
unit_index: Audio unit index. track_index: Track index. clip_index: Clip index (from list_clips). loop: Enable looping (None = skip). reverse: Reverse playback (None = skip). speed: Speed multiplier (None = skip).
Returns updated playback values.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | Yes | ||
| speed | Yes | ||
| reverse | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 skip behavior ('Pass None...'), the return value ('Returns updated playback values.'), and clarifies which fields are modified. It also notes the clip's ClipPlaybackFields object, acknowledging other fields (quantise, trigger) that are not affected. This goes beyond a bare mutation description, though it does not cover potential errors 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?
The description is front-loaded with a clear purpose and structured with bullet-point lists. However, loop/reverse/speed definitions are repeated in both the ClipPlaybackFields section and the parameter list, creating redundancy. It could be more concise without losing meaning.
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 essential aspects: purpose, all parameters, the None-skip behavior, and the return type. Since an output schema exists, the return values are likely documented elsewhere. Missing details like error handling or prerequisites beyond 'from list_clips' are not critical for a simple setter tool, making this 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 schema has zero description coverage, so the description fully compensates. It explains every parameter (loop, reverse, speed, unit_index, track_index, clip_index) in plain language, including the meaning of speed ('1 = normal') and the None-skip semantics. This adds substantial 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 clearly states the tool's purpose: 'Set clip playback parameters (loop, reverse, speed) on a clip.' This identifies the specific verb (set), resource (clip playback parameters), and scope (loop, reverse, speed), distinguishing it from sibling tools like set_clip_properties or set_clip_mute.
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 use context by stating it sets playback parameters and includes a prerequisite hint: 'clip_index: Clip index (from list_clips)'. It also explains the skip behavior ('Pass None for any parameter to skip changing it'), which is useful operational guidance. However, no explicit alternatives or exclusions are mentioned, 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.
mcp_opendaw_set_clip_propertiesA
Set properties on a clip (session view): label, color, mute, duration.
Pass empty string for label to skip, -1 for hue/duration to skip, None for mute to skip.
unit_index: Audio unit index. track_index: Track index. clip_index: Clip index (from list_clips). label: New label (empty = skip). hue: New color hue 0-360 (-1 = skip). mute: Mute state (None = skip). duration_beats: New duration in beats (-1 = skip).
Returns updated clip properties.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| mute | Yes | ||
| label | Yes | ||
| clip_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| duration_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does reveal important behaviors: skip semantics for optional updates, that it operates on session-view clips, and that it 'Returns updated clip properties.' However, it does not address error cases, side effects, or permissions, leaving room for improvement.
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. It leads with a clear purpose, then uses a compact parameter list with inline skip semantics. Every sentence adds value, 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?
Given the 7 required parameters and the presence of an output schema, the description is nearly complete. It covers all parameter meanings, special sentinel values, and the return value. It lacks explicit statements about index base (zero vs one) and error handling for invalid indices, but overall it's sufficient for correct 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?
Schema coverage is 0%, so the description must compensate. It does so excellently by explaining every parameter, including skip values, ranges (hue 0-360), source (clip_index from list_clips), and units (duration in beats). This is far beyond the bare schema titles.
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: 'Set properties on a clip (session view): label, color, mute, duration.' This specific verb+resource+fields combination distinguishes it from single-property siblings like set_clip_mute, set_clip_label, and set_clip_hue, and the session view qualifier adds further 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?
The description implies usage: when you need to set multiple clip properties at once. It hints at a workflow by noting 'clip_index (from list_clips).' However, it never explicitly contrasts with the sibling set_clip_* tools or states when NOT to use this tool, so 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.
mcp_opendaw_set_crusher_bitsA
Set the bit depth on a Crusher (bitcrusher) effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Crusher). bits: Bit depth (1-16, where 16=no crushing, 1=extreme).
| Name | Required | Description | Default |
|---|---|---|---|
| bits | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds meaningful behavioral context beyond the schema: the bits parameter mapping (16=no crushing, 1=extreme) and the requirement that effect_index must reference a Crusher. This helps the agent understand the effect of the parameter and preconditions. It does not disclose error handling or side effects, but for a simple setter 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?
The description is compact: one action sentence followed by three bullet-style parameter lines. It front-loads the core purpose, and every line adds necessary information without redundancy or fluff. Ideal structure for a parameter-focused 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?
Given the tool's low complexity, the description covers the essential aspects: what it does, all parameters with ranges, and a key prerequisite (must be a Crusher). The presence of an output schema likely documents return values, so that omission is acceptable. Still, it could benefit from mentioning behavior on invalid indices or non-Crusher effects, but this is not critical for a simple setter.
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 does so fully: each parameter is explained with a concise line — unit_index ('AU index'), effect_index ('Effect index in the audio effect chain (must be a Crusher)'), and bits ('Bit depth (1-16, where 16=no crushing, 1=extreme)'). This adds semantic meaning and range details that the schema lacks.
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 the bit depth on a Crusher (bitcrusher) effect.' This is a specific verb+resource combination that distinguishes it from siblings like set_crusher_crush (which presumably sets crush amount, not bit depth) and generic set_effect_parameter_int. The scope 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 usage (when you need to adjust bit depth on a Crusher effect) and provides a constraint ('effect_index must be a Crusher'), but it does not explicitly name alternative tools or state when not to use this tool. No when/when-not guidance beyond the inherent type restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_crusher_crushA
Set the sample-rate reduction (crush) on a Crusher effect.
The crush value is inverted internally: 0.0=clean (20kHz), 0.15=retro lo-fi (~8kHz), 0.25=AM radio (~3.5kHz), 0.55=glitchy (~500Hz), 1.0=inaudible (20Hz).
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Crusher). crush: Sample rate reduction amount (0.0-1.0, 0=clean, 1=max destruction).
| Name | Required | Description | Default |
|---|---|---|---|
| crush | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden. It discloses the inverted internal scaling (0.0=clean, 1.0=inaudible) and maps specific values to audible characteristics (AM radio, glitchy), which is genuinely useful behavioral context beyond merely saying 'set a parameter.' It stops short of describing error behavior for non-Crusher effects or out-of-range values, but the provided mapping is substantial.
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 efficiently structured in two paragraphs: first the purpose, then the parameter details. Every sentence provides factual value—the frequency mapping is dense but necessary. No filler, and the formatting (bulleted parameter list) aids scanning.
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 parameter setter, the description covers purpose, parameter semantics, and critical behavioral nuance (inversion). An output schema exists, so return-value details are not required. The description also flags the key prerequisite that the effect must be a Crusher. It is complete for this 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 coverage is 0%, so the description must compensate. It fully explains all three parameters: unit_index as AU index, effect_index as effect index in the chain (with the Crusher constraint), and crush with range and meaning (0-1, 0=clean, 1=max destruction). This adds significant value beyond the schema's bare titles.
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+resource: 'Set the sample-rate reduction (crush) on a Crusher effect.' This clearly differentiates from siblings like set_crusher_bits, which targets bit depth rather than sample-rate reduction. The scope 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?
Usage context is implied: the tool is for adjusting crush on a Crusher effect, and the description notes that effect_index 'must be a Crusher,' providing a prerequisite. However, it does not explicitly state when to prefer this over alternatives like set_crusher_bits or generic set_effect_parameter, nor does it mention 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.
mcp_opendaw_set_delay_syncA
Set the synced delay time on a Delay effect using a musical fraction string.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Delay). fraction: Musical fraction — one of: "off", "1/128", "1/96", "1/64", "1/48", "1/32", "1/24", "3/64", "1/16", "1/12", "3/32", "1/8", "1/6", "3/16", "1/4", "5/16", "1/3", "3/8", "7/16", "1/2", "1/1".
| Name | Required | Description | Default |
|---|---|---|---|
| fraction | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses the constraint that the effect must be a Delay and lists the allowed fraction values. However, it does not mention side effects, reversibility, error behavior, or whether the delay must be in sync mode. Mutation is implied but not explicitly stated.
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 purpose, followed by a compact parameter breakdown and a necessary enumeration of fraction values. Every sentence and element serves a clear function, with no 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 three-parameter setter with an output schema, the description covers the essentials: purpose, parameter meanings, and allowed values. It does not discuss output or error handling, but the existence of an output schema suggests return values are documented elsewhere.
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 defines each parameter: unit_index as 'AU index', effect_index as 'Effect index in the audio effect chain', and fraction with a complete list of allowed values. It provides basic meaning but lacks guidance on how to find the indices.
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+resource: 'Set the synced delay time on a Delay effect using a musical fraction string.' It explicitly identifies the resource (Delay effect) and the operation (setting synced delay time), and naturally distinguishes from generic effect setters like set_effect_parameter.
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: to set a synced delay time using a musical fraction, and it includes a prerequisite ('must be a Delay'). It does not explicitly name alternatives or exclusions, but the specificity of the purpose makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_device_labelA
Rename an effect or MIDI effect device.
unit_index: AU index. effect_index: Effect index in the chain. label: New label/name for the device. is_midi_effect: If true, target MIDI effects chain instead of audio effects.
Returns success, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes | ||
| is_midi_effect | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the return behavior ('Returns success, or error') and explains MIDI vs audio targeting via is_midi_effect. However, it omits potential error conditions, side effects, or prerequisites like the existence of the device chain.
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: action first, then parameter definitions, then return value. No unnecessary 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 simple rename operation, the description covers all inputs and the return value. It could improve by specifying how to obtain indices (e.g., via list_effects) or clarifying zero-based indexing, but it is largely complete for the task.
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 compensates fully by explaining all four parameters: unit_index, effect_index, label, and is_midi_effect, including the default behavior for MIDI effects. This adds meaningful context beyond bare parameter 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 'Rename an effect or MIDI effect device,' identifying the action and target. It distinguishes this tool from siblings like set_region_label or set_bus_label by focusing on device labels.
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 like rename_unit or set_bus_label. The tool's purpose is clear, but no alternatives, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_effect_enabledB
Enable or bypass an specific effect on an audio unit.
unit_index: Audio unit index. effect_index: Effect position in the chain. enabled: true to enable, false to bypass.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explaining side effects. It states the basic toggle behavior (enable/bypass) but omits details such as reversibility, impact on sound, error handling, or whether it triggers any processing changes. This is a significant 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?
The description is compact and front-loaded with the purpose, followed by a clear parameter list. Every sentence provides necessary information with no fluff or redundancy. The typo 'an specific' is minor.
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 toggle tool, the description covers the essential action and parameters. However, it lacks contextual information such as how to obtain valid indices (e.g., via list_effects or get_effect_chain), and the absence of a zero/one-based indexing note creates ambiguity. Since an output schema exists, return values need not be described, but usage context is 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?
The description adds clear meaning to all three parameters beyond the schema's bare titles, explaining unit_index as 'Audio unit index', effect_index as 'Effect position in the chain', and enabled as 'true to enable, false to bypass'. However, it does not clarify integer base (0-based vs 1-based) or value ranges, which could lead to incorrect invocations.
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 'Enable or bypass an effect on an audio unit' with a specific verb and resource. It is self-explanatory but does not explicitly differentiate from sibling tools like set_effect_parameter or remove_effect, so it falls short of full sibling 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?
The description provides no guidance on when to use this tool versus alternatives. It only defines parameters and does not mention prerequisites (e.g., obtaining valid unit_index/effect_index from list_effects) or exclusions for other effect-modification tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_effect_parameterB
Set a parameter on an audio effect.
unit_index: Audio unit index. effect_index: Effect position in the chain (0-based). parameter_name: Parameter name from mcp_opendaw_list_effect_parameters (e.g. "inputGain", "mix", "equation"). value: Numeric value for float params. For string params (like Waveshaper equation), pass the string as parameter_name=value pair — use parameter_name="equation" and value as a special case.
Examples: set_effect_parameter(0, 0, "inputGain", 12.0) # Waveshaper +12dB input set_effect_parameter(0, 0, "mix", 1.0) # 100% wet set_effect_parameter(0, 0, "equation", 0) # Use string_value for equation
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It reveals that the tool mutates an effect parameter and mentions numeric vs string handling, but the string special case is contradictory ('pass the string as parameter_name=value pair' vs example using 0), and it omits side effects, validation, and error 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 compact and starts with a clear purpose, but the repeated and confusing string-parameter guidance wastes words and undermines clarity. Examples are helpful, but the 'Use string_value for equation' comment adds confusion rather than 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 presence of an output schema covers return values, but the description is not complete enough for an agent to safely invoke this tool among its typed siblings. It lacks clear preconditions (effect must exist, parameter must be numeric), and the contradictory string guidance could lead to incorrect calls.
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?
All four parameters are explained, compensating for the 0% schema coverage, with useful examples. However, the description of the 'value' parameter is internally inconsistent: it says strings can be passed for params like 'equation', but the schema defines value as a number and the example passes 0, so the actual semantics are unclear.
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 first sentence clearly states an action ('Set') and a target ('parameter on an audio effect'), and the parameter descriptions further define the resource. However, it does not distinguish this generic setter from sibling typed setters (mcp_opendaw_set_effect_parameter_bool/int/string), nor explain when to prefer this one.
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 useful context: parameter_name should come from mcp_opendaw_list_effect_parameters, and it gives concrete examples. It does not explicitly state when to use this tool versus the dedicated bool/int/string setters, and the 'string params' guidance is ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_effect_parameter_boolA
Set a boolean parameter on an audio effect.
Covers device-specific boolean fields not exposed through the generic float setter:
Compressor: lookahead, automakeup, autoattack, autorelease
Gate: inverse
Maximizer: lookahead
StereoTool: invertL, invertR, swap
NeuralAmp: mono
Delay: freeTimeSync (if available)
unit_index: Audio unit index. effect_index: Effect position in the chain (0-based). parameter_name: Boolean field name (e.g. "lookahead", "automakeup", "inverse", "mono"). value: true or false.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It adds useful behavioral context by enumerating which boolean fields exist per device (e.g., Compressor lookahead, Gate inverse), including a caveat for Delay 'freeTimeSync (if available)'. However, it does not disclose side effects, error behavior, or reversibility of the mutation, leaving transparency partial.
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 opening sentence states the core purpose, followed by a compact bulleted list of device-specific fields. Every sentence adds value, and the formatting improves 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?
For a setter tool with a simple schema, the description provides all necessary context: device-specific valid parameter names, index semantics, and value type. An output schema exists, so return-value documentation is not required. The 'if available' caveat for Delay shows attention to edge cases, making the tool self-contained.
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 schema only provides types/titles. The description compensates by explaining each parameter: unit_index as 'Audio unit index', effect_index as 'Effect position in the chain (0-based)', parameter_name with concrete examples, and value as 'true or false'. It adds significant 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?
The description opens with a specific verb+resource statement: 'Set a boolean parameter on an audio effect.' It clearly distinguishes this from sibling setters by specifying 'boolean parameter' and referencing the generic float setter. The device-specific field list further clarifies the exact 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 this tool: for device-specific boolean fields not exposed through the generic float setter. It lists the applicable devices and fields, giving concrete usage context. It names the 'generic float setter' as an alternative but does not explicitly mention int/string setters or provide when-not-to-use exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_effect_parameter_intA
Set an integer parameter on an audio effect.
Covers device-specific integer fields not exposed through the generic float setter:
Vocoder: bandCount
StereoTool: panningMixing
Fold: overSampling
Crusher: bits
Delay: version (internal)
Note: device-specific tools (set_vocoder_band_count, set_fold_oversampling, etc.) are preferred when available. This is a generic fallback for any Int32Field.
unit_index: Audio unit index. effect_index: Effect position in the chain (0-based). parameter_name: Integer field name (e.g. "bandCount", "bits", "overSampling"). value: Integer value.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral disclosure burden. It adds useful context by listing the covered fields, flagging the Delay 'version' field as internal, and clarifying its fallback status. However, as a mutating tool it does not disclose error behavior when parameter_name is invalid, whether changes are reversible/undoable, or range validation on the integer value — gaps that matter without 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 well-organized and front-loaded: a one-sentence purpose, a compact bulleted list of covered fields, an explicit usage note, and a short parameter legend. Every sentence adds distinct value — the coverage list, the sibling-precedence note, and the 0-based clarification are all non-redundant.
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 an output schema, the description covers purpose, scope, alternatives, and all parameter meanings — quite thorough. The main missing piece is error/edge-case behavior (e.g., what happens with an unknown parameter_name or out-of-range value), which keeps it from being 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 fully compensate. It does so by explaining all four parameters, including the crucial clarification that effect_index is 0-based, concrete examples for parameter_name ('bandCount', 'bits', 'overSampling'), and the basic meaning of value and unit_index. This substantially exceeds the bare schema titles.
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+resource statement ('Set an integer parameter on an audio effect') and goes further by enumerating exactly which device-specific integer fields it covers (bandCount, panningMixing, overSampling, bits, version). It also distinguishes itself from the generic float setter and the dedicated device-specific setters among its siblings, so an agent can unambiguously identify its 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 gives explicit guidance: device-specific tools (set_vocoder_band_count, set_fold_oversampling, etc.) are preferred when available, and this tool is a generic fallback for any Int32Field. It also explains what it covers versus the generic float setter, clearly stating when to use this tool and when to choose an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_effect_parameter_stringA
Set a string parameter on an audio effect (e.g. Waveshaper equation).
unit_index: Audio unit index. effect_index: Effect position in the chain. parameter_name: Parameter name (e.g. "equation"). string_value: String value (e.g. "hardclip", "tanh", "cubicSoft", "sigmoid", "arctan", "asymmetric").
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes | ||
| string_value | Yes | ||
| parameter_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 only enumerates parameters and examples without disclosing side effects (e.g., immediate mutation of the effect), reversibility, failure modes, or any behavioral consequences of setting the parameter.
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 plus a tight parameter list. Every line adds value, the purpose is front-loaded, and there is no redundant or filler content.
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?
All parameters are documented, and an output schema exists, so return value documentation is unnecessary. However, the description lacks guidance on how to discover valid parameter names or which effects support string parameters, and it does not mention error conditions. It is minimally sufficient but not rich.
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 provides concise definitions for all four parameters (unit_index, effect_index, parameter_name, string_value) and offers valid example values for string_value, adding meaningful detail beyond the schema's bare titles.
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 string parameter') and the target resource ('audio effect'), with a concrete example (Waveshaper equation). This distinguishes it from sibling tools like set_effect_parameter_bool and set_effect_parameter_int.
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 string-type effect parameters by its name and the example values, but it does not explicitly contrast with alternatives like set_effect_parameter_int or provide when-not-to-use guidance. The context is clear but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_fold_oversamplingA
Set the oversampling level on a Fold (wavefolding) effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Fold). oversampling: 0=off, 1=2x, 2=4x.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes | ||
| oversampling | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the value mapping (0/1/2) and the requirement that the effect must be a Fold, which is useful. However, it does not mention side effects, index conventions, or error conditions beyond the Fold requirement. For a mutation tool, this 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 four short lines, front-loaded with the purpose, followed by concise parameter definitions. Every sentence adds value 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 setter with three fully described parameters and an output schema present, the description is largely complete. It could optionally mention zero-based indexing or provide an example, but nothing critical 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 fully defines each parameter: unit_index as AU index, effect_index as effect index in the audio effect chain, and oversampling with explicit value meanings. This goes well beyond the schema's bare integer 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 opens with a specific verb+resource: 'Set the oversampling level on a Fold (wavefolding) effect.' This clearly distinguishes it from generic effect setters among siblings, as it targets a specific effect type and parameter.
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 by indicating the tool is for Fold effects, and explicitly states that effect_index must be a Fold. It does not name alternative tools or exclusion scenarios, but the constraint is enough to guide appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_groove_shuffleA
Set the groove/shuffle (swing) amount for the project.
amount: 0.0 = straight (no swing), 1.0 = full swing. Typical values: 0.15 = light swing, 0.25 = moderate, 0.5 = strong triplet feel.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 provides a useful mapping of amount values (0.0, 1.0, typical values) but doesn't mention side effects, reversibility, or whether it applies to the entire project or just selected regions. The 'set' verb implies mutation but lacks safety details.
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 three lines each adding value: the action, the numeric scale, and typical examples. It's front-loaded and doesn't waste 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 main parameter semantics and the output schema handles return values. However, the type mismatch with the schema undermines completeness; an agent cannot safely use the tool without resolving this contradiction. It's adequate but with 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?
The description's values (0.0, 0.15, 0.25, 0.5, 1.0) directly contradict the input schema's parameter type of 'integer'. This is a critical inconsistency that would mislead an agent into passing a float, causing validation errors. The description adds meaning but it's incompatible with 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 the groove/shuffle (swing) amount') and identifies the target resource ('for the project'). It distinguishes itself by focusing on the project-level swing setting, which differentiates it from other rhythm tools like apply_swing.
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 setting the global swing/groove amount, providing clear context. It doesn't explicitly list alternatives or exclusions, but the singular parameter and project scope make the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_instrument_paramA
Set a parameter on the instrument connected to an audio unit.
unit_index: Audio unit index (-1 = auto-detect first non-master AU with an instrument). param_name: Field name (e.g. "cutoff", "resonance", "attack", "flutter", "volume", "channel"). value: New value for the parameter. param_index: Alternative — set by field index instead of name (-1 = use name).
Works with any instrument type. Returns old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| param_name | Yes | ||
| unit_index | Yes | ||
| param_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral transparency burden. It does disclose useful behaviors: auto-detection of the first non-master instrumented AU, the param_index alternative, and that it returns old and new values. However, it does not mention side effects, whether the change is reversible, or any required permissions/state assumptions, leaving gaps in 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 compact and well-structured, using a single introductory sentence followed by clear per-parameter explanations. Every sentence adds value, and the examples for param_name are especially useful without being 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?
All four parameters are documented, and the return behavior (old and new values) is stated. The description does not mention how to discover valid param_name values (e.g., via list_instrument_params) and leaves some ambiguity about how to set param_name when using param_index, but overall it is quite complete for 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%, but the description fully compensates by explaining every parameter: unit_index with auto-detect semantics, param_name with concrete examples, value as the new parameter value, and param_index as an alternative with sentinel behavior (-1 = use name). This adds significant meaning beyond the raw JSON 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 action: 'Set a parameter on the instrument connected to an audio unit.' It is specific about the resource (instrument parameter) and provides helpful context like auto-detection. However, it does not explicitly differentiate from siblings like set_effect_parameter or set_midi_effect_param, so it does not fully achieve the top score.
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 says 'Works with any instrument type' but does not mention when to use set_effect_parameter, list_instrument_params, or other related tools. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_loop_regionA
Set the playback loop region.
When enabled, playback loops between from_beat and to_beat. Set enabled=false to disable loop (region is kept but inactive).
from_beat: Loop start in beats. to_beat: Loop end in beats. enabled: Whether loop is active.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| to_beat | Yes | ||
| from_beat | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral burden. It discloses the core behavior (loops when enabled, region kept but inactive when disabled), which is useful for predicting side effects. It does not address edge cases such as invalid beat ordering, transport state dependencies, or whether enabling the loop affects the current playhead position.
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 action, followed by behavioral details and per-parameter definitions. Every line serves a purpose, with no filler or redundant restatement of the schema titles.
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 setter with an output schema, this description is largely complete: it covers the operation, enable/disable behavior, and parameter semantics. It lacks prerequisites or transport interactions, but these are not critical for such a focused loop-setting 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 fully compensates by defining each parameter: 'from_beat: Loop start in beats,' 'to_beat: Loop end in beats,' and 'enabled: Whether loop is active.' It adds meaning beyond the bare integer/boolean types, though it omits details like inclusive/exclusive bounds or valid ranges.
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 begins with a clear, specific action: 'Set the playback loop region.' It then explains the behavior with enabled/disabled states, making the tool's function unambiguous. However, it does not explicitly distinguish this from the similarly named sibling mcp_opendaw_set_region_loop, so it stops short of a perfect 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 when to use this tool: when you need to configure playback looping between two beats, and it explains how to disable the loop. It does not, however, provide explicit 'when not to use' guidance or mention alternative tools like mcp_opendaw_set_region_loop for per-region looping, leaving usage context inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_marker_labelA
Rename a timeline marker.
marker_index: Index from list_markers (0-based). label: New label text.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| marker_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states the operation is a rename, without disclosing side effects, error behavior on invalid indices, or whether changes are persistent. As a mutation tool with no annotations, the burden falls on the description, which remains 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?
The description is concise and well-structured: one summary line followed by bullet-style parameter explanations, 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 simple two-parameter rename tool with an output schema present, the description covers the core workflow. It does not address error cases (e.g., invalid index) but is adequate given the tool's simplicity.
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%, but the description compensates by explaining marker_index is obtained from list_markers and is 0-based, and label is the new text. This 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?
The description uses 'Rename a timeline marker' – a specific verb and resource that clearly distinguishes from sibling marker tools like add_marker, delete_marker, and set_marker_position. It is direct 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 provides a usage hint via 'marker_index: Index from list_markers (0-based)', implying the index should come from list_markers, but it does not explicitly state when to prefer this over alternatives or provide exclusions. Basic workflow hint but no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_marker_positionA
Move a timeline marker to a new position.
marker_index: Index from list_markers (0-based). position_beats: New position in beats.
| Name | Required | Description | Default |
|---|---|---|---|
| marker_index | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the tool mutates a marker ('Move') but does not disclose what happens with an invalid index, whether the original position is replaced, if values are validated, or if the operation is reversible. This is a significant 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?
The description is a single front-loaded purpose sentence followed by two compact parameter lines. Every sentence earns its place; there is no fluff or repetition. Appropriately sized for a 2-parameter 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 tool is simple with 2 required integer params and an output schema, so the return value need not be explained. The description covers the core purpose and both parameters, but misses edge-case behavior, prerequisites (marker must exist), and any relation to sibling marker tools. 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 does: marker_index is explained as the 0-based index from list_markers, and position_beats is explained as the new position in beats. Both parameters gain meaningful context beyond the bare integer types, though no ranges or constraints are given.
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 uses a specific verb+resource: "Move a timeline marker to a new position." This clearly distinguishes it from siblings like add_marker, delete_marker, list_markers, set_marker_label, and set_marker_repeat. The intent 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 usage workflow via 'marker_index: Index from list_markers (0-based)', hinting that list_markers should be called first. However, it does not explicitly state when to use this tool vs alternatives, nor provide any exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_marker_repeatA
Set the repeat count on a timeline marker.
marker_index: Index from list_markers (0-based). repeat_count: 0 = infinite repeat, 1-16 = N repeats.
| Name | Required | Description | Default |
|---|---|---|---|
| marker_index | Yes | ||
| repeat_count | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It adds useful semantics by explaining that repeat_count 0 means infinite repeat and 1-16 means N repeats, but it does not mention side effects, error behavior, or reversibility of the 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 extremely concise: one purpose line and two parameter lines, with no filler. 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?
For a simple two-parameter setter with an output schema, the description covers the operation, parameter semantics, and the prerequisite of list_markers. It lacks mention of error conditions for invalid markers, but overall it is sufficiently 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?
Schema description coverage is 0%, but the description fully compensates by explaining both parameters: marker_index is the 0-based index from list_markers, and repeat_count has a clear value range and meaning. This goes well beyond the bare integer type definitions 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 'Set the repeat count on a timeline marker', using a specific verb and resource. It distinguishes itself from sibling marker tools like set_marker_position, set_marker_label, and delete_marker by focusing on the repeat count property.
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 specifying that marker_index comes from list_markers and is 0-based, implying the prerequisite of listing markers first. It does not explicitly discuss alternatives or when not to use the tool, but the context is sufficient for a simple setter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_metronomeA
Configure the metronome settings.
Args: enabled: Toggle metronome on/off. None = leave unchanged. gain: Click volume 0.0-1.0 (default 0.5). None = leave unchanged. beat_subdivision: Beats per click (1=quarter, 2=eighths, 4=sixteenths, 8=thirty-seconds, default 4). None = leave unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| gain | No | ||
| enabled | No | ||
| beat_subdivision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 specifies that None leaves parameters unchanged, gives valid ranges for gain and subdivision, and explains the mapping for beat_subdivision. This exceeds what the schema alone provides, though it does not discuss side effects or scope.
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: a one-line summary followed by a bulleted list of parameters with clear explanations. Every sentence adds value, and there is 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?
Given that an output schema exists (though not shown) and this is a straightforward setter, the description provides sufficient context: what the tool does, parameter meanings, and defaults. It does not mention global vs. project scope or potential side effects, but these are not critical for this tool's 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 input schema only provides types and null defaults, while the description adds essential semantics: gain range 0.0-1.0, default values, subdivision meanings, and the behavior of None for each parameter. This fully compensates for the 0% schema description 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 'Configure' with a clear resource 'metronome settings', and the parameter details reinforce what the tool does. It is distinct from sibling tools like set_bpm or set_time_signature because it specifically targets metronome click settings.
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 use this tool versus alternatives or mention exclusions. The usage is implicitly clear from the purpose, but there is no explicit guidance on context or alternative tool selection, so it falls short of the higher bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_midi_effect_paramA
Set a parameter on a MIDI effect.
unit_index: Audio unit index. effect_index: MIDI effect position in the chain (0-based). param_name: Field name (e.g. "semiTones", "rateIndex", "gate"). value: New value for the parameter. param_index: Alternative — set by field index instead of name (-1 = use name).
Returns old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| param_name | Yes | ||
| unit_index | Yes | ||
| param_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 communicates mutation through 'Set' and mentions that old and new values are returned, but it does not clarify precedence when both param_name and param_index are supplied or error behavior, leaving minor ambiguity.
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 purpose is front-loaded in a single sentence, followed by one line per parameter and a final return-value note. There is no fluff or redundant restatement of schema 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?
For a five-parameter setter with an output schema, the description covers identification (unit_index, effect_index), selection (param_name or param_index), value type (number), and return values. It provides sufficient context to invoke the tool correctly without needing the output schema 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%, yet the description documents every one of the five parameters, including examples for param_name ('semiTones', 'rateIndex', 'gate') and the sentinel behavior of param_index (-1 = use name). This fully compensates for the schema's lack of 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 immediately states a specific action ('Set a parameter on a MIDI effect'), and the parameter list clarifies that this targets MIDI effect chains. This distinguishes it from sibling tools like set_effect_parameter and set_instrument_param by resource 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 opening line gives clear context: use this tool when you need to set a parameter on a MIDI effect, identified by unit_index and effect_index. It does not explicitly name alternatives or exclusion cases, but the MIDI-effect scoping is enough to guide tool selection among many similar setters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_modular_module_paramA
Set a parameter on a module in a Modular device.
au_index: Audio unit index. effect_index: Effect index within the AU. module_index: Module index. param_name: Parameter name — "gain" for ModuleGain, "time" for ModuleDelay. value: New parameter value (in physical units: dB for gain, ms for delay).
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| au_index | Yes | ||
| param_name | Yes | ||
| effect_index | Yes | ||
| module_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool returns success or error and provides meaningful parameter context (e.g., physical units for value), but it does not discuss side effects, prerequisites, or potential pitfalls like invalid parameter names. It is not misleading, but it is 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?
The description is compact and front-loaded: one sentence for purpose, a bullet-like list of parameter meanings, and a one-sentence return note. Every sentence earns its place with no repetition 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 tool has five required parameters, no annotations, and no schema descriptions. The description provides enough detail to invoke it correctly, including the meaning of each parameter. It could further clarify valid ranges for indices or how to discover module types, but those are likely discoverable via sibling list tools, and the 'success or error' note covers return handling.
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, and the description fully compensates by explaining every parameter: au_index (Audio unit index), effect_index (Effect index within the AU), module_index (Module index), param_name with concrete examples, and value with units (dB, ms). This goes far beyond the bare schema field 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 tool's action: 'Set a parameter on a module in a Modular device.' It specifies the target resource (module parameter) and includes examples like "gain" for ModuleGain and "time" for ModuleDelay, which distinguishes it from sibling tools like set_effect_parameter.
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 use this tool versus alternatives such as set_effect_parameter or set_instrument_param. Usage is implied by the name and parameter context, but no exclusions or alternative references are provided, leaving the agent to infer 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.
mcp_opendaw_set_neuralamp_modelA
Load a Neural Amp Modeler (NAM/Tone3000) model JSON into a NeuralAmp effect.
Creates a NeuralAmpModelBox with the provided model JSON and links it to the NeuralAmp device. This bypasses the popup-based Tone3000 Select Flow, enabling headless model loading.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a NeuralAmp). model_json: Full NAM model JSON string (the model architecture + weights). label: Optional label for the model box (default "NAM Model"). pack_id: Optional pack identifier.
Returns success + model_size, or error if the effect is not a NeuralAmp.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | NAM Model | |
| pack_id | No | ||
| model_json | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: it creates a NeuralAmpModelBox, links it, returns 'success + model_size', and errors if the effect is not a NeuralAmp. It does not mention reversibility or overwriting effects, but covers the main behavioral contract.
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 well-structured and front-loaded with a clear purpose. The parameter list is compact yet complete, and every sentence adds value without 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?
Despite having no parameter descriptions in the schema, the tool description covers all parameters, return values, error conditions, and the headless-loading use case. It provides sufficient context for an agent to invoke this 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?
Schema description coverage is 0%, so the description carries full parameter meaning. It explains unit_index as 'AU index', effect_index as 'Effect index in the audio effect chain (must be a NeuralAmp)', model_json as 'Full NAM model JSON string', label default and pack_id optional—all 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?
The description clearly states a specific action: 'Load a Neural Amp Modeler (NAM/Tone3000) model JSON into a NeuralAmp effect.' It distinguishes the tool from siblings like mcp_opendaw_get_neuralamp_model by focusing on loading rather than retrieving, and specifies the target resource (NeuralAmp effect).
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 context: 'This bypasses the popup-based Tone3000 Select Flow, enabling headless model loading.' It also indicates the effect_index must be a NeuralAmp. However, it lacks explicit exclusions or named alternatives, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_note_advancedA
Set advanced note properties — chance, cent, playCount, playCurve.
These properties are beyond basic position/duration/pitch/velocity:
chance: Probability of note playing (0-100%, 100 = always)
cent: Micro-tuning in cents (-50 to +50, 0 = exact pitch)
play_count: Number of repeats (1-16, 1 = single note)
play_curve: Repeat curve (-1 to +1, 0 = even spacing)
Pass -1 (or -999 for float fields) to skip a property (leave unchanged).
unit_index: AU index. track_index: Note track index. region_index: Note region index. note_index: Note index within the region.
Returns updated values, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| cent | No | ||
| chance | No | ||
| note_index | Yes | ||
| play_count | No | ||
| play_curve | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 explains the skip sentinel values (-1 or -999), gives value ranges for each property, and states the return behavior ('Returns updated values, or error'). This is substantial behavioral disclosure, though it doesn't mention side effects like in-place mutation explicitly.
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 well-structured with a clear definition followed by bullet-point property details and a concise note on skipping. It is not overly verbose, though the index parameter list adds a few lines that could be merged. Overall efficient and 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 tool has 8 parameters but the description covers all of them to some degree, including required index paths and optional advanced properties with sentinel behavior. It also mentions the output ('updated values, or error'), and with an output schema present, that suffices. There are no major gaps 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?
Schema description coverage is 0%, so the description must compensate. It does so by explaining the four main properties with ranges and meanings, and identifies the four index parameters (unit, track, region, note). The index explanations are terse ('AU index') but sufficient given the parameter 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 uses a specific verb ('Set') and resource ('advanced note properties'), explicitly enumerating the four properties (chance, cent, playCount, playCurve). It distinguishes itself from basic note property tools by stating these are 'beyond basic position/duration/pitch/velocity', making its purpose clear and unique among 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 implies usage for advanced note properties and clarifies that basic properties are handled elsewhere ('These properties are beyond basic...'). It does not explicitly name alternatives like set_note_properties, but the scope is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_note_centsA
Set detune (cents) on notes — deterministic microtonal pitch control.
Unlike humanize_pitch (random cents), this tool applies SPECIFIC cent offsets to targeted notes. This enables:
Piano honky-tonk: detune alternate notes by +8/-8 cents
Quarter-tone scales: +50 cents on selected pitches
Sympathetic resonance: subtle +3 cents on sustained notes
Just intonation corrections: -2 cents on major thirds, +14 on fifths
Arabic maqam: quarter tones between semitones
Synth drift: gradual cent increase across a sequence
Chorus effect (MIDI): duplicate track detuned +7 cents
Modes:
"all": Apply to all notes in the region(s)
"pitch": Apply only to notes matching target_pitch (e.g. "60" or "C4")
"beats": Apply at specific beat positions (comma-separated, e.g. "0,4,8")
"indices": Apply to specific note indices (comma-separated, e.g. "0,2,4")
"alternating": Alternate +cents and -cents on consecutive notes
"gradient": Linearly increase cents from 0 to target across all notes
"scale_degree": Apply to notes on specific scale degrees (requires scale + root_note + target_pitch as degree numbers)
Args: unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track). cents: Cent offset to apply (-100 to +100). 100 cents = 1 semitone. mode: Targeting mode (see above). target_pitch: For "pitch" mode: MIDI note number (e.g. "60") or note name (e.g. "C4"). For "scale_degree" mode: comma-separated degree numbers (e.g. "3,7" = apply to 3rd and 7th degrees). beat_positions: For "beats" mode: comma-separated beat positions. note_indices: For "indices" mode: comma-separated note indices. direction: "up" (positive cents) or "down" (negative cents). For alternating mode, this sets the first note's direction. scale: For "scale_degree" mode: scale name (major, minor, dorian, etc.). root_note: For "scale_degree" mode: root note name.
Returns notes modified, per-mode details, and average cents applied.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | all | |
| cents | No | ||
| scale | No | ||
| direction | No | up | |
| root_note | No | C | |
| unit_index | No | ||
| track_index | No | ||
| note_indices | No | ||
| region_index | No | ||
| target_pitch | No | ||
| beat_positions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, and it does so well: it states determinism, mode-specific behaviors (e.g., 'alternating' alternates +cents/-cents, 'gradient' linearly increases cents), the meaning of 'direction', and the return shape ('notes modified, per-mode details, and average cents applied'). The only gap is that it does not mention reversibility/undo implications or any preconditions for this mutation tool, which would be the natural next addition.
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 long but well-structured and justified: a front-loaded one-line summary, an alternative contrast, organized use-case bullets, clearly separated Modes and Args sections, and a return statement. Every section adds necessary value given the tool's complexity and zero schema coverage; it earns its length without being padded.
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 this tool's high complexity (11 parameters, 7 targeting modes, conditional parameter dependencies) and complete absence of annotations and schema descriptions, the description is remarkably complete. It covers purpose, alternatives, use cases, every parameter, every mode's behavior, direction semantics, and expected return content. Nothing essential is left unexplained for an agent to select and invoke this 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?
Schema description coverage is 0%, so the description must fully compensate, and it does. All 11 parameters receive meaningful explanations with ranges ('-100 to +100'), defaults via schema, and examples ('0,4,8', '60 or C4', '3,7'). The mode-specific semantics of target_pitch, direction, and scale_degree are clarified beyond what the schema titles alone could ever convey.
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 'Set detune (cents) on notes — deterministic microtonal pitch control,' which states a specific verb, resource, and behavior. It explicitly distinguishes itself from sibling humanize_pitch by contrasting deterministic specific offsets with random cents, making selection 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 names and contrasts the sibling tool humanize_pitch ('Unlike humanize_pitch (random cents)'), providing a clear when-not-to-use signal. It also gives seven specific musical use cases (honky-tonk, quarter-tone scales, maqam, etc.) that illustrate exactly 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.
mcp_opendaw_set_note_propertiesA
Edit properties of a single note within a region.
Pass -1 for any parameter to skip changing it (keep current value). Use list_notes first to find the note_index.
note_index: Index of the note in the region (0-based, sorted by position). unit_index: Audio unit index (-1 = search all AUs). track_index: Note track index within the AU. region_index: Region containing the note (0-based). position_beats: New position in beats (-1 = skip). duration_beats: New duration in beats (-1 = skip). pitch: New MIDI pitch 0-127 (-1 = skip). velocity: New velocity 0-1 (-1 = skip). cent: New cent offset in cents (-1 = skip). chance: New chance 0-100 (-1 = skip).
Returns updated note properties.
| Name | Required | Description | Default |
|---|---|---|---|
| cent | Yes | ||
| pitch | Yes | ||
| chance | Yes | ||
| velocity | Yes | ||
| note_index | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| duration_beats | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The statement 'Pass -1 for any parameter to skip changing it' is overbroad and misleading. Only the editable property parameters (position_beats, duration_beats, pitch, velocity, cent, chance) have explicit '-1 = skip' annotations, while unit_index has '-1 = search all AUs' (a different behavior) and track_index/region_index have no -1 behavior defined. This ambiguity could cause an agent to pass invalid -1 values for locator parameters. The tool also lacks disclosure of error handling or side effects beyond returning updated properties.
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 well-structured: a concise purpose sentence, a brief note about -1 skipping, followed by a clean bullet list of parameters with definitions. Every line adds value and there is no extraneous text. The most important usage hint (list_notes first) 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 tool with 10 required parameters and zero schema descriptions, the description covers purpose, prerequisite, and parameter ranges well. However, the ambiguity around -1 behavior for locator parameters and the absence of any guidance on finding unit/track/region indices (beyond list_notes) leaves gaps. The output schema likely covers return values, so that omission is acceptable, but the input semantics are not fully unambiguous.
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?
Each parameter has a one-line description with useful ranges (e.g., pitch 0-127, velocity 0-1, chance 0-100), which compensates for the 0% schema coverage. However, the -1 skip semantics are inconsistently applied across parameters: unit_index uses -1 for 'search all AUs' rather than skip, track_index and region_index have no -1 behavior stated, creating confusion about how to correctly set locator 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 opens with 'Edit properties of a single note within a region', which clearly specifies the verb and resource. It distinguishes itself from more specific note tools like set_note_cents by covering multiple properties, though it does not explicitly name alternative tools for comparison.
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 a clear prerequisite: 'Use list_notes first to find the note_index.' This tells the agent how to prepare for using the tool. It does not explicitly exclude alternatives or state when not to use it, but the context is sufficient for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_piano_keyboardA
Set the piano roll keyboard type.
keyboard_type: One of 88 (full piano), 76 (stage), 61 (compact), 49 (controller).
Returns success with old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| keyboard_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the operation returns success along with the old and new values, giving insight into the response behavior. However, it does not mention side effects on existing piano roll data, error handling, or whether the change is reversible. Still, for a simple setter, this is respectable coverage.
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 front-loads the core action. The first sentence states the purpose; the second provides parameter details and return behavior. Every word is informative, with 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 single-parameter setter, the description is complete: it specifies the parameter's allowed values, the domain (piano roll), and the return format. The presence of an output schema means the description doesn't need to elaborate further on return structure. This is sufficient for an agent to select and 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 only defines keyboard_type as an integer with no description or enum, and schema coverage is 0%. The description fully compensates by explicitly listing valid integer values (88, 76, 61, 49) and human-readable labels (full piano, stage, compact, controller). This adds crucial meaning beyond what the schema 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 opens with a clear, specific action: 'Set the piano roll keyboard type.' This identifies the exact resource (piano roll keyboard) and distinguishes it from sibling tools like set_piano_note_scale or set_piano_mode. The valid values are also enumerated, leaving no ambiguity about the tool's 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?
The description provides clear context for when to use the tool (to change the piano roll keyboard size) and lists all valid options. It doesn't explicitly state when not to use it or mention alternatives, but the purpose is obvious enough that a user can infer appropriate usage. No exclusion criteria are given, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_piano_note_labelsA
Toggle note labels (C, C#, D, etc.) in the piano roll.
show: True to show note labels, false to hide.
Returns success with old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| show | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the mutation (setter/toggle) and the return values (old and new), which is useful. However, it doesn't mention scope (e.g., all tracks vs current) 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?
The description is three concise sentences: purpose, parameter explanation, and return behavior. No fluff, front-loaded with the main action.
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 setter with an output schema (not shown), the description covers the essentials: what, how, and return. It's mostly complete, though the lack of scope clarification (global vs track-specific) leaves 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?
Schema coverage is 0%, so the description fully compensates by explaining the boolean parameter's meaning: 'True to show note labels, false to hide.' This adds complete semantic clarity beyond the schema's bare title.
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: toggling note labels in the piano roll, with examples of the label types. It's distinct from sibling tools by focusing on labels, not scale or other piano settings.
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 you want to show or hide note labels, but doesn't explicitly discuss when to use this versus alternatives (e.g., set_piano_note_scale). No exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_piano_note_scaleA
Set the piano roll note scale (vertical zoom).
scale: Note scale factor (0.5 to 2.0). 1.0 = default, 2.0 = maximum zoom in, 0.5 = maximum zoom out.
Returns success with old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose the return behavior ('Returns success with old and new values') and provides the valid range for the parameter. However, it does not mention whether the change is a view-only setting, whether it affects note data, or any prerequisites. This 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 compact and front-loaded. The first sentence states the purpose, the second explains the parameter, and the third notes the return value. Every sentence adds necessary information with no 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?
For a tool with one parameter and an output schema, the description is nearly complete. It explains the parameter and return values, leaving little ambiguity. However, it does not explicitly state the scope (e.g., which piano roll editor is affected) or confirm that the change is non-destructive to note data. These are minor gaps for such a simple 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 schema description coverage is 0%, so the description must compensate. It fully explains the sole parameter 'scale': its type (number), range (0.5 to 2.0), default (1.0), and behavior at extremes (maximum zoom in/out). This provides meaning well 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 opens with a specific verb+resource: 'Set the piano roll note scale (vertical zoom).' This clearly identifies what the tool does and distinguishes it from sibling piano-roll tools like set_piano_time_range (horizontal zoom) and set_piano_keyboard. The vertical zoom clarification removes ambiguity.
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 about when to use the tool by explaining the scale factor semantics (0.5 to 2.0, 1.0 default, 2.0 zoom in, 0.5 zoom out). While it does not explicitly name alternative tools or state when not to use it, the context is sufficient for an agent to decide this is the correct tool for adjusting vertical zoom.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_piano_time_rangeA
Set the piano roll time range (horizontal view width in quarter notes).
quarters: Time range in quarter notes (1.0 to 64.0). Smaller = more zoomed in.
Returns success with old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| quarters | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly states that the tool returns 'success with old and new values' and explains the practical meaning of the parameter, providing helpful transparency beyond the bare 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 compact and front-loaded, with three clear sentences: purpose, parameter semantics, and return behavior. Every sentence adds value and there is no redundancy with 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 single-parameter setter with an output schema, the description covers purpose, parameter meaning, valid range, and return behavior. It is complete enough for an agent to select and invoke the tool correctly without additional clarification.
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 zero description coverage, but the description compensates fully by documenting the parameter's unit ('quarter notes'), valid range ('1.0 to 64.0'), and behavioral effect ('Smaller = more zoomed in'). This is excellent parameter-level 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 uses a specific verb and resource: 'Set the piano roll time range' with a clarifying parenthetical 'horizontal view width in quarter notes'. This precisely differentiates it from sibling piano tools like set_piano_keyboard or set_piano_note_scale.
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 by explaining the parameter's effect ('Smaller = more zoomed in'), but it does not explicitly state when to use it versus alternatives or mention any exclusions. Usage context is present but implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_playfield_sample_enabledA
Enable/disable a drum pad on a Playfield drum machine.
sample_index: Pad index (0-based). enabled: true to enable, false to mute the pad. unit_index: Audio unit index (-1 = auto-detect Playfield).
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| unit_index | Yes | ||
| sample_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 side effects. It clearly states that setting enabled to false mutes the pad, and explains the auto-detect behavior of unit_index. However, it does not disclose return values, error conditions, or whether the operation is reversible, leaving some behavioral aspects unknown.
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: a single-sentence summary followed by three bullet-point parameter explanations. Every sentence earns its place with no redundant or irrelevant content.
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 nature of the tool and the presence of an output schema, the description covers the core action and parameters adequately. However, it lacks usage context (when to use vs. siblings) and preconditions (e.g., whether the unit must already exist), making it not fully complete for an agent selecting 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 input schema provides no descriptions (0% coverage), but the description compensates fully by explaining each parameter: sample_index is a 0-based pad index, enabled toggles enable/mute, and unit_index supports -1 for auto-detect. This adds clear 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?
The description uses a specific verb ('Enable/disable') and clearly identifies the resource ('a drum pad on a Playfield drum machine'). It distinguishes the tool from sibling tools like list_playfield_samples and create_playfield_sample by indicating its action.
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, nor any exclusions or prerequisites. It does not mention related tools such as create_playfield_sample or list_playfield_samples, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_positionB
Set the playback position in beats.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to rely on, so the description carries the full burden of behavioral disclosure. It mentions the unit 'beats' but does not disclose side effects, such as whether playback is halted, what happens if the position is invalid, or any required engine 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 a single, focused sentence that conveys the essential action and unit. Every word is necessary, and there is no wasted 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?
Given the tool's simplicity (one parameter) and the presence of an output schema, the description is minimally adequate. However, for a mutation tool with no annotations, it lacks context about playback state, preconditions, or potential side effects beyond the basic 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?
With schema description coverage at 0%, the description must explain the parameter. It adds the meaningful detail that the value is in beats, but it does not specify range, absolute vs. relative, or whether fractional beats are allowed. It partially compensates for the schema's lack of information.
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 sets the playback position and specifies the unit (beats). It is a specific verb+resource combination that is distinct from sibling tools like set_region_position or set_marker_position, though it does not explicitly differentiate 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?
No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or context given. The description only states what the tool does without any usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_region_colorA
Set the color (hue) of a region or clip.
Regions and clips use an Int32Field 'hue' for color. The hue is an integer that maps to a color in the HSL spectrum (0-360). Use this to visually distinguish sections (e.g. red for choruses, blue for verses).
track_index: Track index within the AU. region_index: Region/clip to color (0-based). hue: Color hue (0-360, e.g. 0=red, 120=green, 240=blue). unit_index: Audio unit index (-1 = search all AUs).
Returns old and new hue values.
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 reveals that the tool returns old and new hue values, describes the unit_index behavior (-1 = search all AUs), and notes that regions/clips use an Int32Field. However, it does not mention potential side effects, error conditions, or reversibility. For a simple setter, this is moderate transparency, but more detail could be provided.
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 well-structured and front-loaded with the primary action. It includes helpful context and parameter details without excessive verbosity. The examples are useful and earn their place. Slightly longer than strictly necessary, but concise enough for the information conveyed.
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, the description covers most essential context: purpose, parameter semantics, usage examples, and return values. It references the output ('Returns old and new hue values'), fulfilling the return value disclosure since an output schema exists. It doesn't discuss edge cases or error handling, but for a basic setter, the description is largely complete for an agent to decide and execute.
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 0% description coverage, so the description must compensate. It does excellently: each parameter (track_index, region_index, hue, unit_index) is explained with meaning, ranges, and examples (e.g. '0=red, 120=green, 240=blue'). This fully covers the semantic gap left by the schema, providing the agent with all necessary context to invoke 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 'Set the color (hue) of a region or clip' with a specific verb and resource. It explains the hue system and gives examples, making the purpose unambiguous. However, it does not differentiate from the sibling tool 'mcp_opendaw_set_clip_hue', which may have overlapping functionality, so it loses a point for lack of 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 provides usage context ('Use this to visually distinguish sections, e.g. red for choruses, blue for verses') and explains the hue scale. It implies when this tool is appropriate but does not explicitly state when to use it over alternatives like 'set_clip_hue' or provide exclusions. This is adequate but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_region_durationB
Set the duration of a region.
duration_beats: New duration in beats (e.g. 4.0 = 1 bar in 4/4).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | No | ||
| track_index | Yes | ||
| region_index | Yes | ||
| duration_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries full responsibility for behavioral disclosure. It merely states the core effect and gives a format example for duration_beats. It does not explain validation, side effects (e.g., whether the region is resized or content is stretched), constraints (e.g., positive values only), or how region/track indices are resolved. Additionally, the example uses '4.0' which conflicts with the schema's integer type for duration_beats, creating slight ambiguity.
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: a single action sentence plus a focused parameter note. Both sentences earn their place and there is no wasted verbosity. The front-loaded verb 'Set' immediately communicates the operation, and the example adds practical value without unnecessary 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?
Given that the tool has four parameters, no annotations, and a single-sentence description, it lacks critical context. The agent is not told how regions are identified (by index relative to track/unit), what constraints apply to duration, or what the operation returns. While an output schema exists, the input side is severely under-specified, making this incomplete for reliable 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 0%, so the description must compensate for all parameters. It only explains duration_beats (format and example) but omits any explanation of track_index, region_index, and unit_index. These are left to be inferred from their names, which is insufficient for error-free invocation, especially since unit_index is optional with a default but not 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 states the tool's action: 'Set the duration of a region.' This is a specific verb+resource pairing that immediately distinguishes it from sibling tools like set_region_position or set_region_mute. The addition of the duration_beats example 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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or any caveats (e.g., whether it applies to audio/MIDI regions, or how it interacts with other region settings). The only context is the action itself, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_region_labelA
Rename a region's label (display name).
label: New label text. unit_index: Audio unit index (-1 = search all AUs). track_index: Track index within the AU. region_index: Region to rename (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It only states the operation and parameter meanings, but does not disclose whether the operation is mutating, reversible, or has side effects. It does not describe error behavior or what happens when unit_index=-1 matches multiple regions.
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 concise: one purpose sentence followed by a compact parameter list. Each line adds necessary information and there is no fluff 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 setter, this is adequate but has gaps. It does not explain the AU/track/region hierarchy, the implications of 'search all AUs', or what happens on failure. Since no annotations exist and the description is minimal, the overall context is thin.
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 description adds meaning for all four parameters: label is the new text, unit_index can be -1 to search all AUs, track_index is within the AU, and region_index is 0-based. This goes beyond the bare schema titles, though it could include more detail on constraints or ranges.
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 starts with 'Rename a region's label (display name)', which is a specific verb ('rename') and resource ('region's label'). It clearly distinguishes from sibling tools like set_clip_label, set_marker_label, and set_device_label by explicitly targeting the region entity.
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 does not mention conditions, prerequisites, or exclusions. There is no context that this is the appropriate tool for renaming a region's label rather than a clip or marker label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_region_loopA
Set loop parameters for a note region.
Looping repeats the note pattern within the region. The region duration can be longer than the loop, causing the notes to repeat.
loop_beats: Loop length in beats (e.g. 4.0 = 1 bar in 4/4). Set to 0 to disable loop. loop_offset_beats: Offset within the event collection where the loop starts. event_offset_beats: Offset added to all note positions. unit_index: Audio unit index (-1 = search all AUs). track_index: Track index within the AU. region_index: Region to modify (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| loop_beats | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| loop_offset_beats | Yes | ||
| event_offset_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It explains that loop_beats=0 disables the loop and describes how offsets shift loop/event positions, adding valuable operational detail. It does not, however, cover potential side effects, idempotency, or error conditions.
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?
Purpose is stated in the first sentence, with subsequent lines dedicated to behavioral clarification and parameter meanings. Each line serves a distinct purpose; the structure is efficient and 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?
Output schema exists, so return values are covered elsewhere. The description documents all six required parameters and explains loop semantics, making it self-contained for invocation. Minor gaps like how to obtain indices or what happens to existing loop settings are acceptable given the 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?
All six parameters receive semantic explanation beyond the bare schema titles: loop_beats includes a concrete example (4.0 = 1 bar in 4/4), unit_index documents the -1 sentinel, and region_index notes 0-based indexing. This fully compensates for the 0% schema_description_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?
States 'Set loop parameters for a note region' with a specific verb and resource, followed by behavioral explanation of looping. However, it does not differentiate from similarly named sibling tools like mcp_opendaw_set_loop_region or mcp_opendaw_set_region_duration.
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 contextual detail about loop behavior and region duration but offers no explicit guidance on when to choose this tool over alternatives. No exclusions or alternative tool references are mentioned, so it's 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.
mcp_opendaw_set_region_muteA
Mute or unmute a specific region without deleting it.
mute: true to mute, false to unmute.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | ||
| unit_index | No | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds the useful non-destructive note ('without deleting it') and explains the mute parameter. However, it doesn't disclose potential side effects (e.g., whether playback state is affected) or error conditions, leaving gaps 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?
Two short sentences, no filler. The description is front-loaded with the core action and immediately explains the key parameter. 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 simple mute operation, the description is adequate but minimal. It lacks usage context, prerequisites, and return value details (though an output schema exists). Given the tool has 4 parameters and no annotations, a bit more context would round it out, but it is not severely 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 0%, so the description must compensate. It only explains the 'mute' parameter ('true to mute, false to unmute'). The three index parameters (track_index, region_index, unit_index) are left to the agent's inference from their names, with no indication of zero-based indexing or required 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 verb (mute/unmute), resource (specific region), and explicitly contrasts with deletion ('without deleting it'), distinguishing it from sibling tools like set_track_mute and delete_region.
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 by describing the action, but does not explicitly state when to use this tool vs alternatives. It does not mention that set_track_mute exists for tracks or that delete_region is for deletion, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_region_positionA
Move a region to a new position on the timeline.
position_beats: New position in beats (e.g. 4.0 = start of bar 2 in 4/4). region_type: 'note' or 'audio'. unit_index: Audio unit index (-1 = search all AUs). track_index: Track index within the AU. region_index: Region to move (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| region_type | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| position_beats | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 states the action and parameter details but does not mention reversibility, side effects, permissions, or edge-case behavior. For a mutating tool, this is a notable 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 extremely concise: a single-sentence purpose followed by bullet-like parameter definitions. Every line adds value 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?
All required parameters are fully explained, including practical examples. An output schema exists, so return values need not be described. Minor gaps like error conditions or range validation are absent but not critical for this operation.
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 provides thorough explanations for all five parameters, including units (beats), concrete examples (4.0 = start of bar 2), valid values (note/audio), and special sentinel behavior (unit_index -1 = search all AUs). This far exceeds the bare schema titles.
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 'Move a region to a new position on the timeline,' which is a specific verb+resource statement. It clearly identifies the operation and distinguishes it from sibling tools like set_region_duration or move_region_to_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 conveys when to use this tool: to reposition a region on the timeline. It does not explicitly mention alternatives or exclusions, but the context is unambiguous for this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_revamp_filterA
Configure a filter section on a Revamp (parametric EQ) effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Revamp). section: One of: "highpass", "lowshelf", "lowbell", "midbell", "highbell", "highshelf", "lowpass". enabled: Enable/disable this filter section. frequency: Center/cutoff frequency in Hz (20-20000, exponential). gain: Boost/cut in dB (-24 to 24, for shelves and bells only). q: Bandwidth/resonance (0.01-10, for bells and LPF). order: Filter steepness 1-4 (for HPF/LPF only).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| gain | No | ||
| order | No | ||
| enabled | Yes | ||
| section | Yes | ||
| frequency | No | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds meaningful context such as frequency being exponential (20–20000 Hz), gain applicability limited to shelves/bells, q to bells and LPF, and order to HPF/LPF. These constraints go beyond raw ranges and explain which parameters have effect for which sections, which is valuable 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 structured as a clean, front-loaded summary followed by one-line parameter entries. Every sentence earns its place; there is no fluff, and the format makes it easy for an agent to scan the required and optional parameters and their constraints.
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 complexity (8 parameters, no annotations), the description covers all necessary invocation details: the effect must be a Revamp, the valid section values, parameter ranges, and when parameters apply. It also states required parameters implicitly via the schema, and the existence of an output schema means return values need not be described. The tool is fully specified 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?
Schema description coverage is 0%, but the description compensates fully by explaining all 8 parameters: unit_index as AU index, effect_index as a Revamp effect in the chain, section enum with the seven valid values, enabled as a boolean, plus ranges and applicability for frequency, gain, q, and order. This adds meaning well beyond the schema's bare property titles.
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 and resource: 'Configure a filter section on a Revamp (parametric EQ) effect.' This clearly distinguishes it from generic effect parameter setters among siblings, as it targets a particular effect type (Revamp) and a specific aspect (filter sections).
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 for when the tool is appropriate: it requires the effect_index to be a Revamp, and it lists the valid filter section types. It does not explicitly name alternatives or say when not to use it, but the 'must be a Revamp' constraint and section types provide solid usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_script_device_codeA
Set the user JavaScript code on a scriptable device (Apparat/Werkstatt/Spielwerk).
Compiles the code using the official OpenDAW ScriptCompiler, which:
Parses @param declarations and creates WerkstattParameterBox children
Parses @sample declarations and creates WerkstattSampleBox children
Validates the JavaScript (new Function check)
Registers the worklet module on the AudioContext
Writes the code with proper // @ header back to the device
The code defines a Processor class that the host instantiates in the audio worklet.
@param declarations: // @param [type] [unit]
@sample declarations: // @sample
See the openDAW plans/apparat.md, plans/spielwerk.md for the full API.
device_type: "apparat" (instrument), "werkstatt" (audio effect), "spielwerk" (MIDI effect)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| unit_index | Yes | ||
| device_type | Yes | ||
| device_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does well: it details the compilation process (parsing @param/@sample, validation, registering worklet module, writing code back), and even states the effect on the device. It doesn't mention potential side effects or failure modes, but the covered steps are informative and honest.
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 moderately long but well-structured with bullet points and a clear explanation of the compilation steps. Every sentence adds value, and the @param/@sample syntax examples are useful. It could be slightly shortened without losing information, but it remains focused and 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 the complexity of scriptable devices and a 4-parameter schema, the description is largely complete. It explains the tool's behavior, the device types, and the code syntax. It also points to external references (plans/apparat.md) for further API details. Since an output schema exists, return values don't need explanation. The main gap is the lack of clarity about unit_index/device_index, but overall context is solid.
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. It adds meaning for 'code' (JavaScript code defining a Processor class) and 'device_type' (listing 'apparat', 'werkstatt', 'spielwerk'). However, 'unit_index' and 'device_index' are not explained beyond their schema names, leaving a gap for an agent that needs to know how to address the correct device.
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: 'Set the user JavaScript code on a scriptable device (Apparat/Werkstatt/Spielwerk).' It uses a specific verb ('Set') and resource ('user JavaScript code on a scriptable device'), and the parenthetical enumeration of device types adds clarity. It is easily distinguished from siblings like get_script_device_code.
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 this tool: when setting user JavaScript code on scriptable devices, via the OpenDAW ScriptCompiler. It lists the device types and details the compilation steps, giving clear context. It doesn't explicitly exclude alternatives, but the context is sufficient for selecting this tool in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_script_paramA
Set a parameter value on a scriptable device by label.
The parameter must exist (created from a // @param declaration in the code).
The value is validated against the declaration's range (min/max) and mapping type:
bool: snaps to 0 or 1
int: rounds to nearest integer within [min, max]
linear/exp/unipolar: clamps to [min, max] Response includes
clampedflag andrangeinfo if the value was adjusted.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| unit_index | Yes | ||
| device_type | Yes | ||
| param_label | Yes | ||
| device_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does so thoroughly. It discloses exact validation behavior per type (bool snapping, int rounding, linear/exp/unipolar clamping) and mentions the `clamped` flag and `range` info in the response. This is rich, non-obvious behavioral information beyond what the schema provides.
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 a clear action sentence followed by a compact bullet list of validation behaviors. Every sentence adds useful information—prerequisite, per-type behavior, and response details—without padding 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?
The description covers the core operation and value validation well, and an output schema exists so return-value details are not mandatory. However, it omits error behavior when the parameter does not exist and does not explain how to correctly identify the target device via the three identifier parameters, which is a notable gap given the 0% schema coverage.
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 parameters. It explains `value` and `param_label` well, but `device_type`, `unit_index`, and `device_index` are left entirely unexplained. The three identifier parameters are ambiguous in a DAW context, so the description only partially compensates for the missing schema metadata.
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+resource+scope: "Set a parameter value on a scriptable device by label." This clearly distinguishes the tool from siblings like list_script_params or set_effect_parameter by focusing on scriptable device parameters addressed by label.
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: the parameter must already exist as a `// @param` declaration, implying it is meant to be used after setting script code and perhaps after listing script params. It does not explicitly name alternatives or exclusions, but the prerequisite is a useful usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_send_levelA
Set the send level for an existing aux send.
src_unit: Source audio unit index. send_index: Send index on the source AU (from create_send return). level_db: Send level in dB.
| Name | Required | Description | Default |
|---|---|---|---|
| level_db | Yes | ||
| src_unit | Yes | ||
| send_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosure burden. It states that the tool sets a send level but does not mention any side effects, constraints on level_db (e.g., range or clipping), error conditions for invalid indices, or what the tool returns. The description adds minimal behavioral context beyond the core 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 concise: one purpose sentence followed by two-sentence parameter definitions. It is front-loaded with the action and then provides exactly the needed parameter semantics. No waste, every line 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 that this is a simple setter with an output schema, the description provides sufficient operational details: what the tool does, what each parameter means, and a hint about obtaining send_index from create_send. The main gap is behavioral transparency (covered separately), but for executing the call correctly, the description is largely 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 has 0% description coverage, so the description must compensate. It fully explains each parameter: src_unit is the source audio unit index, send_index is the send index obtained from create_send return, and level_db is the send level in dB. This is useful and goes beyond the bare schema, though it omits any range or constraint 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 states a clear action: 'Set the send level for an existing aux send.' This uses a specific verb ('set'), identifies the resource ('send level'), and scopes it to 'aux send.' It clearly distinguishes from sibling tools like set_send_pan and set_send_routing, which address different aspects of sends.
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 an existing aux send' implies that the send must already have been created, and 'send_index ... from create_send return' provides a workflow hint. However, there is no explicit guidance on when to choose this tool over alternatives (e.g., set_send_pan for panning) or mention of exclusions. Usage is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_send_panA
Set the stereo pan for an aux send (-1.0 = full left, 0.0 = center, 1.0 = full right).
unit_index: Source audio unit index. send_index: Send index on the source AU. pan: Pan value from -1.0 (left) to 1.0 (right).
| Name | Required | Description | Default |
|---|---|---|---|
| pan | Yes | ||
| send_index | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 simply says 'Set' and gives the value range, but does not mention side effects, non-reversibility, whether the send must already exist, or any error behavior. This is minimal 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 compact and front-loaded: one purpose sentence followed by a concise parameter list. Every line adds value and 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?
The description covers the essential parameters and the pan scale, but for a mutating tool with no annotations, it lacks usage context, prerequisites, and error handling details. The operation is simple and the parameter documentation is solid, so it is minimally complete 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%, but the description manually documents all three parameters: unit_index, send_index, and pan. It also explains pan semantics with a full left/center/full right mapping, fully compensating for the schema's lack of 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 opens with a specific verb+resource: 'Set the stereo pan for an aux send.' It also defines the allowable range (-1.0 to 1.0), making the action immediately clear. This differentiates it from sibling send tools like set_send_level and set_send_routing.
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 versus alternatives such as set_track_panning or set_send_level. There is no mention of prerequisites like an existing send or how invalid indices/pan values are handled. The usage context is only implied by the tool name and parameter descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_send_routingA
Set the routing mode for an aux send (pre-fader or post-fader).
unit_index: Source audio unit index. send_index: Send index on the source AU. routing: 'pre' (pre-fader, before volume/pan) or 'post' (post-fader, default).
| Name | Required | Description | Default |
|---|---|---|---|
| routing | Yes | ||
| send_index | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description defines the two routing modes and their meanings ('pre-fader, before volume/pan' vs 'post-fader'), which explains the main behavior. However, it does not disclose potential side effects, prerequisites (e.g., send must exist), or error conditions.
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: a single purpose sentence followed by three one-line parameter definitions. Every sentence adds necessary information with no 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?
For a simple setter with three parameters, the description covers all necessary aspects: purpose, parameter meanings, and value explanations. It could optionally mention whether indices are zero-based or that the send must already exist, but these are not critical 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%, but the description fully documents every parameter: unit_index (source audio unit index), send_index (send index), and routing with allowed values and their meaning. This entirely compensates for the missing 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 'Set the routing mode for an aux send', specifying the exact action and resource. It distinguishes itself from sibling tools like set_send_level and set_send_pan by focusing on routing mode (pre/post).
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 through its clear purpose, but does not explicitly state when to use this tool versus alternatives or provide exclusions. It is unambiguous enough for an agent to infer, but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_stereo_tool_panningA
Set the panning mixing mode on a StereoTool effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a StereoTool). panning_mixing: Panning law (0=linear, 1=equal-power, or other supported values).
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| effect_index | Yes | ||
| panning_mixing | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral burden. It discloses the allowable values for panning_mixing (0=linear, 1=equal-power, or other supported values), which is useful. However, it does not state whether the operation is reversible, whether it triggers any side effects, or what the return value/output is. This is adequate for a simple setter but leaves some behavioral ambiguity.
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: a one-sentence purpose followed by three compact parameter lines. Every sentence earns its place, and the structure is front-loaded with the core purpose before parameter details. No fluff 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 setter, the description covers the essential aspects: what it does, all parameter meanings, and constraints (must be StereoTool). The presence of an output schema means return-value details are not required in the description. A minor gap is the lack of guidance on what happens if effect_index does not point to a StereoTool, but this is not critical for a basic setter.
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 explicitly defines all three parameters, adding semantic meaning beyond the input schema's bare titles. It clarifies that unit_index is the AU index, effect_index is the index in the audio effect chain (with the StereoTool requirement), and panning_mixing includes explicit value mappings. This fully compensates for the 0% schema description 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 action-verb and resource: 'Set the panning mixing mode on a StereoTool effect.' This clearly differentiates it from sibling tools like set_track_panning (which targets track-level panning) and generic set_effect_parameter tools. 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 the tool (when a StereoTool exists in the effect chain) by stating 'must be a StereoTool.' However, it does not explicitly contrast with alternatives such as set_effect_parameter_int or other effect-specific setters. It provides a necessary precondition but no exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_studio_settingA
Set a studio preference setting.
Args: category: Settings category — one of: 'engine', 'visibility', 'editing', 'debug', 'storage', 'time-display', 'pointer' key: Setting key within the category (e.g. 'auto-create-output-maximizer', 'overlapping-regions-behaviour', 'enable-beta-features') value: New value as string — 'true'/'false' for booleans, or string values for enums
Common settings: engine.auto-create-output-maximizer (bool): auto-create Maximizer on Output unit engine.note-audition-while-editing (bool): play notes when editing engine.stop-playback-when-overloading (bool): stop playback on CPU overload editing.overlapping-regions-behaviour ('clip'|'push-existing'|'keep-existing'): how overlapping regions interact editing.show-clipboard-menu (bool): show clipboard menu debug.enable-beta-features (bool): enable beta features debug.enable-debug-menu (bool): enable debug menu debug.show-cpu-stats (bool): show CPU stats storage.auto-delete-orphaned-samples (bool): auto-delete unused samples visibility.auto-open-clips (bool): auto-open clips visibility.base-frequency (bool): show base frequency
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| category | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses value formats ('true'/'false' for booleans, strings for enums) and lists example settings, but it does not mention persistence, immediate application, validation behavior, or error handling. This is useful context but not complete 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 well-structured: one clear purpose sentence, an Args block, and a Common settings list. It is longer than minimal but every section provides operational value. The category list is partly redundant with the common-settings dotted keys, but not severely bloated.
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 tool with no schema descriptions and no annotations, the description is quite complete. It covers all categories, value representations, and a substantial set of common settings. It lacks explicit return-value/error behavior and a way to discover all keys, but the output schema existence reduces the need to describe return values.
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 fully compensates. It explains allowed category values, gives key examples, describes the value parameter's encoding, and provides a common-settings table with types and enum options. This adds substantial 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?
The description opens with 'Set a studio preference setting,' which is a specific verb + resource statement. It clearly distinguishes this tool from sibling read/settings tools like mcp_opendaw_get_studio_settings and from per-track/effect setters by limiting scope to 'studio preference settings' and enumerating categories.
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 by labeling the tool as a studio preference setter and listing categories/common settings, but it never explicitly states when to use it versus alternatives or when not to use it. It provides no exclusions or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_tidal_rateA
Set the LFO rate on a Tidal effect using a musical fraction string.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Tidal). rate: Musical fraction — one of: "1/1", "1/2", "1/3", "3/16", "1/6", "1/8", "3/32", "1/12", "1/16", "3/64", "1/24", "1/32", "1/48", "1/64", "1/96", "1/128".
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It offers parameter constraints and allowed values but omits any details on side effects, error conditions, reversibility, or return values. Lacks the behavioral disclosure expected 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 fairly concise with a clear first sentence, followed by parameter explanations. The list of rate values is necessary but somewhat verbose; still, it is structured and 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?
The description covers the core parameters and allowed values, but lacks guidance on usage context, error handling, and aftermath of the operation. Given the tool's simplicity and absence of annotations, it is 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?
All three parameters are explained beyond the schema: unit_index as AU index, effect_index with the Tidal requirement, and rate with an explicit allowed list of musical fractions. This fully compensates for the 0% schema description 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?
Clearly states the action (Set LFO rate), the target (Tidal effect), and the input type (musical fraction string). This distinguishes it from sibling tools that set other effect parameters.
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 parameter constraints (must be a Tidal) but does not explicitly state when to choose this over other effect-setting tools or mention alternatives. Usage is implied but not directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_time_signatureA
Set the project time signature (e.g. 4/4, 3/4, 6/8, 7/8).
numerator: Number of beats per bar (top number, e.g. 4, 3, 6, 7). denominator: Note value per beat (bottom number: 4=quarter, 8=eighth).
| Name | Required | Description | Default |
|---|---|---|---|
| numerator | Yes | ||
| denominator | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 burden of behavioral disclosure. It only says 'set', implying a mutation, but gives no information about side effects on existing signature changes, reversibility, or required project state. For a write operation, 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 two short sentences plus a structured breakdown of the two parameters. Every line adds value, with no filler or repetition of schema details. It is front-loaded with the main 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 covers the core function and both parameters adequately for a simple setter, and an output schema exists so return values need no explanation. However, it omits constraints like valid denominator ranges and does not address differences from add_signature_change, leaving minor gaps. Overall 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 input schema only specifies integer types with no descriptions (0% coverage). The description compensates fully by explaining numerator as 'Number of beats per bar' and denominator as 'Note value per beat,' including mappings like 4=quarter and 8=eighth. It adds substantial semantic meaning and usage 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?
The description opens with 'Set the project time signature'—a specific verb+resource. It provides concrete examples (4/4, 3/4, 6/8, 7/8) and distinguishes the tool by scoping it to the project time signature. This clearly differentiates it from siblings like set_bpm or set_groove_shuffle.
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 by stating the action, but does not explicitly say when to use this tool versus alternatives like add_signature_change. It offers no when-not-to-use conditions or exclusions. The context is clear but not differentiated from related time-signature tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_time_stretch_centsA
Set the pitch shift (in cents) on a time-stretched audio region.
100 cents = 1 semitone. Range: -1200 to +1200 cents (clamped). Only works on time-stretched regions (created with create_time_stretched_region).
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. cents: Pitch shift in cents (-1200 to +1200).
Returns new playback rate and cents, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| cents | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 well: it discloses clamping ('Range: -1200 to +1200 cents (clamped)'), the need for prior time-stretch creation, and the return value ('Returns new playback rate and cents, or error'). It doesn't mention reversibility or side effects beyond the set operation, 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 tightly organized: a one-sentence purpose, a units/range sentence, a prerequisite line, a labeled parameter list, and a return-value line. No wasted words; every sentence adds value and key details are 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 4-parameter mutating tool with no annotations, the description covers purpose, prerequisite, parameter semantics, range, and return value. It could go deeper on error scenarios (e.g., what exactly fails) or whether prior values are overwritten, but these are minor gaps. The presence of an output schema (not shown) likely covers return formatting 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?
The schema provides no description coverage, so the description fully compensates by explaining each parameter: 'unit_index: AU index', 'track_index: Track index within the AU', 'region_index: Audio region index', and 'cents: Pitch shift in cents (-1200 to +1200)'. This adds critical meaning well beyond the bare schema 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 states a specific action ('Set the pitch shift') and identifies the target resource ('time-stretched audio region'), distinguishing it from siblings like set_note_cents or create_pitch_stretched_region. The phrase 'pitch shift (in cents)' is precise and semantically 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 explicitly states a prerequisite ('Only works on time-stretched regions') and references the creating tool ('created with create_time_stretched_region'), which indirectly warns against using it on other region types. It also gives the valid range and clamping behavior. However, it does not name specific alternative tools for non-time-stretched regions, so it stops short of full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_track_enabledA
Enable or disable a track (equivalent to track mute in the UI).
unit_index: AU index. track_index: Track index within the AU. enabled: True to enable, false to mute/disable.
Returns success with old and new enabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| unit_index | Yes | ||
| track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the return value (old and new enabled state) and parameter meanings, but does not mention side effects, prerequisites, or whether the operation is reversible or has any state implications beyond the toggle.
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 starts with the core purpose, followed by parameter definitions and the return value. No redundant sentences exist, though the line-break formatting could be refined into a more structured list.
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 setter tool, the description covers the action, all parameters, and the return format. Since no output schema is shown, the mention of 'old and new enabled state' is valuable. Lacks information about index conventions or error handling, but these are minor given the tool's simplicity.
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 parameter names (Enabled, Unit Index, Track Index) with no descriptions. The description fills this gap entirely by explaining each parameter: unit_index as AU index, track_index within the AU, and enabled as mute/unmute semantics. This fully compensates 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 description clearly states the action ('Enable or disable a track') and the target resource, and explicitly equates it with track mute in the UI. This aids differentiation from many instrument/effect tools, though it does not distinguish it from the sibling 'set_track_mute' tool.
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 'equivalent to track mute' phrase hints at a muting use case, but does not explain how this differs from the set_track_mute sibling or when to prefer one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_track_muteC
Mute or unmute an audio unit.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the full burden. It only states the action without disclosing side effects, whether the operation is destructive, how it affects playback, or any permissions required. The boolean parameter implies 'set to state' rather than toggle, but that is not explicitly stated.
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 wasted words. It is front-loaded with the verb. However, it may be too minimal, sacrificing necessary detail for brevity, but the structure is clean.
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 parameter set and presence of an output schema, the description should still explain how to identify the target audio unit via unit_index. The ambiguity between 'track' in the name and 'audio unit' in the description is unresolved. The description is too sparse for a tool that directly mutates an audio element.
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 compensate. 'Mute' implies a boolean value, but 'unit_index' is left undefined—no explanation of what a unit is, how indices are numbered, or how to discover valid indices. The description adds almost no value beyond the schema's bare parameter 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 ('Mute or unmute') and the target ('an audio unit'). It is a specific verb+resource pairing that distinguishes it from sibling tools like set_region_mute or set_clip_mute. However, the tool name says 'track' while the description says 'audio unit,' which could cause minor ambiguity.
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 does not mention when muting a track is appropriate, how it relates to solo, or any prerequisites such as needing the track to exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_track_panningB
Set panning of an audio unit. -1.0 = full left, 0.0 = center, 1.0 = full right.
| Name | Required | Description | Default |
|---|---|---|---|
| panning | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 adds the panning range (-1.0 to 1.0) which clarifies valid inputs, but it does not disclose side effects, error handling, or the effect of invalid unit indices. This is minimal useful 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 sentence with a clear value mapping. It is front-loaded and contains zero 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 setter operation, the description covers the essential behavior and value constraints. The output schema exists, so return values need not be described. It lacks minor context about the unit_index parameter, but overall is sufficient for a tool of this 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 coverage is 0%, so the description must compensate. It fully explains the 'panning' parameter's scale and endpoints, but the 'unit_index' parameter is left entirely unexplained. This partial coverage is helpful but incomplete for a two-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 clearly states the tool sets panning on an audio unit and specifies the value range. It distinguishes itself from volume or send operations, though it does not explicitly contrast with sibling tools like set_send_pan or set_stereo_tool_panning.
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 versus alternatives. There is no mention of prerequisites, conditions, or when not to use it, leaving the agent to infer based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_track_soloC
Solo or unsolo an audio unit.
| Name | Required | Description | Default |
|---|---|---|---|
| solo | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It only restates the binary solo/unsolo behavior without explaining side effects on other tracks, the meaning of solo in this DAW, or what happens to the unit's previous state. No added value 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?
At six words, the description is extremely concise but under-specified. It omits necessary context, making this a lack of information rather than an efficiently crafted 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?
Even though the tool has only two parameters and an output schema, the description fails to provide essential context about the target unit, how to identify it, or the effect of solo on the overall mix. It is barely sufficient for a simple setter.
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% coverage, but the description does not meaningfully explain the parameters. It implicitly maps solo=true to solo and solo=false to unsolo, but says nothing about what unit_index refers to or how to obtain a valid index. Minimal compensation for the low 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 states a clear action (solo/unsolo) but refers to an 'audio unit' rather than a track, which is ambiguous given the tool name contains 'track'. It distinguishes from sibling set_track_* tools by the solo/unsolo action, but the resource is not clearly defined.
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, what prerequisites exist, or how it relates to alternatives like set_track_mute or create_solo. The description gives no contextual entry points.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_track_volumeA
Set volume of an audio unit in dB.
Uses VolumeMapper.decibel(-96, -9, +6) powerByCenter mapping. Range: -96 dB (mute) to +6 dB. 0 dB = raw 0.768.
| Name | Required | Description | Default |
|---|---|---|---|
| volume_db | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and provides substantial behavioral detail: it discloses the VolumeMapper.decibel(-96, -9, +6) powerByCenter mapping, the valid range (-96 to +6 dB), and the raw value at 0 dB (0.768). This goes beyond a generic 'set volume' statement, though it does not mention side effects or prerequisites.
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 three sentences with no redundancy. The first sentence front-loads the core purpose, and the subsequent sentences add essential technical detail. 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 two-parameter setter with an output schema, the description is nearly complete. It fully specifies the volume range and mapping, and unit_index is obvious. It lacks usage guidance and does not explain how to identify the target audio unit, but these are minor gaps for a low-complexity 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. It adds meaning to volume_db by giving the range and mapping, but it leaves unit_index undefined. While unit_index is self-explanatory from its name, the description does not explicitly connect either parameter to the schema, so it only partially compensates.
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 'Set volume of an audio unit in dB' with a specific verb and resource, and provides the dB range. However, it does not explicitly distinguish this from sibling tools like set_track_panning or set_effect_parameter, so it falls 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?
The description gives no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The mapping and range imply usage context, but there is no explicit direction, so it scores 2 (no guidance).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_transposeA
Set global transpose for the piano roll view (does not affect audio playback).
semitones: Number of semitones to transpose (-48 to +48).
Returns success with old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| semitones | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 covers the key behavioral trait (no audio playback), the parameter range, and the fact that it returns old/new values. Yet it does not explain side effects, reversibility, or what 'global' fully entails, leaving notable 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?
Three compact sentences: purpose, parameter explanation, and return value. Extremely concise, front-loaded, and every sentence contributes value without 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 tool's low complexity (single parameter) and the existence of an output schema, the description adequately covers the input and return value. It would benefit from a tiny bit more context on scope (e.g., what 'global' means in terms of tracks), but for its simplicity, it's largely 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 'semitones' as an integer with no description. The tool description adds meaning by specifying it's the number of semitones and provides a valid range (-48 to +48), exceeding baseline 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 verb 'Set' and the resource 'global transpose for the piano roll view', and it explicitly distinguishes itself from audio-affecting operations with 'does not affect audio playback'. This differentiates it well from sibling tools like transpose_notes.
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 context: it's for the piano roll view and does not affect audio playback. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_tuningA
Set the A4 base frequency (concert pitch tuning).
frequency: A4 frequency in Hz. Default 440. Common alternatives: 432 (verdi), 415 (baroque), 466 (baroque organ).
| Name | Required | Description | Default |
|---|---|---|---|
| frequency | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 disclosing behavioral traits. It only states the action itself and offers parameter examples, but does not mention whether the setting is global or per-track, whether it affects playback or recording, whether it is reversible, or if any prerequisites exist (e.g., engine running). This is a notable 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?
The description is extremely concise: two short sentences, with the purpose in the first and parameter details in the second. There is no filler or redundant information. Every sentence serves a clear function, 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 simple setter with only one parameter and an output schema present, the description covers the essential semantics: what the tool does and what the parameter means. It lacks broader context about the scope (global vs. per-track) but this is a minor omission given the tool's simplicity and the presence of an output schema that likely covers return values.
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 0% description coverage (only type 'integer' and title 'Frequency'), so the description must compensate. It does so excellently: 'A4 frequency in Hz. Default 440. Common alternatives: 432 (verdi), 415 (baroque), 466 (baroque organ).' This adds units, a default, and meaningful examples, going well 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 tool's purpose: 'Set the A4 base frequency (concert pitch tuning).' It uses a specific verb ('set') and resource ('A4 base frequency'), and the parenthetical 'concert pitch tuning' distinguishes it from other set tools like set_bpm or set_time_signature. This is unambiguous and 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?
The description does not explicitly state when to use this tool versus alternatives or provide prerequisites or exclusions. The use case is implied by the tool name and the phrase 'concert pitch tuning,' but there is no direct guidance on when to choose this over sibling tools. This is implied usage rather than explicit, warranting a midpoint score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_unit_minimizedA
Minimize or expand an audio unit in the mixer view.
Minimized AUs take less space in the mixer — useful for decluttering when working with many tracks.
unit_index: AU index. minimized: True to minimize, False to expand.
Returns success with old and new minimized state.
| Name | Required | Description | Default |
|---|---|---|---|
| minimized | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It adds the behavior that returns include old and new minimized state, and explains the effect of the boolean parameter. It omits edge cases and side effects, but the tool's scope is narrow and the behavior is adequately disclosed for a UI toggle.
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 a purpose statement. Each additional sentence adds value: rationale for the feature, parameter semantics, and return behavior. There is no 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?
For a simple setter with a narrow scope, the description covers what it does, when it's useful, what each parameter means, and what it returns. The presence of an output schema (even if not visible) reduces the need to describe the return structure. Minor details like error handling are omitted but are not critical for this UI toggle.
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 types/titles; the description adds the missing semantic for both parameters: unit_index as 'AU index' and minimized as 'True to minimize, False to expand.' This fully compensates for the 0% schema description 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 phrase 'Minimize or expand an audio unit in the mixer view,' clearly identifying the action and resource. It also distinguishes itself from sibling mixer/setter tools by focusing on the audio unit's minimized state rather than volume, effects, or track parameters.
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 a clear use case ('useful for decluttering when working with many tracks') but does not explicitly state when to avoid using it or mention alternative tools. This is contextual guidance without exclusions, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_vaporisateur_osc_paramA
Set a parameter on a Vaporisateur oscillator.
osc_index: Oscillator index (0, 1). param_name: One of: waveform, volume, octave, tune. waveform: 0=Sine, 1=Triangle, 2=Saw, 3=Square volume: dB (-Infinity to +6) octave: integer offset tune: semitone offset (float) value: New value. unit_index: Audio unit index (-1 = auto-detect).
Returns old and new values.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| osc_index | Yes | ||
| param_name | Yes | ||
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 does disclose that the tool returns old and new values, which is helpful, and provides value ranges for parameters. However, it does not mention side effects, error behavior on invalid inputs, or whether the operation is reversible. This is a moderate level of transparency for a write 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 well-structured and information-dense, using bullet-like formatting to list each parameter and its allowed values. The purpose statement is front-loaded, and every sentence provides useful detail. No fluff or redundancy beyond the minor 'value: New value' line, which is still functional.
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 moderate complexity (4 required parameters, no annotations, output schema present), the description covers param semantics, value domains, and return behavior (old and new values). It is complete enough for an agent to invoke it correctly without additional lookup. Missing only explicit usage context and edge-case handling, which are minor 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 fully document parameters, and it does. It explains the valid range for osc_index (0,1), enumerates all accepted param_name values with exact mappings (waveform: 0=Sine, etc.), describes volume dB range, octave integer offset, tune float offset, and the special auto-detect behavior of unit_index. This adds substantial 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?
The description opens with 'Set a parameter on a Vaporisateur oscillator,' which clearly identifies the action (set), the target resource (parameter on a Vaporisateur oscillator), and distinguishes it from other set_* tools that target different resources (e.g., set_effect_parameter, set_instrument_param). The parameter details further clarify the 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?
No explicit guidance is provided about when to use this tool versus alternatives like mcp_opendaw_list_vaporisateur_params or set_instrument_param. The description implies usage for any Vaporisateur oscillator parameter change, but does not mention prerequisites (e.g., looking up valid param names via the list tool) or scenarios where a different 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.
mcp_opendaw_set_vocoder_band_countA
Set the band count on a Vocoder effect (number of filter bands, typically 8-32).
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Vocoder). band_count: Number of bands (8, 16, 24, 32 are common values).
| Name | Required | Description | Default |
|---|---|---|---|
| band_count | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 adds useful behavioral context (band count range and the vocoder requirement) but does not disclose side effects, error behavior, or what happens if the effect is not a Vocoder. This is minimal but not inadequate for a simple setter.
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: one sentence for purpose followed by three lines of parameter explanations. It is front-loaded with the main action and contains no filler, making every line earn 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 setter tool with an output schema present, the description is quite complete: it covers purpose, parameter meanings, and the key constraint (must be a Vocoder). It does not detail error handling or return values, but the output schema likely covers that, so the description suffices 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 JSON schema has 0% description coverage, and the description manually explains all three parameters: unit_index ('AU index'), effect_index ('Effect index in the audio effect chain (must be a Vocoder)'), and band_count ('Number of bands (8, 16, 24, 32 are common values)'). This fully compensates for the schema's lack of 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 tool's action: 'Set the band count on a Vocoder effect' and adds context about typical values (8-32). This is a specific verb+resource combination that distinguishes it from other effect-specific setters in the sibling list.
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 the constraint that effect_index 'must be a Vocoder', which is useful context, but it does not explicitly mention when to use this tool over generic parameter setters like set_effect_parameter_int. There are no alternatives or when-not-to-use statements, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_vocoder_modulator_sourceA
Set the modulator source on a Vocoder effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Vocoder). source: One of "noise-white", "noise-pink", "noise-brown", "self", "external".
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the responsibility of disclosing behavior. It states the action ('Set') and lists allowed source values, which clarifies that it is a mutation of a setting. However, it does not describe side effects, prerequisites beyond the effect type, or error behavior. The listing of valid source values adds some transparency, but the description is relatively 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?
The description is extremely concise and well-structured: a single opening sentence followed by a bullet list of parameter explanations. No unnecessary words or repetition. Every sentence carries information. It is front-loaded with 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?
For a simple setter operation, the description covers the essential context: the target effect type (Vocoder) and the parameter meanings. It does not explain return values, but an output schema exists and likely covers that. Missing are details about side effects or behavior when constraints are violated, but given the low complexity, the description is 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?
The input schema provides only names, types, and required status, with 0% schema description coverage. The description fully compensates by explaining each parameter: unit_index as 'AU index', effect_index with the constraint 'must be a Vocoder', and source with an explicit list of allowed values ('noise-white', 'noise-pink', 'noise-brown', 'self', 'external'). This adds substantial 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 tool's function: 'Set the modulator source on a Vocoder effect.' This uses a specific verb ('set') and a specific resource ('modulator source on a Vocoder effect'), which distinguishes it from sibling tools like set_vocoder_band_count. 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 usage context by specifying that effect_index 'must be a Vocoder', but it does not explicitly state when to use this tool versus alternatives. There is no mention of exclusions or alternative tools (e.g., generic set_effect_parameter). The constraint provides some guidance, but the 'when' is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_set_waveshaper_equationA
Set the transfer function equation on a Waveshaper effect.
unit_index: AU index. effect_index: Effect index in the audio effect chain (must be a Waveshaper). equation: One of: "hardclip", "cubicSoft", "tanh", "sigmoid", "arctan", "asymmetric". - hardclip: harsh digital clipping - cubicSoft: warm soft clipping, odd harmonics - tanh: classic smooth saturation - sigmoid: exponential saturation - arctan: gentlest symmetric saturation - asymmetric: tube-like, even harmonics from asymmetry
| Name | Required | Description | Default |
|---|---|---|---|
| equation | Yes | ||
| unit_index | Yes | ||
| effect_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 does not mention whether the existing equation is overwritten, any side effects, or what happens if the effect is not a Waveshaper. The description only states the action with no behavioral consequences.
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 efficiently structured: one purpose sentence, then each parameter explained in a compact format, followed by a bullet-style list of equation values. No redundant wording or unnecessary detail. Every line 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?
For a straightforward setter with three parameters, the description covers purpose, parameter semantics, and the range of equation values. The output schema exists, so return value is assumed. It could mention error behavior, but overall 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?
Schema description coverage is 0%, but the description fully compensates. It defines unit_index as 'AU index', effect_index with a constraint, and equation with six named options, each accompanied by a concise sonic description (e.g., 'tanh: classic smooth saturation'). This goes well 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 opens with 'Set the transfer function equation on a Waveshaper effect.' This is a specific verb+resource statement that clearly identifies the tool's purpose. It distinguishes itself from sibling tools like generic effect setters by targeting the waveshaper specifically.
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 states a key constraint ('effect_index ... must be a Waveshaper') and includes a detailed list of equation choices with descriptions, helping the agent choose appropriate values. It doesn't explicitly name alternatives, but the specialized nature and the constraint provide clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_shift_modeA
Transform notes from one scale/mode to another, keeping the tonic.
Finds which scale degrees differ between from_scale and to_scale, then shifts ONLY the notes on those degrees by the interval difference. The tonic (degree 1) and unchanged degrees stay put — the transformation is surgical, not a blanket snap.
Examples: shift_mode(root_note="A", from_scale="minor", to_scale="dorian") → minor 6th (Ab) becomes major 6th (F#). A minor → A dorian. Only notes on degree 6 shift (+1 semitone). Everything else stays. shift_mode(root_note="E", from_scale="minor", to_scale="phrygian") → degree 2 (F#) becomes F natural (-1 semitone). E minor → E phrygian. shift_mode(root_note="D", from_scale="major", to_scale="mixolydian") → degree 7 (C#) becomes C natural (-1 semitone). D major → D mixolydian. shift_mode(root_note="C", from_scale="minor", to_scale="harmonic_minor") → degree 7 (Bb) becomes B natural (+1 semitone). C minor → C harmonic minor.
Unlike force_scale_notes (snaps to nearest scale tone — can change the melodic shape), shift_mode preserves the contour: notes that are already in the target scale don't move. Only the specific degrees that differ between the two scales are shifted.
Unlike reharmonize_progression (works on chord symbols), shift_mode works on individual notes in a region.
Args: unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks). region_index: Region index (-1 = all regions on track). root_note: Tonic note (C, C#, D, ...). Stays the same for both scales. from_scale: Source scale name. to_scale: Target scale name. preserve_root: If True (default), never shift the tonic pitch class. If False, allow tonic to shift (rare, only for non-modal transformations).
Returns per-note shift details: which pitch classes moved, by how much, and total notes affected.
| Name | Required | Description | Default |
|---|---|---|---|
| to_scale | No | dorian | |
| root_note | No | C | |
| from_scale | No | minor | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No | ||
| preserve_root | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the surgical algorithm: only differing degrees shift by interval difference, tonic and unchanged degrees stay put. It explains preserve_root behavior and the return value. However, the first example contains a note-name error ('minor 6th (Ab)' should be F natural), which slightly undermines clarity.
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 structured with a summary, algorithm, examples, contrasts, args, and return. It is long but every section contributes; the typo is the only blemish.
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 7-parameter tool with output schema, the description covers the algorithm, examples, parameter meanings, and return format. It lacks an exhaustive list of valid scale names, but examples make it inferable. The typo in example one makes it slightly less 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 coverage is 0%, but the Args section fully explains each parameter: default meanings (-1 = all), root_note as pitch class, preserve_root semantics. This adds essential 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?
The description opens with a clear verb-object: 'Transform notes from one scale/mode to another, keeping the tonic.' It explicitly differentiates from force_scale_notes and reharmonize_progression, and the accompanying examples illustrate concrete musical transformations.
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 directly states when to use this tool over alternatives: unlike force_scale_notes (which snaps to nearest scale tone and changes contour), shift_mode preserves contour; unlike reharmonize_progression (works on chord symbols), shift_mode works on individual notes. This is explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_shuffle_notesA
Shuffle note data randomly within a region.
Random permutation of notes — unlike rotate_notes (deterministic cyclic shift), this creates non-repeating orderings. Seeded for reproducibility: same seed = same shuffle.
Modes:
"pitches": shuffle which pitch goes to which position (keeps rhythm, changes melody). Most musical — generates melodic variations from existing note set.
"rhythm": shuffle which position+duration goes to which pitch (keeps pitches, changes rhythm). Reassigns onset times among existing pitch values.
"full": shuffle pitch + position + duration + velocity together (complete randomization of all note attributes).
"within_groups": shuffle pitches within groups of group_beats beats. Notes stay in their time window but pitches get randomized within each group. Creates localized variation.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) mode: Shuffle mode — "pitches", "rhythm", "full", "within_groups" seed: PRNG seed (0 = random each call, >0 = reproducible) shuffle_amount: 0.0-1.0, fraction of notes to shuffle (0=no change, 1=full shuffle, 0.5=shuffle half) preserve_first: Keep first note unchanged (anchor point) preserve_last: Keep last note unchanged (resolution point) group_beats: Group size in beats for within_groups mode (e.g. 4 = shuffle within each bar, 2 = within half bars)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | pitches | |
| seed | No | ||
| unit_index | Yes | ||
| group_beats | No | ||
| track_index | Yes | ||
| region_index | No | ||
| preserve_last | No | ||
| preserve_first | No | ||
| shuffle_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It explains key traits: random permutation, seed-based reproducibility, and the effect of shuffle_amount on the fraction of notes shuffled. It also clarifies what each mode preserves (rhythm, pitches, timing windows), making the operation's behavior transparent beyond the raw 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 well-organized into clear sections (usage, modes, args), with the first sentence delivering the core purpose. While it is relatively long, every sentence provides value—explaining modes, parameters, or reproducibility. The front-loaded contrast with rotate_notes helps the agent quickly categorize 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?
For a 9-parameter tool with no annotations, the description covers all essential aspects: the operation, every mode, every parameter, and the deterministic seed behavior. The presence of an output schema means return values are already defined elsewhere, and the description does not need to redundantly explain them. No critical 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?
The schema has 0% description coverage for parameters, but the description's 'Args' section provides explicit meanings and defaults for all 9 parameters (e.g., 'shuffle_amount: 0.0-1.0, fraction of notes to shuffle', 'group_beats: Group size in beats for within_groups mode'). This fully compensates for the schema gap and adds semantic richness that the schema fields lack.
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: 'Shuffle note data randomly within a region.' It clearly distinguishes itself from the sibling tool rotate_notes by explaining the difference between random permutation and deterministic cyclic shift. The purpose 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 explicitly names an alternative (rotate_notes) and contrasts it, telling the agent when to prefer this tool over the sibling. It also provides detailed mode-by-mode guidance, including a recommendation for the 'pitches' mode ('Most musical'), which helps the agent decide which mode to invoke. This goes beyond merely stating what the tool does; it actively directs selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_split_note_regionA
Split a note region into two at a given beat position.
Creates a new region starting at split_beat containing all notes from that position onward. The original region's duration is trimmed to split_beat. Notes that straddle the split point are kept in the original region (they will play their full duration even if they extend past the trimmed region boundary — this matches DAW behaviour).
Use cases:
Divide a long region into sections (e.g. split at bar 8 for verse/chorus)
Cut silence off the end of a region
Create variations: split, then modify one half
Prepare for arrangement edits (move one half elsewhere)
unit_index: AU index. track_index: Note track index. region_index: Region to split (0-based). split_beat: Absolute beat position to split at (must be within region range).
Returns original and new region details.
Example:
Split region 0 at bar 8 (beat 32 in 4/4)
split_note_region(0, 0, 0, 32)
| Name | Required | Description | Default |
|---|---|---|---|
| split_beat | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden, and it excels: it explains that a new region is created, the original is trimmed, and that straddling notes are kept in the original region (with a DAW-behavior rationale). It also states that the function returns original and new region details, covering key behavioral 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?
The description is well-structured and front-loaded, starting with a clear one-sentence summary followed by behavioral details, use cases, parameter explanations, and an example. Every section earns its place and the example illustrates usage concretely without 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 has moderate complexity with four required parameters and an output schema, and the description provides comprehensive coverage: behavior, parameter constraints, edge-case handling, return value note, and an example. The output schema covers return structure, so the description needn't detail that further.
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 fully compensates by explaining each parameter: unit_index is 'AU index', track_index is 'Note track index', region_index is 'Region to split (0-based)', and split_beat is 'Absolute beat position to split at (must be within region range)'. This adds significant meaning beyond the bare parameter 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 opens with 'Split a note region into two at a given beat position,' a specific verb+resource+parameter statement that clearly defines the operation. It distinguishes this from sibling tools like delete_note_region, duplicate_note_region, and merge_note_regions by explicitly describing the split 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 'Use cases' section provides clear contextual guidance, including dividing long regions, cutting silence off the end, creating variations, and preparing for arrangement edits. It doesn't explicitly name alternatives or say when not to use it, but the listed scenarios make the appropriate usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_split_stemsA
Split an audio file into stems using SOTA open-source separation models.
Runs locally on GPU (GTX 1650 4GB, ~4.5 min for 4-min track). All models trained at 44100Hz — auto-resampling handled internally.
input_path: Absolute path to input audio file (WAV/MP3/FLAC/OGG). mode: Separation mode (default "bs6"): - "ensemble": Max quality, 4 passes (bass/drums/vocals/other). Slowest, best SDR. - "scnet": 4-stem (drums/bass/other/vocals). Best single-pass multi-stem. - "bs6": 6-stem (bass/drums/other/vocals/guitar/piano). Fast, low bleeding. - "polarformer": Vocal extraction only (vocals/instrumental). - "dereverb": Remove reverb from vocals (dry/reverb). - "drumsep": Drum separation (kick/snare/cymbals/toms). - "denoise": Noise cleanup for low-quality sources (clean/noise). output_dir: Directory for stem files (default: /tmp/stems_). import_to_daw: If True, load each stem into the DAW and return sample IDs for use with place_audio_region. Requires DAW bridge running.
Returns list of stem file paths (and sample IDs if import_to_daw=True).
Workflow: split_stems("track.wav", "bs6") → 6 stem WAVs split_stems("track.wav", "ensemble", import_to_daw=True) → 4 stems loaded into DAW
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | bs6 | |
| input_path | Yes | ||
| output_dir | No | ||
| import_to_daw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses local GPU execution with hardware specs and runtime estimate, automatic resampling to 44100Hz, mode-specific behaviors, DAW bridge requirement for import_to_daw, and return value format. This goes far beyond the schema in explaining what happens when the tool is invoked.
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 well-structured, starting with a concise purpose statement, a brief hardware note, a detailed but organized mode list, and clear workflow examples. Every sentence contributes value, and the formatting makes 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?
Given the tool's complexity (multiple modes, file I/O, optional DAW integration, performance characteristics), the description covers purpose, parameters, return values, prerequisites, and even output_dir defaults. The only omission is error handling, but that is not critical given the thorough coverage elsewhere.
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 0% description coverage, but the description fully compensates by explaining each parameter: input_path must be an absolute path, mode has seven enumerated options with semantics, output_dir has a default and pattern, and import_to_daw describes its effect and prerequisite. This adds critical meaning beyond the 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 opens with a specific verb+resource: 'Split an audio file into stems using SOTA open-source separation models.' This clearly states the tool's function and differentiates it from sibling tools like mcp_opendaw_export_stems or mcp_opendaw_separate_stems by emphasizing input is an audio file and the action is splitting into stems.
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 use case ('Split an audio file into stems') and detailed mode explanations with specific trade-offs (e.g., 'ensemble: Max quality, 4 passes... Slowest, best SDR'). It includes workflow examples but does not explicitly compare with alternatives like mcp_opendaw_export_stems, so usage context is clear but exclusion criteria are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_spread_voicingA
Spread or compact a chord voicing — open vs close harmony.
Transforms the spacing between chord tones at a specific beat position. Close voicing (all notes within one octave) sounds tight and focused. Open voicing (notes spread across multiple octaves) sounds wide and spacious — the hallmark of jazz piano, film score strings, and orchestral arrangements.
mode: "open" — move every other note up by spread_octaves octaves. This creates drop-2/drop-3 style open voicings from close chords. The lowest note stays, the next goes up an octave, the next stays, etc. Result: wider intervallic spacing, more airy sound. mode: "close" — collapse all chord tones into the lowest possible octave (within 12 semitones from the lowest note). Compresses spread voicings back to close harmony. Useful for tight block chords after open passages. mode: "drop2" — drop the second-highest note down an octave. Classic jazz piano voicing technique. Creates the quintessential "comping" sound. mode: "drop3" — drop the third-highest note down an octave. Another standard jazz voicing, slightly wider than drop2.
chord_position: Beat position where the chord starts (finds all notes at this position, groups them as a chord). spread_octaves: For "open" mode — how many octaves to spread (1-3, default 1). 1 = subtle widening, 2 = very open, 3 = extreme.
Returns original pitches, new pitches, mode used, chord size.
Example:
Open up a close triad for jazz piano sound
spread_voicing(0, 2, 0, 4.0, mode="open")
Classic drop-2 jazz voicing
spread_voicing(0, 2, 0, 4.0, mode="drop2")
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | open | |
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | Yes | ||
| chord_position | Yes | ||
| spread_octaves | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the algorithmic behavior for each mode: 'move every other note up by spread_octaves octaves' for open, 'collapse all chord tones into the lowest possible octave' for close, etc. It also discloses the return values. However, it does not explicitly state whether the tool modifies the region in place or if any permissions are required, which is a minor 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 well-structured with clear sections: an overview, mode-by-mode explanations, parameter details, return values, and a usage example. It is longer than necessary but every sentence contributes useful information. The organization aids readability and quick scanning.
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 an output schema, so return values need not be explained, yet they are listed for clarity. The description covers the core transformation logic, parameter semantics for most parameters, and includes practical examples. It falls short on clarifying side effects (e.g., whether the original notes are overwritten or if the operation is reversible), which is important for an editing tool. Overall, it is quite 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?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains 'mode', 'chord_position', and 'spread_octaves' with concrete examples and ranges. However, the required parameters 'unit_index', 'track_index', and 'region_index' are not described at all; the example call (spread_voicing(0, 2, 0, 4.0, ...)) provides a hint but is insufficient for full understanding. The description adds value but does not fully fill the schema 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's function: 'Spread or compact a chord voicing — open vs close harmony.' It specifies a precise verb+resource pair and differentiates itself from sibling tools by focusing on chord voicing spacing. The detailed mode explanations (open, close, drop2, drop3) further clarify its 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 provides clear context for when to use each mode, e.g., 'open' for jazz piano sounds, 'close' for tight block chords, and 'drop2' as a classic jazz comping technique. It does not explicitly name alternatives but gives enough contextual guidance for an agent to choose among modes. It lacks explicit exclusions or comparisons to other transformation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_start_engineA
Start the audio engine (AudioWorklet) after setting up tracks and regions.
Call this AFTER loading audio, creating tracks, and placing regions — but BEFORE playback or effects. The engine serializes the current project state into the AudioWorklet processor, so all boxes must exist first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 adds a key behavioral insight: 'The engine serializes the current project state into the AudioWorklet processor, so all boxes must exist first.' This explains why order matters and warns about prerequisites, though it doesn't cover idempotency or 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?
The description is two short paragraphs, front-loaded with the main action and key constraints. Every sentence adds value: the first states what it does, the second explains when and why. No fluff 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 tool, the description adequately covers the essential context: sequencing, prerequisites, and the serialization behavior. An output schema exists, so return-value explanation is not needed. Minor gaps like error handling or repeated calls are not critical given the simplicity.
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 nothing to document. The description correctly avoids adding parameter details, and the baseline for 0-param tools 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 'Start the audio engine (AudioWorklet)' with a specific verb and resource. It distinguishes itself from sibling engine tools like engine_panic, engine_sleep, and engine_wake by focusing on the initial startup action.
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 sequencing: 'Call this AFTER loading audio, creating tracks, and placing regions — but BEFORE playback or effects.' This clearly tells the agent when to invoke the tool, though it doesn't explicitly name alternatives or when not to use it beyond the implied ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_strum_notesA
Strum simultaneous notes — convert block chords into guitar-style strums.
Finds groups of notes that start at the same position (within a small tolerance) and offsets them in time to simulate a pick or strum crossing the strings. This transforms static chord pads into lifelike guitar parts.
direction: Strum direction:
"down" — low to high (bass strings first, treble last). Default for downstrokes. Most natural for guitar.
"up" — high to low (treble first, bass last). Upstroke feel.
"random" — random order per chord. Banjo/ukulele feel.
speed: Time between consecutive strings in beats. 0.03125 = 1/32 note (fast shred), 0.0625 = 1/16 (standard strum), 0.125 = 1/8 (slow arpeggiated strum), 0.25 = 1/4 (very slow, harp-like). Range 0.005 to 0.5.
jitter: Random timing variation per string (0.0 = exact, 0.02 = ±2% of speed as humanization). Adds realism. Range 0.0-0.1.
Notes are sorted by pitch within each chord group, then offset by speed × index from the original start position. The first note stays at the original position; subsequent notes are delayed.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track).
Returns per-track chord groups found, notes strummed.
Example:
Standard downstroke — 1/16 between strings
strum_notes(unit_index=0, track_index=2, direction="down", speed=0.0625)
Slow harp-like arpeggiation
strum_notes(unit_index=0, track_index=2, direction="down", speed=0.25)
Upstroke with humanization
strum_notes(unit_index=0, track_index=2, direction="up", speed=0.0625, jitter=0.03)
| Name | Required | Description | Default |
|---|---|---|---|
| speed | No | ||
| jitter | No | ||
| direction | No | down | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses the algorithm in detail: notes are grouped by simultaneous start, sorted by pitch, then offset by speed × index. It explains the effect on the first note, parameter ranges, and even mentions the return value. This goes well beyond a basic 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 efficient and well-structured: purpose, method, parameter details, return value, and examples. No fluff; the technical details are necessary for correct use.
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 complex MIDI transformation tool with 6 optional parameters and no annotations, the description covers operation, parameter semantics, return value, and usage examples. The output schema covers return structure, so the description need not do that.
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?
All six parameters are explained in the description, including direction values, speed ranges with musical equivalents, jitter range, and index semantics. Since the schema provides no descriptions (0% coverage), this fully compensates.
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 the tool's function with a specific verb and resource: 'Strum simultaneous notes — convert block chords into guitar-style strums.' The description distinguishes this from sibling tools by focusing on strumming chord voicings, not other rhythmic manipulations.
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 clear use context: it is for block chords that start simultaneously, converting them into guitar-style strums. Examples show common scenarios (downstroke, upstroke, humanization). However, it does not explicitly name alternatives or exclusions, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_subdivide_notesA
Subdivide each note in a region into N smaller notes.
Splits every note into subdivisions equal parts. Useful for
diminution (quarter → 2 eighths), rhythmic fragmentation,
and creating faster passagework from longer notes.
Args: unit_index: Audio unit index track_index: Note track index region_index: Region index (-1 = first region) subdivisions: Number of parts per note (2-16). 2=diminution, 4=sixteenth fragmentation, 3=triplet subdivision. pitch_pattern: Pitch variation per subdivision — "same" = keep original pitch, "scale_up" = ascend scale degrees within the octave, "scale_down" = descend scale degrees, "octave_up" = alternate original and octave up, "octave_down" = alternate original and octave down, "chromatic_up" = semitone steps up, "chromatic_down" = semitone steps down. velocity_pattern: Velocity variation per subdivision — "same" = keep original velocity, "decrescendo" = fade from full to half, "crescendo" = build from half to full, "accent_first" = first sub-note accented, rest softer, "accent_last" = last sub-note accented, "alternating" = strong-weak-strong-weak pattern. accent_first: If True, first subdivision note keeps full velocity (traditional articulation). Overridden by velocity_pattern. dest_track_index: Destination track (-1 = same track). Original notes are replaced in place when same track.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| track_index | Yes | ||
| accent_first | No | ||
| region_index | No | ||
| subdivisions | No | ||
| pitch_pattern | No | same | |
| dest_track_index | No | ||
| velocity_pattern | No | same |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 delivers extensively. It discloses that 'Original notes are replaced in place when same track,' explains the override behavior (accent_first overridden by velocity_pattern), and details the effects of pitch and velocity patterns. This goes far beyond a basic statement and gives the agent concrete 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?
The description is well-structured: an opening summary, a use-case paragraph, and a clear Args block. Every sentence serves a purpose, providing necessary detail without fluff. It is longer than some, but the tool's complexity (8 parameters, multiple pattern options) justifies the length. 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 the tool's complexity, no annotations, and the presence of an output schema, the description covers all necessary ground: purpose, usage context, parameter semantics, and behavioral effects (replacement, overrides). Return values are presumably handled by the output schema, so the absence of that info is not a gap. This is a fully realized 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 has no property descriptions (0% coverage), so the Args section in the description is essential. It explains every parameter with meaningful detail: examples for subdivisions (2=diminution, 4=sixteenth fragmentation), enumerates all pitch and velocity pattern options, and clarifies default behaviors like region_index=-1 meaning first region. This adds substantial value 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?
The description opens with a specific action: 'Subdivide each note in a region into N smaller notes,' clearly identifying the verb, resource, and scope. It also distinguishes this tool from siblings by emphasizing its use for diminution and rhythmic fragmentation, which differentiates it from tools like create_chop or double_melody.
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 on when to use the tool: 'Useful for diminution (quarter → 2 eighths), rhythmic fragmentation, and creating faster passagework from longer notes.' However, it does not explicitly state when not to use it or reference alternative sibling tools, so it stops short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_swap_sectionsA
Swap two sections of the arrangement — exchange their positions on the timeline.
Exchanges all note/audio content between two time ranges, moving section A to where section B was and vice versa. Useful for song structure experimentation: try chorus before verse, swap bridge with solo, reorder sections without manual cut/paste.
Both sections can be different lengths — the swap preserves each section's content and shifts everything accordingly. If sections are adjacent, it's a simple swap. If there's a gap between them, the gap content stays in place.
Args: section1_start: Start beat of first section section1_end: End beat of first section section2_start: Start beat of second section (must be > section1_end) section2_end: End beat of second section unit_indices: Comma-separated unit indices to process ("" = all units)
Returns: JSON with sections_swapped, notes_moved per unit, section sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| section1_end | Yes | ||
| section2_end | Yes | ||
| unit_indices | No | ||
| section1_start | Yes | ||
| section2_start | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does a good job: it discloses that all note/audio content is exchanged, explains behavior with unequal lengths ('preserves each section's content and shifts everything accordingly'), and covers adjacent vs. gap cases. It does not explicitly state that this is a destructive/mutating operation or mention undo, but the swap semantics are clearly described. Missing some edge-case details like interaction with automation/markers, so a 4.
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 well-structured with a clear lead sentence, a usage paragraph, behavioral details, and an Args/Returns section. It is slightly redundant—repeating the swap concept in the first and second paragraphs—but each additional part adds value (length differences, gap handling, parameter meanings). Minor redundancy keeps it from a 5.
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 (5 params, no annotations, but an output schema exists), the description covers the core behavior, parameter constraints, edge cases, and return values. It does not mention potential side effects like whether markers/automation are affected, or any prerequisites beyond section order. These are notable gaps but not fatal, so a 4.
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 properties have no descriptions (0% coverage), but the description includes an Args block that explains each parameter in plain language: 'Start beat of first section,' 'must be > section1_end,' and the default behavior of unit_indices ('' = all units). This fully compensates for the missing schema descriptions and provides essential semantic meaning for correct invocation.
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+resource: 'Swap two sections of the arrangement — exchange their positions on the timeline.' It clearly states what the tool does and distinguishes it from siblings like move_section or reorder_sections by emphasizing the two-way exchange. The restatement 'moving section A to where section B was and vice versa' reinforces the action without ambiguity.
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 this is 'useful for song structure experimentation' and gives concrete examples (chorus before verse, swap bridge with solo) and contrasts with 'manual cut/paste.' It does not name alternative tools or state when not to use it, but the context is clear enough that an agent can infer appropriate usage. Lacks explicit exclusions/alternatives, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_switch_phaseA
Switch the active tool phase for phase-based tool loading.
When OPENDAW_MCP_MODE=phase, only tools for the active phase are registered. This reduces the tool schema payload by showing only relevant tools.
Phases:
inspect: read-only — project state, list tracks/regions/effects, meters, analysis
compose: create — tracks, instruments, notes, regions, sections, arrangements, chords, melodies
mix: effects — add/configure effects, sends, buses, mixing, mastering, genre effects, automation
render: output — render, export, audio I/O, time/pitch stretch, presets
Meta-tools (evaluate_raw, get_full_project_state, switch_phase) are always available.
phase: inspect | compose | mix | render
Example: switch_phase("compose") # activate composition tools switch_phase("mix") # switch to mixing tools
| Name | Required | Description | Default |
|---|---|---|---|
| phase | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It reveals the key behavior—switching phase changes which tools are registered—and conditional behavior on OPENDAW_MCP_MODE. However, it does not clarify what happens when the mode is not 'phase', whether the phase persists across sessions, or whether the tool is reversible (e.g., can you switch back). These are minor 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?
The description is well-organized: a clear opening statement, a concise context explanation, a bulleted phase list, and illustrative examples. All content is necessary and additive; 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 tool with one parameter and no annotations, the description covers the core functionality, valid values, and usage examples. It does not address non-phase-mode behavior or whether the change is persistent, but these are edge cases. The output schema exists, so return values are not the description's responsibility.
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 for the required 'phase' parameter. The description fully compensates by listing the four valid values (inspect, compose, mix, render) and explaining what tools each includes, plus examples. This gives the agent all needed 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?
The description clearly states a specific verb and resource: 'Switch the active tool phase for phase-based tool loading.' It also explains the motivation (reducing schema payload by showing only relevant tools), which distinguishes it from all sibling tools as a meta-tool controlling tool availability.
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 context (when OPENDAW_MCP_MODE=phase) and maps each phase to its tool categories, giving clear usage context. It provides examples like switch_phase('compose') for composition tools. It does not explicitly state 'use this when you need tools from a different phase' as a directive, but the phase list makes this obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_thin_notesA
Thin out notes in a region — reduce note density for cleaner patterns.
After AI generation, transcription, or dense arrangement, MIDI can be cluttered with too many notes. This tool selectively removes notes to clean up the pattern while preserving musical intent.
Three strategies:
"interval" — keep every Nth note (sorted by position). interval=2 keeps every 2nd note, interval=3 keeps every 3rd. Creates space.
"velocity_threshold" — remove notes below a velocity threshold. Cleans up ghost notes from transcription or AI generation.
"random" — probabilistic removal. random_chance=0.3 means 30% of notes are removed at random. Creates organic variation.
preserve_strong_beats: When True, notes on strong beats (beat 1 and 3 in 4/4) are never removed, regardless of strategy. This maintains the rhythmic foundation while thinning fills and embellishments.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). strategy: "interval", "velocity_threshold", or "random". interval: For "interval" strategy — keep every Nth note (2=halve, 3=third). Must be 2-16. velocity_threshold: For "velocity_threshold" strategy — remove notes with velocity below this value (0.0-1.0, default 0.3). random_chance: For "random" strategy — probability of removing each note (0.0-1.0, default 0.3 = 30% removed). preserve_strong_beats: Keep notes on beat 1 and 3 (0 and 1920 PPQN in 4/4).
Returns per-track original count, removed count, remaining count.
Example:
Halve note density — keep every 2nd note
thin_notes(unit_index=0, track_index=0, strategy="interval", interval=2)
Remove ghost notes below velocity 0.25
thin_notes(unit_index=0, track_index=0, strategy="velocity_threshold", velocity_threshold=0.25)
Random 40% thinning for organic variation
thin_notes(unit_index=0, track_index=0, strategy="random", random_chance=0.4)
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | ||
| strategy | No | interval | |
| unit_index | No | ||
| track_index | No | ||
| region_index | No | ||
| random_chance | No | ||
| velocity_threshold | No | ||
| preserve_strong_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It clearly states that notes are selectively removed, explains the three removal strategies in detail, and mentions the return counts. It does not explicitly warn that the operation is destructive or irreversible, but the removal semantics are 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 long but perfectly structured: a clear summary, strategy breakdown, parameter list, and concrete examples. Every sentence adds value, and the use of bullet points and formatting makes it scannable. No redundant or filler content.
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 8 parameters, 3 strategies, no annotations, and no schema descriptions, the description is fully complete. It covers purpose, strategies, parameter semantics, default behaviors, strong-beat preservation, and return values. The examples further illustrate real usage. Nothing essential 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 0% coverage (no property descriptions), so the description must compensate fully — and it does. Every parameter is explained with types, defaults, value ranges, and context (e.g., 'interval: keep every Nth note (2=halve, 3=third). Must be 2-16'). Examples show parameter usage in practice.
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: 'Thin out notes in a region — reduce note density for cleaner patterns.' It clearly distinguishes this tool from other MIDI manipulation tools by focusing on density reduction, and explains the use case after AI generation, transcription, or dense arrangement. The three strategies further clarify 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 gives clear context for when to use the tool: after AI generation, transcription, or dense arrangement to clean up cluttered patterns. It also explains each strategy's intended use ('Creates space', 'Cleans up ghost notes', 'Creates organic variation'). However, it does not explicitly mention alternative tools or exclusions, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_time_warp_notesA
Warp note positions and durations by a factor — half-time / double-time / custom stretch.
Scales both the position and duration of every note in a region by warp_factor. Unlike scale_durations (which only changes note length, not position), this moves notes in time — creating true half-time (0.5×) or double-time (2.0×) feel without changing the DAW's BPM.
Half-time (0.5): notes spread out — a 1-bar pattern becomes 2 bars. Classic for trap, lofi, and creating build-ups before a drop. Double-time (2.0): notes compress — a 2-bar pattern becomes 1 bar. Useful for intensifying a section or creating fills.
unit_index: AU index (-1 = all AUs). track_index: Note track index (-1 = all note tracks on the AU). region_index: Region index (-1 = all regions on the track). warp_factor: Time scaling factor. 0.5 = half-time, 2.0 = double-time, 0.25 = quarter-time, 1.5 = 1.5× stretch. Range 0.1-8.0. origin: Anchor point for the warp — "start" (region start), or "zero" (position 0). "start" preserves relative spacing from region start. "zero" warps from absolute zero.
Returns per-track modification counts and new region extent.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | start | |
| unit_index | No | ||
| track_index | No | ||
| warp_factor | No | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 both position and duration are scaled, explains the two origin behaviors ('start' preserves relative spacing, 'zero' warps from absolute zero), notes that the DAW BPM is unchanged, and states the return value. It doesn't mention potential edge cases like overlapping notes or undo behavior, but covers the core behavioral traits thoroughly.
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 well-structured and efficient: an opening definition, a contrast with the sibling, use cases, parameter breakdown, and a return note. Each sentence contributes value without redundancy, and the most important information is front-loaded for quick scanning.
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 selection and invocation: it covers purpose, usage guidelines, all parameters, return values, and a key behavioral distinction. Even though an output schema exists, the description still briefly mentions what is returned, making it self-sufficient for the 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?
All five parameters are explained with meaningful semantics beyond the schema: index defaults (-1 meaning all), warp_factor range and examples (0.5, 2.0, etc.), and origin behaviors. This fully compensates for the 0% schema description coverage, giving the agent everything needed to set 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 tool warps note positions and durations by a factor, with specific examples (half-time, double-time) and a direct contrast to scale_durations. It specifies the verb (warp), resource (note positions and durations), and scope (every note in a region), effectively distinguishing it from 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?
Explicitly names scale_durations as an alternative and explains when to use this tool (true time warp) versus that one (only duration change). It also gives concrete musical use cases for half-time (trap, lofi, build-ups) and double-time (intensifying sections, fills), providing clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transcribe_audioA
Transcribe a full audio track — drums + melody — into MIDI notes in one call.
Composite tool that runs transcribe_drums + transcribe_melody on the same WAV file, placing drum notes on one track and melody notes on another. Eliminates 2 separate calls. Essential for Suno-to-MIDI pipeline: download_audio → transcribe_audio → full MIDI reconstruction on 2 tracks.
Pipeline:
Parse WAV file
Auto-detect BPM (if bpm=0)
Transcribe drums → kick/snare/hat on drum_track (pitch 36/38/42)
Transcribe melody → pitched notes on melody_track (with cents + clarity)
Create MIDI notes via create_notes_batch on both tracks
Use cases:
Extract full groove from a Suno track → remix in DAW
Convert a loop to MIDI → quantize, replace instruments, rearrange
Capture a performance → edit and enhance
filename: WAV file name (in exports dir) or absolute path. bpm: Tempo for beat conversion (0 = auto-detect). unit_index: AU index with note tracks. drum_track: Track for drum notes (default 0). melody_track: Track for melody notes (default 1).
Returns: drum notes, melody notes, bpm, duration, band counts, avg clarity.
Example:
Full transcription of a Suno track
result = transcribe_audio("suno_track.wav", bpm=120)
Auto-detect BPM
result = transcribe_audio("loop.wav") # bpm=0 → auto-detect
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| filename | Yes | ||
| drum_track | No | ||
| unit_index | No | ||
| melody_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 explains the pipeline (parse WAV, auto-detect BPM, transcribe drums with pitch mappings, transcribe melody, create notes via batch), and documents return values, making its behavior 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?
Well-structured with summary, pipeline, use cases, parameters, returns, and example. Every section earns its place, and the key purpose 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?
Despite being a composite tool, the description covers purpose, pipeline, parameters, return values, and examples. There is no output schema provided, so the explicit return list is valuable, and no gaps remain 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?
Schema coverage is 0%, so the description fully compensates by explaining every parameter: filename (exports dir or absolute path), bpm auto-detect, unit_index, drum_track, and melody_track defaults. It includes a concrete usage example.
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 it does: transcribes a full audio track (drums + melody) into MIDI notes in one call, and explicitly says it runs transcribe_drums + transcribe_melody, distinguishing it from those 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?
Clearly says it eliminates 2 separate calls and positions it in the Suno-to-MIDI pipeline, with concrete use cases. This gives strong guidance on when to use this composite tool versus the individual transcription tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transcribe_drumsA
Transcribe drum onsets from an audio file into MIDI notes on a DAW track.
Audio-to-MIDI drum transcription — converts a drum recording (or any audio with percussive content) into MIDI notes. Pure Python, no external deps.
Pipeline:
Parse WAV file
Split into 3 frequency bands (kick <250Hz, snare 250-2500Hz, hat >2500Hz)
Per-band onset detection (energy spike above local average)
Classify each onset: kick (pitch 36), snare (38), hat (42)
Estimate velocity from onset amplitude
Convert onset times to beat positions (if bpm provided)
Create MIDI notes on the specified track via create_notes_batch
Use cases:
Extract a drum groove from a Suno track → reuse as MIDI pattern
Transcribe a real drum recording → edit/quantize in DAW
Replace original drums with a different instrument
filename: WAV file name (in exports dir) or absolute path. bpm: Tempo for beat conversion (0 = auto-detect via detect_bpm first). sensitivity: Onset detection threshold (1.0=more sensitive, 2.0=less, default 1.5). unit_index: AU index with note tracks. track_index: Track to place transcribed notes.
Returns: notes created, onset count, band counts (kick/snare/hat), bpm, duration.
Example:
Transcribe a drum loop from a downloaded Suno track
result = transcribe_drums("suno_track.wav", bpm=120)
Auto-detect BPM first
result = transcribe_drums("drum_loop.wav") # bpm=0 → auto-detect
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| filename | Yes | ||
| unit_index | No | ||
| sensitivity | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 and does so admirably. It discloses the entire processing pipeline (frequency bands, onset detection, pitch mapping, velocity estimation), the use of create_notes_batch for note creation, and the return values. It even explains the sensitivity threshold semantics.
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 well-structured with a summary, numbered pipeline, use cases, parameter list, return values, and an example. It is long but every section adds value, and the front-loaded purpose ensures quick comprehension.
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 complex audio transcription tool with no annotations, the description covers input format, algorithm details, parameter semantics, return values, and examples. It leaves no critical gap and even provides practical usage context for integration.
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 fully. It explains every parameter in plain language: filename (path semantics), bpm (0=auto-detect), sensitivity (range and default), unit_index, and track_index. This goes far beyond the schema's type/default info.
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+resource statement: 'Transcribe drum onsets from an audio file into MIDI notes on a DAW track.' It clearly distinguishes this from siblings like transcribe_melody and transcribe_audio by focusing on drum onsets, and the pipeline and use cases reinforce the specific 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 provides concrete use cases (extract drum groove, transcribe recording, replace drums) and explicitly references detect_bpm as a prerequisite for auto-detection. It implies when to use this tool, though it lacks an explicit 'when not to use' or named alternative for non-drum audio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transcribe_melodyA
Transcribe monophonic melody from an audio file into MIDI notes on a DAW track.
Audio-to-MIDI melody transcription — converts a monophonic instrument recording (bass, vocal, lead synth, horn) into MIDI notes. Pure Python, no external deps.
Pipeline:
Parse WAV file
Frame-by-frame autocorrelation pitch detection
Convert frequency → MIDI pitch (with cents deviation for tuning accuracy)
Group consecutive similar-pitch frames into sustained notes
Estimate velocity from frame energy
Create MIDI notes on the specified track via create_notes_batch
Use cases:
Extract a bass line from a Suno track → reuse as MIDI
Transcribe a vocal melody → harmonize or transform
Capture a horn line → arrange for other instruments
Convert any monophonic audio to editable MIDI
filename: WAV file name (in exports dir) or absolute path. bpm: Tempo for beat conversion (0 = auto-detect via detect_bpm). unit_index: AU index with note tracks. track_index: Track to place transcribed notes.
Returns: notes created, note count, bpm, duration, average clarity.
Example:
Transcribe a bass line from a Suno track
result = transcribe_melody("suno_bass.wav", bpm=120)
Auto-detect BPM
result = transcribe_melody("vocal.wav") # bpm=0 → auto-detect
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| filename | Yes | ||
| unit_index | No | ||
| track_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden and largely succeeds: it details the complete 6-step pipeline (WAV parsing, pitch detection, frequency-to-MIDI conversion, note grouping, velocity estimation, and note creation), mentions BPM auto-detection, and discloses the return summary. It does not state whether existing notes on the target track are overwritten or appended, which is a notable omission 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 well-structured with sections for overview, pipeline, use cases, parameters, returns, and examples. It is somewhat long but each section serves a purpose; no filler. It could be tightened, but the structure helps the agent parse it quickly.
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 (audio processing pipeline), no annotations, and a schema with zero parameter descriptions, the description is remarkably complete. It covers the entire workflow, parameter meanings, return values, and includes usage examples. The only minor gap is the effect on existing track data, but overall it fully supports agent 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 (only titles like 'Filename'), so the description must explain each parameter. It does so thoroughly: 'filename: WAV file name (in exports dir) or absolute path', 'bpm: Tempo for beat conversion (0 = auto-detect via detect_bpm)', and clearly explains unit_index and track_index as targets. This fully compensates for the sparse 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 opening line clearly states the tool's purpose: 'Transcribe monophonic melody from an audio file into MIDI notes on a DAW track.' It specifies the resource (audio file), action (transcribe to MIDI notes), and destination (DAW track), and the use cases (bass line, vocal, horn) further distinguish it from siblings like transcribe_drums.
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 this is for monophonic melody transcription and provides concrete use cases (e.g., 'Extract a bass line from a Suno track'). It implies not for polyphonic audio or drums but does not explicitly name alternative tools or state exclusions, which 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.
mcp_opendaw_transfer_audiounitA
Transfer/copy an audio unit (instrument/effects/tracks/regions) within the project.
Uses TransferAudioUnits.transfer — deep-copy an AU with all dependencies (instrument, effects, MIDI effects, tracks, regions, notes, automation) via box-graph serialization. Much more complete than duplicate_audiounit (which uses Python orchestration). Output unit cannot be copied.
unit_index: Source AU index to copy. delete_source: If true, delete source AU after copy (move semantics). insert_index: Position in mixer order for the new AU (-1 = auto-place by type ordering).
Returns the new AU's index, type, and label, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes | ||
| insert_index | No | ||
| delete_source | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 deep-copy mechanism, dependencies, delete_source for move semantics, and the output unit limitation. It could elaborate on side effects like routing or use cases, but this is solid coverage.
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 well-structured and front-loaded with purpose, followed by implementation details, parameter explanations, and return info. Some jargon like 'box-graph serialization' is not essential, but the description 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?
The description covers purpose, behavior, parameters, and return values. It lacks explicit prerequisites (e.g., project loaded) and broader comparison to all sibling tools, but for a complex transfer operation, this 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?
Schema description coverage is 0%, so the description must explain everything. It does so effectively: unit_index, delete_source (move semantics), insert_index (position, -1 auto-place). This fully compensates for the missing 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 tool transfers/copies an audio unit with all dependencies, using a specific verb and resource. It explicitly distinguishes from duplicate_audiounit, making the 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 provides clear context (deep-copy with dependencies) and explicitly names duplicate_audiounit as an alternative, noting it is less complete. However, it does not discuss exclusions or when to use other sibling tools like transfer_region or move_audio_unit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transfer_regionA
Transfer/copy a region to another track at a specific position.
Uses TransferRegions.transfer — copies the region and all its dependencies (notes, events, audio files) to the target track. Works across different audio units. Preserved resources (AudioFileBox) are shared, not duplicated. The source region can optionally be deleted (move semantics).
src_unit_index: Source AU index. src_track_index: Source track index within AU. region_index: Region index within source track (0-based, sorted by position). dst_unit_index: Destination AU index. dst_track_index: Destination track index within AU. insert_position: Position in beats for the new region. delete_source: If true, delete the source region (move). If false, keep source (copy).
Returns the new region's type, position, and duration, or error.
| Name | Required | Description | Default |
|---|---|---|---|
| region_index | Yes | ||
| delete_source | No | ||
| dst_unit_index | Yes | ||
| src_unit_index | Yes | ||
| dst_track_index | Yes | ||
| insert_position | Yes | ||
| src_track_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 important behavioral traits: copies all dependencies (notes, events, audio files), shares preserved resources rather than duplicating them, supports delete_source for move semantics, and reports the new region's type/position/duration or error. This is valuable and goes beyond a simple mutation statement.
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 well-structured: a one-line summary, a behavior paragraph, a parameter list, and a return-value note. It is longer than strictly necessary, but each part contributes meaningful information. The formatting is logical and front-loaded, 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?
Given the tool's complexity (7 parameters, mutation semantics, cross-AU operation) and the existence of an output schema, the description is largely complete. It covers all parameters, key behavioral nuances, and return values. It could mention failure/error conditions more explicitly, but the 'or error' note is sufficient given the 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 has no property descriptions (0% schema coverage), but the description thoroughly explains all seven parameters. It adds semantics not present in the schema: region_index is 0-based and sorted by position, insert_position is in beats, and delete_source controls move vs copy. This fully compensates for the schema's lack of 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?
Description clearly states the tool transfers/copies a region to another track at a specified position, naming the operation (TransferRegions.transfer) and key capabilities such as cross-AU support and dependency copying. However, it does not explicitly differentiate from sibling tools like copy_region_to_track or move_region_to_track, leaving some ambiguity.
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 context for usage (e.g., works across different audio units, preserved resources are shared, optional source deletion), which implies when this tool is appropriate. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions, leaving the agent to infer the best choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transportA
Control transport: play, stop, or toggle.
action: "play", "stop", or "toggle"
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 simply lists action values without explaining side effects, prerequisites (e.g., whether the engine must be running), or what 'toggle' actually toggles between. This adds little beyond the action 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?
The description is extremely concise and front-loaded, with no filler or redundant statements. The two-line structure directly conveys the core functionality and parameter values.
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, the description is minimally adequate but misses key context such as whether the engine must be started, the exact behavior of 'toggle,' or the effect on current playback. Given the lack of annotations and sparse schema, this could be more explicit.
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 only declares a required string 'action' with no enum or description. The description explicitly lists the allowed values ('play', 'stop', or 'toggle'), providing essential semantic information that compensates for the 0% schema description 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 identifies the tool's purpose: 'Control transport: play, stop, or toggle.' It names the specific resource (transport) and the distinct actions, which differentiates it from sibling tools like start_engine or set_position.
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. The description does not mention related engine controls (e.g., start_engine, engine_panic) or any prerequisites, leaving the agent to infer usage from the word 'transport' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_transpose_notesA
Transpose all notes by a number of semitones.
semitones: Positive = up, negative = down (e.g. +12 = octave up, -5 = perfect fourth down). unit_index: Audio unit index (-1 = all AUs with note tracks). track_index: Specific note track (-1 = all note tracks on the AU). region_index: Specific region index (-1 = all regions on the track).
Returns count of notes transposed and notes skipped (out of MIDI range 0-127).
| Name | Required | Description | Default |
|---|---|---|---|
| semitones | Yes | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| region_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses helpful behavior: the return value (counts of transposed and skipped notes) and that notes out of MIDI range 0-127 are skipped rather than clamped. However, it omits details like whether the operation is reversible/undoable or what happens to note velocity/duration, leaving some behavioral 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?
The description is compact and well-organized: a one-line purpose, then per-parameter explanations, then return value. Every sentence adds value, and the structure makes the information easily 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?
Given the tool's complexity (4 params, no annotations), the description covers the key operational context: parameter semantics, scope defaults, and return value. It lacks discussion of edge cases like overlapping notes or undo behavior, but these are not necessary for basic usage, so 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?
Schema coverage is 0%, so the description fully compensates by explaining each parameter: semitones with sign and examples, and unit_index, track_index, region_index with -1 defaults and scoping meanings. This adds substantial meaning beyond the bare schema titles.
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 all notes') and the resource ('notes') with the specific parameter 'semitones'. It is distinct from siblings like 'diatonic_transpose_notes' by emphasizing semitones, but it does not explicitly differentiate them, so it falls just 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?
The description provides parameter semantics (e.g., -1 meanings) which imply how to scope the operation, but it gives no explicit guidance on when to use this tool versus alternatives (e.g., diatonic_transpose_notes). There is no 'use when' or exclusionary context, so no real usage direction beyond the operation itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_undoB
Undo the last editing operation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 without mentioning side effects, whether it's single-level or multi-level undo, what happens if there is nothing to undo, or any irreversible consequences.
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, short sentence that immediately states the action, with no filler or redundant context. It is concise and 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 zero-parameter tool, the description covers the core action, and the presence of an output schema means return values needn't be explained. However, it lacks details about the scope of undoable operations and error behavior, leaving some gaps for a tool in a large DAW 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, so the input schema fully covers parameter semantics. The description adds no parameter information, but with no parameters, the baseline is 4, and nothing is 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 uses a specific verb 'undo' and identifies the resource as 'the last editing operation', which clearly conveys the tool's purpose. It is distinct from siblings like mcp_opendaw_redo, though it doesn't elaborate on what counts as an 'editing 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?
The description implies use when you want to revert the most recent editing action, but provides no explicit guidance on when not to use it, such as in scenarios where the last operation wasn't an 'editing' one, or how it relates to the redo tool as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_unfreeze_audiounitA
Unfreeze a frozen audio unit — resume real-time processing.
Removes the cached audio and resumes live processing of instruments, effects, and sends for the specified audio unit.
unit_index: AU index to unfreeze.
Returns success or error.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses key behavior: removes cached audio, resumes live processing of instruments/effects/sends, and returns success or error. This provides meaningful transparency beyond what the name alone implies.
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 three sentences, front-loaded with the main action, then a concise behavioral breakdown, a parameter explanation, and return value. Every sentence adds value 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 has a simple single-parameter interface. The description covers purpose, behavioral effects, parameter semantics, and return value. Since an output schema exists, the return value explanation is a bonus. The description is complete for this 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 coverage is 0%, so the description must explain the parameter. It does so with 'unit_index: AU index to unfreeze,' which clearly describes the parameter's meaning. For a single integer parameter, this is sufficient, though it could have added context on how to obtain the index.
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 'Unfreeze a frozen audio unit — resume real-time processing,' which identifies the specific action (unfreeze) and resource (audio unit). It distinguishes from sibling tools like freeze_audiounit and get_unit_freeze_status by describing the exact opposite 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?
The description gives clear context: use this tool when you want to unfreeze an audio unit and resume live processing. It does not explicitly mention alternatives or exclusions, but the 'Unfreeze a frozen audio unit' phrasing clarifies the intended usage scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_update_automation_eventA
Update an existing automation event's value and/or interpolation.
Only updates parameters that are provided (value >= 0, non-empty interpolation, curve_slope >= 0).
unit_index: AU index. track_index: Value (automation) track index. event_index: Event index (from list_automation_events). value: New normalized value 0.0-1.0 (skip if -1). interpolation: "none", "linear", or "curve" (skip if empty string). curve_slope: Slope for curve interpolation 0.0-1.0 (skip if -1).
Returns success with updated values.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| unit_index | Yes | ||
| curve_slope | No | ||
| event_index | Yes | ||
| track_index | Yes | ||
| interpolation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 the skip conditions (value >= 0, non-empty interpolation, curve_slope >= 0) and states that it returns success with updated values. However, it does not describe error handling (e.g., invalid event index) or the effect of partial updates on unspecified values, leaving some behavioral ambiguity.
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 organized and front-loaded with the core purpose, followed by per-parameter lines and a brief return statement. Every sentence adds useful information, though the format is slightly list-heavy. Still 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?
Given the tool mutates an automation event and has no annotations, the description covers essential context: identifying indices, update ranges, skip behavior, and return value. The reference to list_automation_events helps the agent obtain the correct event_index. It lacks error-case details but is sufficient for most update 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?
Despite 0% schema description coverage, the description provides detailed, meaningful semantics for all parameters: unit_index (AU index), track_index (value/automation track), event_index (from list_automation_events), value (normalized 0.0-1.0, skip if -1), interpolation (none/linear/curve, skip if empty), and curve_slope (0.0-1.0, skip if -1). This adds significant 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 clearly states 'Update an existing automation event's value and/or interpolation,' identifying the specific action (update) and resource (automation event). It distinguishes itself from sibling tools like create_automation_event, delete_automation_event, and move_automation_event by focusing on modifying an existing event.
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 updating an existing automation event) and clarifies partial update semantics ('Only updates parameters that are provided'). It also references list_automation_events as a source for the event_index, providing useful context. There is no explicit exclusion of alternatives, but 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.
mcp_opendaw_update_warp_markerA
Update a warp marker's position and/or seconds value.
Pass -1.0 for either parameter to leave it unchanged.
unit_index: AU index. track_index: Track index within the AU. region_index: Audio region index. marker_index: Warp marker index (0-based). position_beats: New musical position in beats (-1 = unchanged). seconds: New audio time in seconds (-1 = unchanged).
Returns updated marker values.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | ||
| unit_index | Yes | ||
| track_index | Yes | ||
| marker_index | Yes | ||
| region_index | Yes | ||
| position_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 discloses the -1 leave-unchanged behavior and the return of updated marker values. However, it does not describe error conditions, side effects, what happens if both parameters are -1, or any constraints on valid marker indices.
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, beginning with the core action, followed by the sentinel rule, then a clear parameter list, and finally the return value note. Every sentence serves a purpose, and there is no redundant or filler content.
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, no output schema details, and zero schema description coverage, the description covers all parameters, the -1 sentinel behavior, and the return type. It lacks error handling details and a reference to list_warp_markers for obtaining valid indices, but it is sufficiently complete for a straightforward update operation.
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?
With 0% schema description coverage, the description fully compensates by defining all six parameters: unit_index, track_index, region_index, marker_index, position_beats, and seconds. It explains the meaning of each index and the -1 default semantics for the optional position/seconds parameters, going well beyond the bare schema titles.
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 with a specific verb and resource: 'Update a warp marker's position and/or seconds value.' This distinguishes it from sibling tools such as create/delete/list warp markers, and the parameter list reinforces the exact scope of 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?
The description uses language like 'Update a warp marker' to imply that it is for modifying existing markers, but it does not explicitly contrast this with create/delete/list alternatives or state when not to use it. The -1 sentinel guidance is helpful for usage mechanics, but no direct usage context versus siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_opendaw_validate_projectA
Check if the project is valid — detects overlapping regions on the same track.
Returns valid (bool) and details about any issues found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It discloses the return type ('valid (bool)') and that it returns issue details, and implies a non-destructive check. It does not explicitly state side effects or error behavior, but for a validation tool this is adequate.
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 that front-load the purpose and clearly state the return value. No wasted words or redundant structural 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 core behavior and return format, and the presence of an output schema fills in details about the 'details' object. It could be slightly more complete by mentioning whether validation covers any other criteria beyond overlapping regions, but it is sufficient for a simple validation 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 tool has zero parameters, so the baseline is 4. The description does not need to explain parameter details because there are none, and the schema already confirms an empty properties object.
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 ('check') and resource ('project'), and identifies the concrete validity criterion: overlapping regions on the same track. It is clear, though it does not explicitly distinguish itself from sibling tools like find_overlapping_notes or detect_problems.
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: you use it to validate a project for overlapping regions. However, it gives no explicit guidance about when to prefer this over alternatives (e.g., find_overlapping_notes, get_project_state) and does not mention scenarios where 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.
mcp_opendaw_wait_for_conditionA
Wait for a JavaScript condition to evaluate to true in the DAW context.
Polls the condition at regular intervals until it returns true or timeout is reached.
condition_js: JavaScript expression that returns a truthy value when the condition is met. timeout_ms: Maximum wait time in milliseconds (default 10000). poll_interval_ms: Polling interval in milliseconds (default 500).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_ms | No | ||
| condition_js | Yes | ||
| poll_interval_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 polling occurs at regular intervals, stops when condition returns true or timeout is reached, and provides default values for timeout and poll interval. However, it does not explain what happens on timeout (e.g., return value or exception), which would be useful.
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 primary purpose in the first sentence, followed by a brief behavioral explanation and parameter details. Every sentence adds value, and the parameter list is clear and compact.
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 nature of the tool and the presence of an output schema (which likely covers return values), the description is reasonably complete. It covers the polling behavior, timeout, and interval. However, it doesn't mention any side effects or error conditions beyond timeout, though these may be omitted due to the 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 0%, so the description fully compensates by explaining all three parameters: condition_js is a JavaScript expression returning a truthy value, timeout_ms has a default of 10000, and poll_interval_ms has a default of 500. This 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?
The description clearly states the tool's purpose: 'Wait for a JavaScript condition to evaluate to true in the DAW context.' This uses a specific verb (wait) and resource (JavaScript condition), and it is distinct from sibling tools like mcp_opendaw_transport or mcp_opendaw_get_project_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 implies when to use the tool (when you need to wait for a condition) but does not explicitly state alternatives or exclusions. It says it polls until the condition is true or timeout, so an agent can infer usage context, but there is no explicit 'when-not' guidance.
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.
515 tool updates
v1.386.0- First observed
mcp_opendaw_accent_beats - First observed
mcp_opendaw_add_anticipation - First observed
mcp_opendaw_add_automation - First observed
mcp_opendaw_add_bass_chain - First observed
mcp_opendaw_add_chord_tension - First observed
mcp_opendaw_add_drum_chain - First observed
mcp_opendaw_add_effect - First observed
mcp_opendaw_add_instrument_automation - First observed
mcp_opendaw_add_instrument_chain - First observed
mcp_opendaw_add_marker - First observed
mcp_opendaw_add_mastering_chain - First observed
mcp_opendaw_add_midi_effect - First observed
mcp_opendaw_add_modular_module - First observed
mcp_opendaw_add_neighbor_tones - First observed
mcp_opendaw_add_passing_tones - First observed
mcp_opendaw_add_signature_change - First observed
mcp_opendaw_add_suspension - First observed
mcp_opendaw_add_tempo_change - First observed
mcp_opendaw_add_vocal_chain - First observed
mcp_opendaw_analyze_dynamics - First observed
mcp_opendaw_analyze_harmonic_rhythm - First observed
mcp_opendaw_analyze_melody - First observed
mcp_opendaw_analyze_mix - First observed
mcp_opendaw_analyze_phase - First observed
mcp_opendaw_analyze_song_structure - First observed
mcp_opendaw_analyze_spectrum - First observed
mcp_opendaw_analyze_stereo - First observed
mcp_opendaw_analyze_track - First observed
mcp_opendaw_apply_articulation - First observed
mcp_opendaw_apply_contour - First observed
mcp_opendaw_apply_full_mix - First observed
mcp_opendaw_apply_genre_humanization - First observed
mcp_opendaw_apply_genre_mix - First observed
mcp_opendaw_apply_mix_preset - First observed
mcp_opendaw_apply_rhythm_pattern - First observed
mcp_opendaw_apply_sidechain - First observed
mcp_opendaw_apply_swing - First observed
mcp_opendaw_apply_velocity_curve - First observed
mcp_opendaw_apply_velocity_lfo - First observed
mcp_opendaw_apply_velocity_pattern - First observed
mcp_opendaw_augment_notes - First observed
mcp_opendaw_auto_gain - First observed
mcp_opendaw_automation_sweep - First observed
mcp_opendaw_balance_track_velocities - First observed
mcp_opendaw_batch_diagnostic - First observed
mcp_opendaw_capture_realtime - First observed
mcp_opendaw_change_base_signature - First observed
mcp_opendaw_classify_drum_pattern - First observed
mcp_opendaw_clear_region_notes - First observed
mcp_opendaw_clone_clip - First observed
mcp_opendaw_clone_effect_chain - First observed
mcp_opendaw_clone_track - First observed
mcp_opendaw_compact_tracks - First observed
mcp_opendaw_compare_to_profile - First observed
mcp_opendaw_compare_to_reference - First observed
mcp_opendaw_connect_modular_modules - First observed
mcp_opendaw_connect_sidechain - First observed
mcp_opendaw_consolidate_clip - First observed
mcp_opendaw_consolidate_note - First observed
mcp_opendaw_consolidate_region - First observed
mcp_opendaw_constrain_note_range - First observed
mcp_opendaw_convert_audio - First observed
mcp_opendaw_copy_notes_to_track - First observed
mcp_opendaw_copy_playfield_sample - First observed
mcp_opendaw_copy_region_fades - First observed
mcp_opendaw_copy_region_to_track - First observed
mcp_opendaw_create_acid_arrangement - First observed
mcp_opendaw_create_additive_rhythm - First observed
mcp_opendaw_create_afrobeat_arrangement - First observed
mcp_opendaw_create_ambient_arrangement - First observed
mcp_opendaw_create_appoggiatura - First observed
mcp_opendaw_create_arabic_percussion - First observed
mcp_opendaw_create_arpeggiated_progression - First observed
mcp_opendaw_create_arpeggio - First observed
mcp_opendaw_create_arrangement_variation - First observed
mcp_opendaw_create_audio_bus - First observed
mcp_opendaw_create_audio_clip - First observed
mcp_opendaw_create_audio_track - First observed
mcp_opendaw_create_automation_event - First observed
mcp_opendaw_create_balkan_meter - First observed
mcp_opendaw_create_bariolage - First observed
mcp_opendaw_create_bass_drop - First observed
mcp_opendaw_create_bass_from_progression - First observed
mcp_opendaw_create_bassline - First observed
mcp_opendaw_create_binary_form - First observed
mcp_opendaw_create_blues_arrangement - First observed
mcp_opendaw_create_boom_bap - First observed
mcp_opendaw_create_bordun - First observed
mcp_opendaw_create_break - First observed
mcp_opendaw_create_breakbeat - First observed
mcp_opendaw_create_buildup - First observed
mcp_opendaw_create_cadenza - First observed
mcp_opendaw_create_call_and_response - First observed
mcp_opendaw_create_call_response - First observed
mcp_opendaw_create_canon - First observed
mcp_opendaw_create_cascara - First observed
mcp_opendaw_create_chaconne - First observed
mcp_opendaw_create_chop - First observed
mcp_opendaw_create_chorale - First observed
mcp_opendaw_create_chord_pads - First observed
mcp_opendaw_create_chord_progression - First observed
mcp_opendaw_create_clave - First observed
mcp_opendaw_create_colotomic - First observed
mcp_opendaw_create_comparsa - First observed
mcp_opendaw_create_comping - First observed
mcp_opendaw_create_counter_melody_from_progression - First observed
mcp_opendaw_create_counterpoint - First observed
mcp_opendaw_create_country_arrangement - First observed
mcp_opendaw_create_crescendo - First observed
mcp_opendaw_create_cross_rhythm - First observed
mcp_opendaw_create_dembow - First observed
mcp_opendaw_create_disco_arrangement - First observed
mcp_opendaw_create_djembe_ensemble - First observed
mcp_opendaw_create_dnb_arrangement - First observed
mcp_opendaw_create_downtempo_arrangement - First observed
mcp_opendaw_create_drum_fill - First observed
mcp_opendaw_create_drum_pattern - First observed
mcp_opendaw_create_drum_solo - First observed
mcp_opendaw_create_dubstep_arrangement - First observed
mcp_opendaw_create_edm_arrangement - First observed
mcp_opendaw_create_electronic_bass - First observed
mcp_opendaw_create_euclidean_rhythm - First observed
mcp_opendaw_create_filter_sweep - First observed
mcp_opendaw_create_flamenco_compas - First observed
mcp_opendaw_create_four_on_floor - First observed
mcp_opendaw_create_fugato - First observed
mcp_opendaw_create_fugue - First observed
mcp_opendaw_create_full_genre_pipeline - First observed
mcp_opendaw_create_funk_arrangement - First observed
mcp_opendaw_create_future_bass_arrangement - First observed
mcp_opendaw_create_garage_arrangement - First observed
mcp_opendaw_create_genre_sections - First observed
mcp_opendaw_create_genre_track - First observed
mcp_opendaw_create_ghost_notes - First observed
mcp_opendaw_create_glissando - First observed
mcp_opendaw_create_gospel_arrangement - First observed
mcp_opendaw_create_ground_bass - First observed
mcp_opendaw_create_hardstyle_arrangement - First observed
mcp_opendaw_create_harmonic_arrangement - First observed
mcp_opendaw_create_harmony - First observed
mcp_opendaw_create_harmony_line - First observed
mcp_opendaw_create_hemiola - First observed
mcp_opendaw_create_hocket - First observed
mcp_opendaw_create_house_arrangement - First observed
mcp_opendaw_create_impact - First observed
mcp_opendaw_create_instrument_track - First observed
mcp_opendaw_create_irish_trad - First observed
mcp_opendaw_create_isorhythm - First observed
mcp_opendaw_create_jazz_arrangement - First observed
mcp_opendaw_create_konokol - First observed
mcp_opendaw_create_korean_percussion - First observed
mcp_opendaw_create_l_system_melody - First observed
mcp_opendaw_create_liquid_dnb_arrangement - First observed
mcp_opendaw_create_lofi_arrangement - First observed
mcp_opendaw_create_markov_melody - First observed
mcp_opendaw_create_melodic_polyrhythm - First observed
mcp_opendaw_create_melody - First observed
mcp_opendaw_create_melody_from_progression - First observed
mcp_opendaw_create_metal_arrangement - First observed
mcp_opendaw_create_metric_modulation - First observed
mcp_opendaw_create_midi_echo - First observed
mcp_opendaw_create_modulated_song - First observed
mcp_opendaw_create_montuno - First observed
mcp_opendaw_create_mordent - First observed
mcp_opendaw_create_motif_development - First observed
mcp_opendaw_create_motif_variations - First observed
mcp_opendaw_create_mute_automation - First observed
mcp_opendaw_create_neurofunk_arrangement - First observed
mcp_opendaw_create_note - First observed
mcp_opendaw_create_note_clip - First observed
mcp_opendaw_create_note_track - First observed
mcp_opendaw_create_notes_batch - First observed
mcp_opendaw_create_ostinato - First observed
mcp_opendaw_create_pan_sweep - First observed
mcp_opendaw_create_passacaglia - First observed
mcp_opendaw_create_pedal_point - First observed
mcp_opendaw_create_phase_shift - First observed
mcp_opendaw_create_phonk_arrangement - First observed
mcp_opendaw_create_pitch_stretched_clip - First observed
mcp_opendaw_create_pitch_stretched_region - First observed
mcp_opendaw_create_playfield_sample - First observed
mcp_opendaw_create_polyrhythm - First observed
mcp_opendaw_create_pop_arrangement - First observed
mcp_opendaw_create_progression_from_key - First observed
mcp_opendaw_create_psytrance_arrangement - First observed
mcp_opendaw_create_random_walk_melody - First observed
mcp_opendaw_create_ratchet - First observed
mcp_opendaw_create_reggae_arrangement - First observed
mcp_opendaw_create_reggae_percussion - First observed
mcp_opendaw_create_riff - First observed
mcp_opendaw_create_riser - First observed
mcp_opendaw_create_rnb_arrangement - First observed
mcp_opendaw_create_rock_arrangement - First observed
mcp_opendaw_create_rondo - First observed
mcp_opendaw_create_samba_pattern - First observed
mcp_opendaw_create_scale_run - First observed
mcp_opendaw_create_second_line - First observed
mcp_opendaw_create_section_transition - First observed
mcp_opendaw_create_send - First observed
mcp_opendaw_create_sequence - First observed
mcp_opendaw_create_soli - First observed
mcp_opendaw_create_solo - First observed
mcp_opendaw_create_solo_automation - First observed
mcp_opendaw_create_sonata_form - First observed
mcp_opendaw_create_song_structure - First observed
mcp_opendaw_create_song_with_variations - First observed
mcp_opendaw_create_songo_pattern - First observed
mcp_opendaw_create_soul_arrangement - First observed
mcp_opendaw_create_stab - First observed
mcp_opendaw_create_stutter - First observed
mcp_opendaw_create_synth_track - First observed
mcp_opendaw_create_synthwave_arrangement - First observed
mcp_opendaw_create_taiko_ensemble - First observed
mcp_opendaw_create_tala - First observed
mcp_opendaw_create_techno_arrangement - First observed
mcp_opendaw_create_tempo_ramp - First observed
mcp_opendaw_create_ternary_form - First observed
mcp_opendaw_create_time_stretched_clip - First observed
mcp_opendaw_create_time_stretched_region - First observed
mcp_opendaw_create_track_region - First observed
mcp_opendaw_create_trance_arrangement - First observed
mcp_opendaw_create_trap_arrangement - First observed
mcp_opendaw_create_trap_rolls - First observed
mcp_opendaw_create_trill - First observed
mcp_opendaw_create_tumbao - First observed
mcp_opendaw_create_tuplet_group - First observed
mcp_opendaw_create_turn - First observed
mcp_opendaw_create_two_hand_piano - First observed
mcp_opendaw_create_value_clip - First observed
mcp_opendaw_create_variations - First observed
mcp_opendaw_create_voice_exchange - First observed
mcp_opendaw_create_voice_led_progression - First observed
mcp_opendaw_create_volume_fade - First observed
mcp_opendaw_create_walking_bass - First observed
mcp_opendaw_create_warp_marker - First observed
mcp_opendaw_delete_audio_region - First observed
mcp_opendaw_delete_audio_unit - First observed
mcp_opendaw_delete_automation_event - First observed
mcp_opendaw_delete_clip - First observed
mcp_opendaw_delete_marker - First observed
mcp_opendaw_delete_note - First observed
mcp_opendaw_delete_note_region - First observed
mcp_opendaw_delete_region - First observed
mcp_opendaw_delete_section - First observed
mcp_opendaw_delete_signature_change - First observed
mcp_opendaw_delete_track - First observed
mcp_opendaw_delete_warp_marker - First observed
mcp_opendaw_detect_bpm - First observed
mcp_opendaw_detect_frequency_masking - First observed
mcp_opendaw_detect_key - First observed
mcp_opendaw_detect_problems - First observed
mcp_opendaw_detect_scale_from_notes - First observed
mcp_opendaw_diatonic_transpose_notes - First observed
mcp_opendaw_displace_rhythm - First observed
mcp_opendaw_double_melody - First observed
mcp_opendaw_download_audio - First observed
mcp_opendaw_duplicate_audiounit - First observed
mcp_opendaw_duplicate_automation_event - First observed
mcp_opendaw_duplicate_effect - First observed
mcp_opendaw_duplicate_note_event - First observed
mcp_opendaw_duplicate_note_region - First observed
mcp_opendaw_duplicate_notes - First observed
mcp_opendaw_duplicate_region - First observed
mcp_opendaw_duplicate_section - First observed
mcp_opendaw_engine_panic - First observed
mcp_opendaw_engine_sleep - First observed
mcp_opendaw_engine_wake - First observed
mcp_opendaw_evaluate_raw - First observed
mcp_opendaw_expand_intervals - First observed
mcp_opendaw_explode_chords - First observed
mcp_opendaw_export_dawproject - First observed
mcp_opendaw_export_dry_stem - First observed
mcp_opendaw_export_effect_chain - First observed
mcp_opendaw_export_midi - First observed
mcp_opendaw_export_mix - First observed
mcp_opendaw_export_preset - First observed
mcp_opendaw_export_single_stem - First observed
mcp_opendaw_export_stems - First observed
mcp_opendaw_export_stems_format - First observed
mcp_opendaw_extract_motifs - First observed
mcp_opendaw_extract_rhythm - First observed
mcp_opendaw_filter_notes - First observed
mcp_opendaw_find_overlapping_notes - First observed
mcp_opendaw_flatten_note_regions - First observed
mcp_opendaw_force_scale_notes - First observed
mcp_opendaw_freeze_audiounit - First observed
mcp_opendaw_generate_melody - First observed
mcp_opendaw_get_audio_file_info - First observed
mcp_opendaw_get_automation_value - First observed
mcp_opendaw_get_bar_interval - First observed
mcp_opendaw_get_device_chain_detail - First observed
mcp_opendaw_get_effect_chain - First observed
mcp_opendaw_get_effect_state - First observed
mcp_opendaw_get_engine_status - First observed
mcp_opendaw_get_full_project_state - First observed
mcp_opendaw_get_midi_effect_chain - First observed
mcp_opendaw_get_mixer_state - First observed
mcp_opendaw_get_neuralamp_model - First observed
mcp_opendaw_get_note_range - First observed
mcp_opendaw_get_piano_mode - First observed
mcp_opendaw_get_project_duration - First observed
mcp_opendaw_get_project_info - First observed
mcp_opendaw_get_project_metadata - First observed
mcp_opendaw_get_project_state - First observed
mcp_opendaw_get_region_info - First observed
mcp_opendaw_get_region_play_mode - First observed
mcp_opendaw_get_sample_info - First observed
mcp_opendaw_get_script_device_code - First observed
mcp_opendaw_get_signature_events - First observed
mcp_opendaw_get_studio_settings - First observed
mcp_opendaw_get_tempo_at - First observed
mcp_opendaw_get_track_info - First observed
mcp_opendaw_get_unit_freeze_status - First observed
mcp_opendaw_groove_transfer - First observed
mcp_opendaw_humanize_notes - First observed
mcp_opendaw_humanize_pitch - First observed
mcp_opendaw_identify_chords - First observed
mcp_opendaw_import_audio_to_tracks - First observed
mcp_opendaw_import_dawproject - First observed
mcp_opendaw_import_midi - First observed
mcp_opendaw_import_preset - First observed
mcp_opendaw_insert_rests - First observed
mcp_opendaw_invert_chord_notes - First observed
mcp_opendaw_invert_notes - First observed
mcp_opendaw_list_audio_buses - First observed
mcp_opendaw_list_audio_regions - First observed
mcp_opendaw_list_automatable_fields - First observed
mcp_opendaw_list_automation_events - First observed
mcp_opendaw_list_automation_events_detail - First observed
mcp_opendaw_list_clips - First observed
mcp_opendaw_list_effect_parameters - First observed
mcp_opendaw_list_effects - First observed
mcp_opendaw_list_genre_profiles - First observed
mcp_opendaw_list_instrument_params - First observed
mcp_opendaw_list_markers - First observed
mcp_opendaw_list_midi_effect_params - First observed
mcp_opendaw_list_midi_effects - First observed
mcp_opendaw_list_midi_output_devices - First observed
mcp_opendaw_list_modular_connections - First observed
mcp_opendaw_list_modular_devices - First observed
mcp_opendaw_list_modular_modules - First observed
mcp_opendaw_list_note_regions - First observed
mcp_opendaw_list_notes - First observed
mcp_opendaw_list_playfield_samples - First observed
mcp_opendaw_list_samples - First observed
mcp_opendaw_list_script_params - First observed
mcp_opendaw_list_script_samples - First observed
mcp_opendaw_list_sends - First observed
mcp_opendaw_list_signature_changes - First observed
mcp_opendaw_list_split_modes - First observed
mcp_opendaw_list_tempo_changes - First observed
mcp_opendaw_list_tracks - First observed
mcp_opendaw_list_transient_markers - First observed
mcp_opendaw_list_value_regions - First observed
mcp_opendaw_list_vaporisateur_params - First observed
mcp_opendaw_list_warp_markers - First observed
mcp_opendaw_load_audio - First observed
mcp_opendaw_load_effect_preset - First observed
mcp_opendaw_load_project - First observed
mcp_opendaw_map_velocity_by_pitch - First observed
mcp_opendaw_match_to_reference - First observed
mcp_opendaw_measure_lufs - First observed
mcp_opendaw_merge_consecutive_notes - First observed
mcp_opendaw_merge_note_regions - First observed
mcp_opendaw_merge_note_tracks - First observed
mcp_opendaw_modulate_progression - First observed
mcp_opendaw_move_audio_unit - First observed
mcp_opendaw_move_automation_event - First observed
mcp_opendaw_move_effect - First observed
mcp_opendaw_move_notes - First observed
mcp_opendaw_move_region_content - First observed
mcp_opendaw_move_region_to_track - First observed
mcp_opendaw_move_section - First observed
mcp_opendaw_move_signature_event - First observed
mcp_opendaw_move_track - First observed
mcp_opendaw_note_stats - First observed
mcp_opendaw_place_audio_region - First observed
mcp_opendaw_ppqn_to_parts - First observed
mcp_opendaw_ppqn_to_seconds - First observed
mcp_opendaw_quantize_notes - First observed
mcp_opendaw_quantize_velocities - First observed
mcp_opendaw_query_loading_complete - First observed
mcp_opendaw_randomize_note_chance - First observed
mcp_opendaw_randomize_note_durations - First observed
mcp_opendaw_redo - First observed
mcp_opendaw_reharmonize_progression - First observed
mcp_opendaw_remix_track - First observed
mcp_opendaw_remove_audio_bus - First observed
mcp_opendaw_remove_effect - First observed
mcp_opendaw_remove_midi_effect - First observed
mcp_opendaw_remove_modular_module - First observed
mcp_opendaw_remove_send - First observed
mcp_opendaw_rename_unit - First observed
mcp_opendaw_render_and_analyze - First observed
mcp_opendaw_render_full - First observed
mcp_opendaw_render_full_format - First observed
mcp_opendaw_render_full_song - First observed
mcp_opendaw_render_range - First observed
mcp_opendaw_reorder_sections - First observed
mcp_opendaw_repeat_notes - First observed
mcp_opendaw_repeat_phrase - First observed
mcp_opendaw_replace_from_preset - First observed
mcp_opendaw_replace_instrument - First observed
mcp_opendaw_reset_playfield_params - First observed
mcp_opendaw_reset_project - First observed
mcp_opendaw_reverse_notes - First observed
mcp_opendaw_rotate_notes - First observed
mcp_opendaw_save_effect_preset - First observed
mcp_opendaw_save_project - First observed
mcp_opendaw_scale_durations - First observed
mcp_opendaw_scale_velocity - First observed
mcp_opendaw_schedule_clip_play - First observed
mcp_opendaw_schedule_clip_stop - First observed
mcp_opendaw_screenshot_daw - First observed
mcp_opendaw_seconds_to_beats - First observed
mcp_opendaw_separate_stems - First observed
mcp_opendaw_serialize - First observed
mcp_opendaw_set_articulation - First observed
mcp_opendaw_set_audio_region_fade - First observed
mcp_opendaw_set_audio_region_gain - First observed
mcp_opendaw_set_audio_region_time_base - First observed
mcp_opendaw_set_audio_region_waveform_offset - First observed
mcp_opendaw_set_automation_interpolation - First observed
mcp_opendaw_set_bpm - First observed
mcp_opendaw_set_bus_color - First observed
mcp_opendaw_set_bus_enabled - First observed
mcp_opendaw_set_bus_label - First observed
mcp_opendaw_set_clip_hue - First observed
mcp_opendaw_set_clip_label - First observed
mcp_opendaw_set_clip_mute - First observed
mcp_opendaw_set_clip_playback - First observed
mcp_opendaw_set_clip_properties - First observed
mcp_opendaw_set_crusher_bits - First observed
mcp_opendaw_set_crusher_crush - First observed
mcp_opendaw_set_delay_sync - First observed
mcp_opendaw_set_device_label - First observed
mcp_opendaw_set_effect_enabled - First observed
mcp_opendaw_set_effect_parameter - First observed
mcp_opendaw_set_effect_parameter_bool - First observed
mcp_opendaw_set_effect_parameter_int - First observed
mcp_opendaw_set_effect_parameter_string - First observed
mcp_opendaw_set_fold_oversampling - First observed
mcp_opendaw_set_groove_shuffle - First observed
mcp_opendaw_set_instrument_param - First observed
mcp_opendaw_set_loop_region - First observed
mcp_opendaw_set_marker_label - First observed
mcp_opendaw_set_marker_position - First observed
mcp_opendaw_set_marker_repeat - First observed
mcp_opendaw_set_metronome - First observed
mcp_opendaw_set_midi_effect_param - First observed
mcp_opendaw_set_modular_module_param - First observed
mcp_opendaw_set_neuralamp_model - First observed
mcp_opendaw_set_note_advanced - First observed
mcp_opendaw_set_note_cents - First observed
mcp_opendaw_set_note_properties - First observed
mcp_opendaw_set_piano_keyboard - First observed
mcp_opendaw_set_piano_note_labels - First observed
mcp_opendaw_set_piano_note_scale - First observed
mcp_opendaw_set_piano_time_range - First observed
mcp_opendaw_set_playfield_sample_enabled - First observed
mcp_opendaw_set_position - First observed
mcp_opendaw_set_region_color - First observed
mcp_opendaw_set_region_duration - First observed
mcp_opendaw_set_region_label - First observed
mcp_opendaw_set_region_loop - First observed
mcp_opendaw_set_region_mute - First observed
mcp_opendaw_set_region_position - First observed
mcp_opendaw_set_revamp_filter - First observed
mcp_opendaw_set_script_device_code - First observed
mcp_opendaw_set_script_param - First observed
mcp_opendaw_set_send_level - First observed
mcp_opendaw_set_send_pan - First observed
mcp_opendaw_set_send_routing - First observed
mcp_opendaw_set_stereo_tool_panning - First observed
mcp_opendaw_set_studio_setting - First observed
mcp_opendaw_set_tidal_rate - First observed
mcp_opendaw_set_time_signature - First observed
mcp_opendaw_set_time_stretch_cents - First observed
mcp_opendaw_set_track_enabled - First observed
mcp_opendaw_set_track_mute - First observed
mcp_opendaw_set_track_panning - First observed
mcp_opendaw_set_track_solo - First observed
mcp_opendaw_set_track_volume - First observed
mcp_opendaw_set_transpose - First observed
mcp_opendaw_set_tuning - First observed
mcp_opendaw_set_unit_minimized - First observed
mcp_opendaw_set_vaporisateur_osc_param - First observed
mcp_opendaw_set_vocoder_band_count - First observed
mcp_opendaw_set_vocoder_modulator_source - First observed
mcp_opendaw_set_waveshaper_equation - First observed
mcp_opendaw_shift_mode - First observed
mcp_opendaw_shuffle_notes - First observed
mcp_opendaw_split_note_region - First observed
mcp_opendaw_split_stems - First observed
mcp_opendaw_spread_voicing - First observed
mcp_opendaw_start_engine - First observed
mcp_opendaw_strum_notes - First observed
mcp_opendaw_subdivide_notes - First observed
mcp_opendaw_swap_sections - First observed
mcp_opendaw_switch_phase - First observed
mcp_opendaw_thin_notes - First observed
mcp_opendaw_time_warp_notes - First observed
mcp_opendaw_transcribe_audio - First observed
mcp_opendaw_transcribe_drums - First observed
mcp_opendaw_transcribe_melody - First observed
mcp_opendaw_transfer_audiounit - First observed
mcp_opendaw_transfer_region - First observed
mcp_opendaw_transport - First observed
mcp_opendaw_transpose_notes - First observed
mcp_opendaw_undo - First observed
mcp_opendaw_unfreeze_audiounit - First observed
mcp_opendaw_update_automation_event - First observed
mcp_opendaw_update_warp_marker - First observed
mcp_opendaw_validate_project - First observed
mcp_opendaw_wait_for_condition
TDQS
Scored across 515 tools
Many tools have overlapping purposes: the chord-progression family (create_chord_progression, create_chord_pads, create_voice_led_progression, create_arpeggiated_progression, create_harmonic_arrangement), the song-builder family (create_genre_sections, create_song_with_variations, create_full_genre_pipeline, create_modulated_song, create_arrangement_variation), and the analysis family (analyze_track, analyze_spectrum, analyze_stereo, analyze_dynamics, analyze_mix, analyze_phase, detect_problems) all blur together. Composite tools that duplicate smaller tools (transcribe_audio vs transcribe_drums+transcribe_melody; analyze_track vs detect_bpm+detect_key+measure_lufs) compound the ambiguity. Individual descriptions are detailed, but an agent cannot reliably distinguish which of dozens of near-synonym tools to select.
The vast majority of the 515 tools follow a clean snake_case verb_noun pattern with the mcp_opendaw_ prefix (create_drum_pattern, set_track_volume, list_automation_events). Minor deviations exist: engine_panic/engine_sleep/engine_wake use noun_verb while start_engine uses verb_noun, and duplicate_audiounit/transfer_audiounit spell it as one word while delete_audio_unit uses the underscore. The pattern is predictable enough to navigate, but these inconsistencies stand out at this scale.
515 tools is an extreme mismatch for any MCP server, far beyond even the 50+ threshold described as extreme. The count is inflated by near-duplicate families (30+ genre arrangement tools, 20+ percussion pattern tools, 15+ analysis tools) and multiple composite tools that repackage existing ones. This size will flood an agent's context window and create selection overhead that outweighs the benefit of any individual tool.
The surface covers the full DAW lifecycle comprehensively: project management, transport, track/unit CRUD, note and region editing, effects and sends, automation, MIDI/audio I/O, rendering in multiple formats, audio analysis, transcription, stem separation, and even music-theory composition (fugues, chaconnes, polyrhythms, world percussion). No major dead ends exist - every operation an agent would need for a produce-from-scratch-to-mastered workflow is present, often with redundant multiple approaches.
Maintenance
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables AI agents to create fully mixed and mastered tracks in REAPER DAW, supporting project management, MIDI composition, audio recording, and mixing automation.5892 PyPI130MIT
- AlicenseCqualityAmaintenanceA comprehensive MCP server that enables AI assistants to control REAPER DAW for mixing, mastering, MIDI composition, and full music production workflows with 130 tools.17654MIT
- FlicenseBqualityDmaintenanceMCP server for controlling Ableton Live, enabling AI assistants to interact with Live sessions through tools for track/clip/scene management, playback control, and device parameter adjustments.48-
- AlicenseBqualityBmaintenanceThis MCP server enables AI assistants to control a live REAPER DAW instance, including transport, tracks, FX, MIDI, media, markers, rendering, and project state, with an escape hatch for arbitrary ReaScript commands.40MIT