reaper-mcp
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., "@reaper-mcpadd a mastering chain to the master track"
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.
TwelveTake REAPER MCP
A TwelveTake Studios project.
Setup guide, examples and FAQ -> twelvetake.com/tools/reaper-mcp
Listed in the MCP Registry as mcp-name: com.twelvetake/reaper-mcp.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control REAPER DAW for mixing, mastering, MIDI composition, and full music production workflows.
Version: 1.8.0
Why This Server
Workflow Automation, Not Just API Wrappers
Most MCP servers just wrap REAPER's API and call it a day. This one includes production workflow helpers that handle multi-step operations in a single call:
Tool | What it does for you |
| Creates send, routes to channels 3-4, configures ReaComp's detector input — complete sidechain setup in one call |
| Adds ReaEQ → ReaComp → ReaEQ → ReaLimit to master track with proper signal flow |
| Creates a bus track, sets up the send, adds compressor — NY-style compression ready to blend |
| Creates a submix track and routes your specified tracks to it |
| Returns track count, all track names/volumes/pans/FX, markers, regions, tempo, time signature — everything your AI needs in one call |
Zero Configuration
File-based communication works immediately — no network setup, no ports to configure
Stock REAPER only: the bridge is a plain Lua script and the analyzer is a JSFX plugin, so you don't install anything else in REAPER
Copy the script, run it, connect your AI assistant
179 Tools Covering Real Production Needs
Full FX control — add/remove plugins, get/set any parameter by index, manage presets, bypass
FX parameter automation — automate any plugin knob (flanger depth, filter cutoff, etc.)
Complete routing — sends, receives, sidechain routing to specific channel pairs
Automation — create envelopes, add/edit points, set automation modes
MIDI — create items, add notes individually or in batches, edit velocities
MIDI editing — transpose, quantize with swing, humanize, snap to a scale, stretch, legato, strum, velocity ramps — each targetable by pitch range, beat window, or channel
Audio items — import, split, duplicate, fade, position, mute
Markers & regions — create, edit, navigate, render by region
Measurement: loudness, loudness range, true peak, the octave-band spectrum and stereo correlation for the master, a track or an item. It passes the EBU's synthetic compliance signals for loudness, true peak and loudness range.
Undoable edits: every change the AI makes is one named step in REAPER's undo history ("MCP: delete track"), so Ctrl+Z in REAPER reverses one tool call at a time
Related MCP server: ReaperMCP
Requirements
REAPER (any recent version; full live suite green through REAPER 7.79)
Python 3.10+ (for the MCP server)
An MCP-compatible AI assistant
Installation
1. Install the Bridge Script in REAPER
The bridge is a Lua script that runs inside REAPER. The MCP server works on your project through it. Install it one of three ways.
Option A: one command, then run it once in REAPER
uvx twelvetake-reaper-mcp --install-bridgeThat copies reaper_mcp_bridge.lua into REAPER's Scripts folder for your platform, and the
TwelveTake MCP Analyzer, a JSFX plugin that the measurement tools use, into Effects/TwelveTake.
If a different copy of the bridge is already there, it backs that copy up first. It writes nothing
else, and the server never touches your REAPER installation on its own. Pass a path if REAPER is portable or installed
somewhere unusual: --install-bridge "/path/to/REAPER/Scripts".
Then load it in REAPER. Open Actions → Show action list:

Click New action → Load ReaScript:

Select reaper_mcp_bridge.lua in the Scripts folder and click Open:

The script is now in the action list. Select it and click Run:

REAPER's console confirms the bridge is running:

Next time, find it by typing mcp bridge in the action list's filter box, or have REAPER
start it for you (below).
Option B: ReaPack
If you use ReaPack, open Extensions → ReaPack → Import repositories:

and paste this address:
https://github.com/TwelveTake-Studios/reaper-mcp/raw/main/index.xml
Then open Extensions → ReaPack → Browse packages, find TwelveTake REAPER MCP bridge, right-click it, choose Install, and click OK:

ReaPack adds the script to the action list and installs the analyzer. Run the script from there as in option A.
Option C: by hand
Copy
reaper_mcp_bridge.luato your REAPER Scripts folder:Windows:
%APPDATA%\REAPER\Scripts\macOS:
~/Library/Application Support/REAPER/Scripts/Linux:
~/.config/REAPER/Scripts/
Copy
twelvetake_mcp_analyzer.jsfxtoEffects/TwelveTake/, next to that Scripts folder. The measurement tools need it; nothing else does.Load and run the script as in option A.
Start the bridge with REAPER
A script stops when REAPER closes. To have REAPER start the bridge every time it launches:
uvx twelvetake-reaper-mcp --install-bridge --autostartThat adds a marked block to __startup.lua in REAPER's Scripts folder, backing the file up
first, and leaves anything else in it alone. --remove-autostart takes the block out again.
If you installed with ReaPack, run uvx twelvetake-reaper-mcp --autostart instead; it points
REAPER at the ReaPack copy.
Updating
From 1.7.8 on, an update needs no step inside REAPER:
uvx twelvetake-reaper-mcp@latest --install-bridgeThe running bridge loads the new script by itself, and the command tells you so, for example:
The running bridge reloaded itself: 1.7.8 -> 1.7.9.With ReaPack, Extensions → ReaPack → Synchronize packages fetches the new script. It runs
the next time the bridge starts, or right away with uvx twelvetake-reaper-mcp --reload-bridge. The server also asks a running bridge to reload
when the bridge is too old for it.
Updating from 1.7.7 or older needs one last manual step: run the script in REAPER again after installing it.
2. Install and Configure the MCP Server
The server is published on PyPI as twelvetake-reaper-mcp. The simplest path is to let your
MCP client launch it with uvx (or pipx) — nothing to install by hand.
Add it to your MCP client's configuration (e.g. .mcp.json, or your client's MCP settings):
{
"mcpServers": {
"reaper": {
"command": "uvx",
"args": ["twelvetake-reaper-mcp"]
}
}
}VS Code uses a top-level
serverskey with"type": "stdio"instead ofmcpServers.
To confirm the server starts on its own:
uvx twelvetake-reaper-mcp
# or: pipx run twelvetake-reaper-mcpIt waits quietly for a client to connect — press Ctrl+C to stop.
3. Verify
With REAPER open and the bridge running, ask your assistant "how many tracks are in my project?" — a number back means the server, bridge, and REAPER are all talking.
Run from source (for development)
To work on the server itself, run it from a clone instead of from PyPI. Install the dependencies:
pip install -r requirements.txt # or: pip install mcpPoint your MCP client at the local script:
{
"mcpServers": {
"reaper": {
"command": "python",
"args": ["path/to/reaper_mcp_server.py"]
}
}
}Then check the connection with:
python test_connection.pyNix flake (optional)
If you use Nix, the repo ships a flake-based dev shell that provides Python 3.12 and creates/activates a virtualenv for you:
# Enter the dev shell manually
nix develop
# Or, with direnv, auto-activate on cd:
direnv allowThen install the dependencies as usual:
pip install -r requirements.txtThis pins the Python version and keeps dependencies isolated from your system.
Note: the
x86_64-linuxdev shell is tested and working. The macOS (Darwin) shells are provided but have not been tested — confirmation from a macOS user is welcome.
How It Communicates
The server and the bridge exchange JSON files in a mailbox directory that the bridge script polls from inside REAPER. There is no network configuration and no port to open.
MCP Server REAPER Bridge
│ │
├── writes request_N.json ────►│
│ ├── processes request
│◄── reads response_N.json ────┤Bridge directory: REAPER's own Scripts/mcp_bridge_data, resolved per platform:
Platform | Path |
Windows |
|
macOS |
|
Linux |
|
Override with REAPER_BRIDGE_DIR for portable installs. The server prints the directory it
resolved to stderr on startup, and includes it in any timeout error.
The HTTP transport that shipped alongside this was removed in v1.7.2. It had been deprecated
since v1.2.1, and its request parser could never read a POST body, so no call it was handed
ever reached REAPER. REAPER_COMM_MODE no longer does anything.
Quick Start Examples
Basic Track Operations
"How many tracks are in my project?"
"Create a new track called 'Vocals'"
"Set track 0 volume to -6dB"
"Mute track 2"
"Solo the drums track"Mixing
"Add ReaComp to the bass track"
"Set up sidechain compression from the kick to the bass"
"Create a drum bus and route tracks 0-3 to it"
"Add a mastering chain to the master track"FX and Parameters
"What plugins are on track 0?"
"Get the parameters for the compressor on track 1"
"Set the threshold to -20dB"
"Bypass the EQ on the vocal track"MIDI Composition
"Create a 4-bar MIDI item on track 0"
"Add a C major chord at the start"
"Get all the notes in the MIDI item"
"Set the velocity of note 0 to 100"Transport and Navigation
"Play the project"
"Stop playback"
"Set the cursor to 30 seconds"
"Add a marker called 'Chorus' at the current position"Project Management
"What's the project tempo?"
"Set the tempo to 120 BPM"
"Save the project"
"Render to D:/Output/mix.wav"Tool Reference
Track Operations (23 tools)
Tool | Description |
| Get total number of tracks (excluding master) |
| Get track info (name, volume, pan, mute, solo) |
| Get info for all tracks |
| Get master track info |
| Create a new track |
| Delete a track |
| Rename a track |
| Set volume in dB |
| Set pan (-1 to 1) |
| Mute/unmute track |
| Solo/unsolo track |
| Invert phase |
| Set stereo width (0-2) |
| Set track color |
| Get current peak level (dB) |
| Get held peak since last reset (dB) |
| Reset peak hold on all tracks |
| Get master/parent send state |
| Enable/disable master send |
| Set as folder parent/child |
| Arm for recording |
| Set record input |
| Set monitor mode |
FX Operations (16 tools)
Tool | Description |
| Count FX on track |
| List all FX with details |
| Add FX plugin (optionally at position) |
| Reorder FX in the chain |
| Remove FX |
| Get FX name |
| Check if enabled |
| Enable/bypass FX |
| Count parameters |
| Get parameter name |
| Get parameter value |
| Set parameter value |
| List available presets |
| Get current preset |
| Load preset |
| Save current settings as preset |
ReaEQ Operations (5 tools)
Dedicated ReaEQ band control using REAPER's EQ-specific API, which handles ReaEQ's non-linear parameter curves (dB gain, log frequency, log Q) correctly.
Tool | Description |
| Find ReaEQ on a track (optionally add it) |
| Read all ReaEQ bands with human-readable values |
| Set a band parameter (Hz, dB, or Q) |
| Check whether a band is enabled |
| Enable/disable a band |
Take FX Operations (11 tools)
Per-take (per-item) FX, mirroring the track FX tools. Every take is addressed by
(track_index, item_index, take_index).
Tool | Description |
| Count FX on a take |
| List all take FX with details |
| Add FX plugin to a take |
| Remove FX from a take |
| Get take FX name |
| Check if enabled |
| Enable/bypass take FX |
| Count parameters |
| Get parameter name |
| Get parameter value |
| Set parameter value |
Take Management & Comping (7 tools)
Multi-take workflows: list/switch/delete takes, explode/crop, REAPER 7 fixed-lane comping.
Tool | Description |
| List all takes (name + active flag) |
| Get the active take index |
| Switch which take plays |
| Explode takes to overlapping items (in place) |
| Keep only the active take |
| Delete a specific take |
| Play one fixed lane exclusively (lane comping) |
Routing (9 tools)
Tool | Description |
| Create send between tracks |
| Remove a send |
| Set send level |
| Count sends from track |
| Route to specific channels |
| Set source channels |
| Create sidechain send |
| Configure ReaComp sidechain |
| Complete sidechain setup |
Transport (10 tools)
Tool | Description |
| Start playback |
| Stop playback |
| Pause playback |
| Start recording |
| Get current state (playing/paused/recording) |
| Get edit cursor position (seconds) |
| Move edit cursor |
| Get playback position (seconds) |
| Toggle loop mode |
| Check if looping |
Project (15 tools)
Tool | Description |
| Get comprehensive project state in one call |
| Save current project |
| Create new project (REAPER cannot name an unsaved project) |
| Open project file |
| Get project directory |
| Get project filename |
| Get project length (seconds) |
| Tempo at project start (BPM), plus every tempo marker |
| Set project tempo |
| Get time signature |
| Set time signature |
| Render to audio file |
| Render specific region |
| Zoom to time selection |
| Zoom to show entire project |
MIDI Operations (8 tools)
Tool | Description |
| Create empty MIDI item |
| Get MIDI item info |
| Add single note (beats) |
| Add multiple notes |
| Get all notes |
| Delete a note |
| Delete all notes |
| Change note velocity |
MIDI Utilities (14 tools)
Editing tools for notes that already exist. Every one takes the same optional filter — a pitch range, an onset window in beats from the item start, and a channel — so you can target a phrase without selecting anything by hand. Timing is in beats, pitch in semitones. Each is one undo step.
Tool | Description |
| Shift pitch; notes pushed outside 0-127 are left alone, never wrapped |
| Snap off-key notes onto a scale (named or a custom interval list) |
| Snap onsets to the project grid, with strength and swing |
| Shift notes in time; lengths preserved |
| Scale timing about a pivot (half-time / double-time) |
| Close the gaps in a line, or set every note to one length |
| Seeded, reproducible timing + velocity jitter |
| Roll a chord out into a strum |
| Linear velocity ramp across a phrase (crescendo) |
| Multiply / set / compress velocities |
| Edit one note's pitch, velocity, timing, channel |
| Read the notes selected in REAPER's editor |
| Select the notes matching a pitch/beat/channel filter |
| Trim or delete overlapping same-pitch notes |
remove_overlapping_midi_notes is the only one here that can remove notes; the rest only move
what is already there. It is flagged destructive so a client can prompt first.
Audio Items (17 tools)
Tool | Description |
| Import audio file |
| List all items on track |
| Get item details |
| Move item |
| Change item length |
| Delete item |
| Duplicate item |
| Split item at position |
| Mute/unmute item |
| Set item volume |
| Set fade-in |
| Set fade-out |
| Select all items |
| Deselect all items |
| Get selected items |
| Copy to clipboard |
| Paste from clipboard |
Markers & Regions (8 tools)
Tool | Description |
| Add marker |
| Add region |
| Get all markers |
| Get all regions |
| Delete marker |
| Delete region |
| Jump to marker |
| Jump to region start |
Automation (8 tools)
Tool | Description |
| Get envelope by name |
| Count envelope points |
| Add automation point |
| Get all points |
| Delete point |
| Clear all points |
| Set automation mode |
| Arm envelope for recording |
FX Parameter Automation (5 tools)
Tool | Description |
| Get/create envelope for any FX parameter |
| Add automation point to FX parameter |
| Get all points from FX envelope |
| Delete point from FX envelope |
| Clear all points from FX envelope |
Selection & Editing (11 tools)
Tool | Description |
| Undo last action |
| Redo last undone action |
| Get undo/redo state |
| Select a track |
| Select all tracks |
| Deselect all tracks |
| Get selected track indices |
| Set time selection |
| Get time selection |
| Clear time selection |
| Delete selected items |
Measurement (2 tools)
Tool | Description |
| Integrated, short-term max and momentary max LUFS, loudness range, sample peak, true peak |
| Octave-band levels, spectral centroid, tilt, stereo correlation, side-to-mid, balance |
Both measure the master mix unless you give them a track or an item. The loudness figures come
from REAPER's own loudness measurement. True peak, the spectrum and the stereo figures come from the
TwelveTake MCP Analyzer, which --install-bridge installs and the ReaPack package includes.
Mixing Helpers (6 tools)
Tool | Description |
| Add EQ→Comp→EQ→Limiter to master |
| Set up NY compression |
| Create submix bus |
| Add ReaEQ |
| Add ReaComp |
| Add ReaLimit |
Advanced (4 tools)
Tool | Description |
| Run REAPER action by ID |
| Run action by name |
| Get raw FX state data |
| Cut items to clipboard |
Track Indexing
Regular tracks: 0-based index (first track = 0)
Master track: Use index
-1
"Set the master track volume to -3dB" → track_index = -1
"Mute track 1" → track_index = 1 (second track)Common Plugin Names
Use these names with track_fx_add_by_name():
Plugin | Name |
EQ |
|
Compressor |
|
Limiter |
|
Gate |
|
Delay |
|
Reverb |
|
Third-party plugins use their full name as shown in REAPER's FX browser.
Troubleshooting
"Cannot connect to REAPER"
Ensure REAPER is running
Ensure the bridge script is running (check REAPER's console)
Verify the bridge directory exists
"Track not found"
Track indices are 0-based
Use
-1for master trackCheck track count with
get_track_count()
Bridge script won't load
Deploy it with
twelvetake-reaper-mcp --install-bridge, then load and run it from REAPER's action list. REAPER runs the deployed copy, not the one in a clone.
Slow response
File-based mode has ~50ms latency per call
Batch operations when possible (e.g.,
add_midi_notes_batch)
Environment Variables
Variable | Default | Description |
| REAPER's | File bridge directory |
|
| Seconds to wait for the bridge to answer. The bridge answers only once the work finishes, and renders run at roughly realtime, so a render longer than this reports a timeout while REAPER completes it normally. Raise it when rendering; note that a genuinely unreachable bridge then also takes this long to report. |
| unset | Set to |
Contributing
See CONTRIBUTING.md. Read the first section before writing a patch: this repo is published from a private working repo through an explicit allowlist, so PRs are ported by hand rather than merged, and it is better to know that up front. A well-diagnosed issue is worth as much here as a patch and costs you far less.
Contributors
People outside the project whose work is in this software are listed in CONTRIBUTORS.md, including several whose diagnoses shipped before anyone here thought to look for them.
License
MIT License - see LICENSE
TwelveTake Studios LLC Website: twelvetake.com Contact: contact@twelvetake.com
Available Tools
179 toolsadd_compressorB
Add ReaComp to a track.
Returns: Object with fx_index.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the function adds an effect and returns an object with fx_index, but it does not disclose side effects beyond that. It does not mention whether existing compressors are affected, whether duplicates are allowed, or whether the track must already exist. Annotations only cover non-destructiveness, leaving behavioral details largely undisclosed.
Agents need to know what a tool does to the world before calling 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 compact, with no wasted words. The purpose statement is front-loaded and the return-value note adds useful 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 one-parameter tool, the description is mostly adequate: it states the action, target, and return shape. However, it omits important contextual details such as the meaning of track_index, whether the index is zero-based, and what happens if the track does not exist or already has a compressor.
Complex tools with many parameters or behaviors need more documentation. Simple 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 implies track_index refers to the target track, but it does not explain indexing conventions, required preconditions, or how the index maps to tracks. This is minimal compensation for an undocumented 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 specific action ('Add ReaComp') and the target resource ('a track'). It is immediately distinguishable from siblings like add_eq or add_limiter because it names the exact effect plugin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 such as track_fx_add_by_name, configure_reacomp_sidechain, or add_parallel_compression. There is no context about preferred use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_envelope_pointB
Add a point to an envelope.
Args: envelope_name: Envelope name. time: Time position in seconds. value: Envelope value (0.0-1.0 for most envelopes). shape: Point shape (0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier).
Returns: Object with point index.
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | ||
| shape | No | ||
| value | Yes | ||
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the return value (object with point index) and the value range, which adds some transparency. However, it does not disclose side effects such as whether existing points are replaced, if the envelope must be armed, or if track_index is required. Annotations only state destructiveHint=false, so the description carries most of the burden but provides limited 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 well-structured with a clear purpose line and a parameter list. It is front-loaded with the main action. However, it could be slightly improved by adding track_index and a note about envelope type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 five parameters and no output schema or parameter descriptions in the schema, the description needs to be thorough. It fails to describe track_index, does not clarify track vs. FX envelopes, and lacks any prerequisites or edge cases. This leaves the agent with incomplete information for a 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 description explains envelope_name, time, value, and shape, including units and shape mappings. It omits track_index, which is a required parameter and has no description in the schema (schema coverage is 0%). This is a significant gap, but the coverage of four parameters is still valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a point to an envelope') and lists key parameters. However, it does not specify whether this applies to track envelopes or FX envelopes, which is needed to differentiate it from the sibling tool add_fx_envelope_point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 add_fx_envelope_point or other envelope manipulation tools. The description only explains the action, leaving the agent to infer usage context from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_eqA
Add ReaEQ to a track.
Returns: Object with fx_index.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false; the description adds that this is a non-destructive insertion and that the return value is an object with fx_index. It does not discuss side effects, duplicate instances, or indexing conventions, but for a simple add operation the disclosure 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?
Two brief sentences front-load the action and the return value with no filler. Every element in the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter add-effect tool, the description covers the action and return shape clearly, and explicitly noting the returned fx_index is valuable since no output schema exists. Some conventions, such as zero-based indexing or track existence requirements, are left implicit, but complexity is low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only 'track_index: integer' with 0% description coverage, and the description does not explain the parameter beyond the phrase 'to a track.' No indexing base, range, or special values are given, so the agent must rely on conventions across sibling 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?
States a specific verb and resource ('Add ReaEQ') and a target ('to a track'), which distinguishes it from sibling effect-adders like add_compressor, add_limiter, and track_fx_add_by_name. It also names the return value, making the tool's core function 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 is given about when to use this tool versus alternatives such as track_fx_add_by_name or add_limiter. The description only states the action itself and leaves selection context and prerequisites unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fx_envelope_pointB
Add an automation point to an FX parameter envelope.
Args: time: Time position in seconds. value: Parameter value (typically 0.0-1.0, normalized). shape: Point shape (0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier).
Returns: Object with point_index and confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | ||
| shape | No | ||
| value | Yes | ||
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, so the description carries most behavioral disclosure. It clearly indicates a mutating add operation and documents shape meaning and return shape, but it does not discuss edge cases, insertion behavior, or any prerequisites like envelope arming. 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 well-structured with Args and Returns sections. It front-loads the purpose and includes only relevant parameter and return details, 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 semantics and return value, but gaps remain: three required index parameters are undefined, there is no mention of envelope arming or visibility requirements, and no output schema exists to fill in return details. It is functional but incomplete for an agent encountering the tool cold.
Complex tools with many parameters or behaviors need more documentation. Simple 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 usefully explains time, value, and shape, including shape value meanings and value normalization. However, three required parameters (track_index, fx_index, param_index) are left undocumented, relying only on their self-explanatory 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 operation: 'Add an automation point to an FX parameter envelope.' This is a specific verb-resource pairing that distinguishes it from track-envelope operations like add_envelope_point and from deletion siblings like delete_fx_envelope_point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 such as add_envelope_point, get_fx_envelope_points, or delete_fx_envelope_point. It implies the FX envelope context through the name but provides no explicit selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_limiterA
Add ReaLimit (brickwall limiter) to a track.
Returns: Object with fx_index.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide destructiveHint=false, and the description adds that the operation returns an object with fx_index, which implies a new FX insertion. It does not disclose further behavior such as whether it always appends a new instance or whether it interacts with existing limiting FX, but the mutation is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action is front-loaded, and the return information is separated cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nearly complete: it states the action, the target is implied by 'to a track', and it documents the return value despite the lack of an output schema. It omits minor context such as track indexing details, but the complexity is low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the single parameter track_index is partly clarified by the phrase 'to a track', indicating that this parameter identifies the target track. The description does not add details like zero-based indexing or the requirement that the track exists, so the 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 uses a specific verb ('Add'), a specific resource ('ReaLimit'), and clarifies that it is a brickwall limiter applied to a track. This distinguishes it from sibling add_* tools like add_compressor and add_eq, and from generic track_fx_add_by_name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: use when you want to add ReaLimit to a track. However, there is no explicit guidance about when not to use it, or when a generic tool like track_fx_add_by_name 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.
add_markerA
Add a marker at a position.
Args: position: Position in seconds. name: Marker name. color: Marker color (0 = default).
Returns: Object with marker index.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| position | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only destructiveHint=false, so the description adds useful context such as position units ('seconds'), color default ('0 = default'), and the returned marker index. However, it does not disclose side effects of adding a marker beyond the creation itself, such as index assignment, ordering, or whether existing markers can be 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 compact and well-structured with a one-line summary followed by clearly labeled Args and Returns sections. Every sentence earns its place, and there is no filler or redundant schema 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 three-parameter tool with no output schema, the description covers all parameters and the return value, which is essential. The main gap is the absence of any relationship or usage contrast with the many marker-related sibling tools, but the core operational details are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining position units ('Position in seconds'), name purpose, color meaning ('0 = default'), and the return value. This is meaningfully richer than the raw schema, though it does not clarify color value ranges or name 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 states a specific verb ('Add'), resource ('a marker'), and location ('at a position'). It is clearly distinguishable from sibling tools like delete_marker, go_to_marker, and add_region by specifying marker creation with position, name, and color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives. An agent can infer it is for creating markers, but there are no exclusions, prerequisites, or comparisons to related tools such as add_region or get_markers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mastering_chainA
Add a standard mastering chain to the master track.
Adds the following plugins in order:
ReaEQ (corrective EQ)
ReaComp (glue compression)
ReaEQ (tonal shaping)
ReaLimit (brickwall limiter)
Returns: Object with list of added FX indices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description carries the behavioral disclosure burden. It fully discloses the exact plugin list, their order, and the return value (list of added FX indices). This goes beyond the annotation and helps the agent understand the side effect and what to expect back.
Agents need to know what a tool does to the world before calling 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 opening sentence, a numbered list for the plugin chain, and a brief note on the return value. 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 tool with zero parameters and no output schema, the description is nearly complete. It states the target track, exact actions taken, and the return type. A slight gap is that it does not mention whether the tool assumes the master track already exists or how it interacts with existing FX on that track, 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 tool has zero parameters)Skip the schema already covers everything. Baseline for a no-parameter tool is 4, and the description adds no unnecessary parameter information, which 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 uses a specific verb ('Add') and a precise resource ('standard mastering chain to the master track'), then enumerates the exact plugins in order. This clearly distinguishes it from related tools like add_parallel_compression or add_limiter, which target different signal chains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 for establishing a standard mastering chain on the master track, which gives the agent strong contextual guidance. It does not explicitly state when to prefer alternative tools like add_eq or add_compressor, but the specificity of 'standard mastering chain' sufficiently implies 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.
add_midi_noteC
Add a MIDI note to an item using musical timing (beats).
Args: pitch: MIDI note number (0-127, 60 = middle C). velocity: Note velocity (1-127). start_beat: Start position in beats from the item start (0 = first beat). length_beats: Note length in beats (0.25 = sixteenth, 0.5 = eighth, 1.0 = quarter).
Example: Four-on-the-floor kick: add_midi_note(0, 0, 36, 110, start_beat=0, length_beats=0.25) then start_beat=1, 2, 3.
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | Yes | ||
| channel | No | ||
| velocity | Yes | ||
| item_index | Yes | ||
| start_beat | Yes | ||
| track_index | Yes | ||
| length_beats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, which the description does not contradict. However, the description does not disclose relevant behavior such as whether existing notes are preserved, whether a MIDI item must already exist, or whether this operation is non-destructive beyond the annotation's minimal hint. The example hints at repeated insertion but doesn't clarify underlying 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 Args list and example are relevant and helpful. However, the Args list is incomplete relative to the schema, which slightly undercuts the 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?
Given seven parameters, no output schema, and sparse annotations, the description is not complete enough for correct invocation. Missing definitions of track_index and item_index are critical, and the lack of usage guidance relative to add_midi_notes_batch leaves the agent to guess.
Complex tools with many parameters or behaviors need more documentation. 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 is responsible for explaining all parameters. It provides useful detail for pitch, velocity, start_beat, and length_beats, but completely omits the required track_index and item_index parameters, and also misses the channel parameter. The example implicitly suggests positional order but does not explain what 'item' and 'track' refer 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 first sentence states a specific action ('Add a MIDI note to an item') and a distinguishing characteristic ('using musical timing'). The singular 'a MIDI note' helps differentiate it from the batch sibling, though it doesn't name the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 like add_midi_notes_batch. It implies a single-note workflow through the example, but never states exclusion criteria or conditions for choosing the batch version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_midi_notes_batchA
Add multiple MIDI notes to an item in one call, using musical timing (beats).
Args: notes: List of note dicts with keys: pitch, velocity, start_beat, length_beats, channel (optional).
Returns: Object with count of notes added.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral detail that timing is in beats (musical timing) and that the return is an object with a count of notes added. However, it does not disclose potential side effects such as whether existing notes are overwritten or if there are validation constraints. Since annotations only provide destructiveHint=false, the description adds some but not comprehensive 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 concise, with a clear one-sentence summary followed by structured Args and Returns sections. It is front-loaded with the main purpose and includes only necessary details, 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 the essential information for calling the tool: the purpose, the structure of the notes list, and the return value. It does not explain error handling or edge cases, but these are not strictly required for a basic call. The description is sufficiently complete given the simplicity of the other parameters and the presence of only one complex parameter that is fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the notes parameter, explaining it as a list of dicts with keys pitch, velocity, start_beat, length_beats, and optional channel. This is essential because the input schema has 0% description coverage and the notes array has no item schema. The other two parameters (track_index, item_index) are self-explanatory from their names, so the description adequately 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 action (add), the resource (multiple MIDI notes to an item), and the key differentiator (batch operation in one call, using beats). It is specific and distinct from the singular add_midi_note 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 implies usage for adding multiple notes at once, but it does not explicitly state when to use this tool versus alternatives like add_midi_note, nor does it mention any prerequisites or exclusions. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_parallel_compressionA
Set up New York style parallel compression for a track.
Creates a new bus track with heavy compression, fed by a send from the source track.
Args: track_index: Source track index (0-based). blend_db: Send level in dB for the compressed signal (default -6dB).
Returns: Object with bus_track_index, send_index, and compressor_fx_index.
| Name | Required | Description | Default |
|---|---|---|---|
| blend_db | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, so the description carries most of the behavioral disclosure burden. It transparently states that a new bus track is created, a send is added from the source track, and heavy compression is applied, which is meaningful beyond the annotation. It does not mention behavior on repeated calls, but the core side effects are 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 compact and well-structured: a one-sentence purpose, a one-sentence mechanism, then clearly labeled Args and Returns. Every sentence earns its place and no redundant filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that creates multiple objects, the description covers the essential outcome and return values (bus_track_index, send_index, compressor_fx_index). It lacks details about repeated invocation behavior or edge cases like invalid track_index, but given the simple two-parameter surface and no output schema, 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%, so the description must explain the parameters, and it does. It defines track_index as 'Source track index (0-based)' and blend_db as 'Send level in dB for the compressed signal (default -6dB)', adding units, role, and default 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 and resource: 'Set up New York style parallel compression for a track.' It then clearly explains the mechanism (new bus track, heavy compression, send from source), which distinguishes it from sibling tools like add_compressor, create_bus, create_send, and setup_sidechain_compression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever the user wants New York/parallel compression on a track. However, it does not explicitly contrast with alternatives such as setup_sidechain_compression or add_compressor, nor does it 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.
add_regionA
Add a region.
Args: start: Start position in seconds. end: End position in seconds. name: Region name. color: Region color (0 = default).
Returns: Object with region index.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| name | No | ||
| color | No | ||
| start | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only destructiveHint:false in annotations, the description carries the burden for behavioral disclosure. It only states that a region is added and returns an object with a region index, without mentioning side effects, validation rules, or interaction with project state. This 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 a compact docstring with a one-line purpose, four parameter lines, and a one-line return. Every sentence 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 simple add operation the description covers the essentials, but it lacks context about project requirements, error behavior, and a clearer return structure than 'Object with region index.' With no output schema, a bit more detail 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 coverage is 0%, so the description fully compensates by defining start and end in seconds, name as a region name, and color with its default. This adds meaning beyond the raw schema types, though it omits constraints like start < end or name uniqueness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 region,' a specific verb and resource. Among siblings like delete_region, get_regions, and add_marker, this clearly identifies the tool as the creating operation for 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?
No guidance is given on when to use this tool versus alternatives such as add_marker, render_region, or go_to_region. There are no prerequisites, exclusions, or context hints beyond the obvious 'add a region'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arm_trackB
Arm or disarm a track for recording.
Args: arm: True to arm, False to disarm.
| Name | Required | Description | Default |
|---|---|---|---|
| arm | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=false already indicates the operation is not destructive. The description adds the core behavior (arming/disarming) but does not disclose side effects, such as whether the track's armed state is toggled or set, or any impact on recording. It provides minimal extra 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 extremely concise, with a clear title and an Args section that front-loads the essential parameter explanation. Every sentence serves a purpose 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 tool with two parameters and no output schema, the description is incomplete because it fails to document the required track_index parameter. It also provides no information about return values, error conditions, or the effect of the operation on recording state, leaving an agent to guess at crucial 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 description coverage is 0%, so the description must carry parameter explanations. It explains the 'arm' parameter ('True to arm, False to disarm'), but completely omits the required 'track_index' parameter, leaving its meaning and format undocumented. This is a significant gap for a 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?
The description clearly states the action: 'Arm or disarm a track for recording.' It uses a specific verb and resource, and is distinct from sibling tools like arm_track_envelope. However, it does not explicitly differentiate itself from other track-related tools, though the name and action make it 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 versus alternatives, no prerequisites, and no context about typical workflows. It simply states the operation without suggesting when it is appropriate or what conditions must be met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arm_track_envelopeC
Arm or disarm an envelope for recording.
Args: envelope_name: Envelope name. arm: True to arm, False to disarm.
| Name | Required | Description | Default |
|---|---|---|---|
| arm | No | ||
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide destructiveHint=false, so the description must carry the behavioral burden. It states the high-level arm/disarm effect but does not disclose what arming actually changes, whether an envelope must already exist, how track_index is used, or what errors or side effects may 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 appropriately short and front-loaded, with the action stated first and only a minimal Args block. The omission of track_index is an accuracy problem, but not a conciseness or structure problem; the text is economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 state-changing tool with no output schema and minimal annotations, the description should explain prerequisites and effects more fully. It fails to mention the required track_index, what a valid envelope name looks like, and what happens when the envelope or track is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to document all parameters, but it omits the required track_index entirely. It adds minor value by explaining arm ('True to arm, False to disarm'), while 'Envelope name' just restates the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a concrete action ('arm or disarm') and a precise resource ('an envelope for recording'), so an agent can tell this is about envelope recording state. It does not explicitly contrast with the similarly named sibling arm_track or with envelope automation functions, but the 'for recording' qualifier provides enough differentiation for a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as arm_track, set_track_automation_mode, or get_track_envelope. The only contextual clue is 'for recording,' which is implied rather than stated as a selection rule, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_all_peak_indicatorsAIdempotent
Clear the peak hold indicators on all tracks (including master).
Resets the held peak values that accumulate during playback. Use before a fresh playback pass when you want clean readings for gain staging.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond that by explaining that it 'Resets the held peak values that accumulate during playback,' which helps the agent understand the effect. This is valuable but not extensive; a brief mention of the lack of side effects or confirmation of no audio impact would be richer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise—two short sentences. The main action is front-loaded, and the second sentence provides necessary context without redundancy. Every word earns its place, 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?
For a no-parameter, no-output-schema tool with annotations covering safety, the description fully covers what the tool does, why, and when to use it. There is no missing behavioral or usage information that an agent would need to correctly 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?
Tool has zero parameters, so schema coverage is trivially 100%. Per the rubric, the baseline for 0 params is 4. The description doesn't need to explain any parameters, and it doesn't attempt to invent any. It correctly stays silent on inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Clear'), specific resource ('peak hold indicators'), and scope ('all tracks including master'), making it unambiguous and distinct from any sibling. The second sentence clarifies the underlying purpose, reinforcing what exactly is being reset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 guidance: 'Use before a fresh playback pass when you want clean readings for gain staging.' This tells the agent exactly when to invoke it. No alternatives or exclusions are needed because there are no competing tools for this action, but the context provided 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.
clear_envelopeCDestructive
Delete all points from an envelope.
Args: envelope_name: Envelope name.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals destructive behavior. The description only restates that all points are deleted and adds no further behavioral context, such as irreversibility, effect on automation mode, or what envelope types are valid. It does not contradict the annotation, but it also adds no 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 text is short and front-loaded, but the Args section is incomplete and misleading because it lists only envelope_name while ignoring the required track_index. Brevity is not beneficial when it omits critical parameter 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?
With two required parameters, a destructive hint, and no output schema, the description should explain how track_index and envelope_name identify the target envelope. It does neither. It also fails to clarify whether this applies to track envelopes or FX envelopes, making correct invocation uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only repeats envelope_name with the unhelpful phrase 'Envelope name.' It completely omits track_index, which is a required parameter. This provides no meaning beyond the raw schema and actively misleads by listing only one of the two 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 states a clear action and resource: 'Delete all points from an envelope.' The verb 'Delete' and resource 'envelope' are specific, though it does not explicitly distinguish track envelopes from FX envelopes. The sibling tool clear_fx_envelope suggests clear_envelope refers to track envelopes, but the description itself relies on that inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like delete_envelope_point or clear_fx_envelope. The description does not mention exclusions, prerequisites, or a preferred context. An agent must infer usage from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_fx_envelopeADestructive
Clear all automation points from an FX parameter envelope.
Returns: Object with deleted_count.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the destructiveHint annotation by specifying exactly what gets destroyed ('all automation points') and disclosing the return value ('Object with deleted_count'). This adds useful behavioral 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 extremely concise and well-structured. The first sentence states the operation and scope, and the second documents the return value. There is no filler or unnecessary duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter destructive operation, the description covers the core action and return shape. However, it omits parameter semantics and usage context, which are important given the lack of schema descriptions and the absence of an output schema. It is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate, but it does not explain track_index, fx_index, or param_index. The parameter names are somewhat self-explanatory, but the description adds no detail about indexing conventions, which envelope is targeted, or how the parameters relate to the described operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 ('Clear'), a specific resource ('all automation points from an FX parameter envelope'), and the scope of the operation. It is easily distinguished from the sibling tool 'clear_envelope' by explicitly targeting the FX parameter envelope rather than a generic envelope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 related alternatives like 'clear_envelope' or 'delete_fx_envelope_point'. There are no stated exclusions, prerequisites, or context for choosing this operation, so the agent is left to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_midi_itemBDestructive
Delete all MIDI notes from an item.
Returns: Object with count of notes deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the return value (count of deleted notes) and explicitly states the destructive action ('Delete all'), which aligns with the destructiveHint annotation. Beyond the existing annotation, it provides the return format and confirms the scope. It does not mention reversibility, selection behavior, or other side effects, but the annotation covers the core 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?
Two short sentences with zero waste. The action is front-loaded, and the return information is briefly stated. 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 destructive MIDI operation with two undocumented parameters, the description is insufficient. It lacks parameter explanations and any guidance on when to use this tool over siblings like delete_midi_note. The return count is mentioned, but the overall context for correct invocation 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?
Schema description coverage is 0%, and the description provides no explanation for track_index or item_index. It merely references 'an item' without specifying how the parameters map to the item. The burden falls on the description to clarify parameters, and it completely fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Delete') and resource ('all MIDI notes from an item') with clear scope. It distinguishes from single-note deletion (delete_midi_note) and note addition (add_midi_note) by targeting all notes in an item. The name and description align perfectly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: to remove all MIDI notes from an item. However, it does not explicitly compare with alternatives like delete_midi_note (single note) or note editing tools, nor does it state any conditions for use vs. not use. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_time_selectionA
Clear the time selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: false, indicating this is non-destructive. The description adds no further behavioral detail beyond the obvious action of clearing a UI selection, which is implied. Since the annotation covers safety, the description's minimal disclosure is acceptable but does not go 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 a single, concise sentence that communicates exactly what is needed without excess. It is front-loaded with the verb and resource, making it immediately clear 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 no parameters, no output schema, and a simple state-changing action, the description is complete. It fully specifies what the tool does, and the existence of sibling tools like set_time_selection provides necessary context. There is nothing an agent needs to call this correctly that 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?
With zero parameters, the baseline is 4 per the rubric. There are no parameters to explain, and the description correctly omits any parameter-related information, as none exist. The schema coverage is 100% (empty properties), so 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 'Clear the time selection.' uses a specific verb ('clear') directly on a well-defined resource ('time selection'), making the tool's purpose unmistakable. It clearly distinguishes from siblings like 'set_time_selection' and 'get_time_selection' by indicating a removal action rather than a set or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use or alternative routing is provided, the action itself is straightforward and self-explanatory within the context of REAPER's time selection operations. The sibling list includes set_time_selection, implying that clear is for removing an existing selection, which is contextually clear even though not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_reacomp_sidechainA
Configure ReaComp to use sidechain input for detection.
Args: track_index: Track index (0-based) where ReaComp is located. fx_index: FX index (0-based) of ReaComp in the FX chain. use_sidechain: True to use auxiliary input (channels 3-4), False for main input.
Returns: Object with configuration status.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes | ||
| use_sidechain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint: falseched. The description adds useful behavioral context by specifying that use_sidechain maps to auxiliary input channels 3-4 and that a configuration status object is returned. However, it does not disclose side effects, prerequisites, or behavior when ReaComp is not present at the given 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, front-loaded with the core purpose, and uses a clear Args/Returns structure. Every sentence contributes meaning without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple config tool with three parameters locked to a single effect type, the description is mostly adequate. However, there is no output schema, the return object is vague, and no usage context or prerequisites are provided, leaving some gaps for an agent deciding how 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 description coverage is 0%, so the description carries the full burden, and it succeeds: track_index and fx_index are defined as 0-based indices, and use_sidechain is explained with concrete channel meanings. This fully compensates for 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 and resource: 'Configure ReaComp to use sidechain input for detection.' This is clear and the parameters reinforce intent, but it does not explicitly distinguish this tool from siblings like setup_sidechain_compression or setup_sidechain_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?
No guidance is given about when to use this tool versus the sibling setup_sidechain_* tools, nor are prerequisites mentioned. The description only explains the parameters, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_selected_itemsC
Copy selected items to clipboard.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only destructiveHint=false, annotations give minimal safety information. The description doesn't disclose that the operation modifies the clipboard, potentially overwriting previous clipboard contents, or whether it affects the original items (it copies, so it shouldn't). No additional behavioral context is 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 a single, concise sentence with no fluff. It's appropriately short for a simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is minimal but lacks any note about the clipboard's effects or what 'selected items' means in this context. For a copy operation, it should clarify that it copies to clipboard (not duplicating in place) and that it requires existing selection.
Complex tools with many parameters or behaviors need more documentation. 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 0 parameters, so the schema is trivially complete. The description adds no parameter-specific information, but since none exist, a baseline of 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 'Copy selected items to clipboard' states the verb and resource but is vague about what 'items' refers to (MIDI items, audio items, tracks?). It doesn't distinguish from sibling tools like cut_selected_items or paste_items, which are similarly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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. There's no mention of prerequisites (e.g., what needs to be selected) or exclusions, leaving the agent to infer that it operates on currently selected items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_busA
Create a submix/stem bus and route specified tracks to it.
Args: name: Name for the bus track. source_track_indices: List of track indices to route to this bus.
Returns: Object with bus_track_index and routing info.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| source_track_indices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, so the description carries most of the behavioral burden. It states that the tool creates a bus and routes tracks, and mentions a return value, but does not disclose details like whether existing sends are preserved, how routing is represented, or what side effects occur on the source tracks. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with a one-sentence summary followed by Args and Returns sections. Every sentence adds useful information, and 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 tool with no output schema and minimal annotations, the description covers invocation well but leaves gaps: 'routing info' is vague, index semantics are not specified, and there is no mention of preconditions or behavioral edge cases. It is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates: 'name' is explained as the bus track name, and 'source_track_indices' is explained as the list of track indices to route. Both required parameters receive meaningful semantics beyond their raw types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Create a submix/stem bus and route specified tracks to it.' This clearly distinguishes it from routing-related siblings like create_send, because it describes the unique bus-creation 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 explains what the tool does but gives no guidance on when to choose it over alternatives such as create_send, insert_track, or add_mastering_chain. There are no explicit use conditions, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_midi_itemB
Create an empty MIDI item on a track.
Args: position: Start position in seconds. length: Length in seconds.
Returns: Object with item info including the new item_index.
| Name | Required | Description | Default |
|---|---|---|---|
| length | Yes | ||
| position | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, so the description carries some burden. It adds that the item is 'empty' and that the return value is an object with item info including the new item_index. However, it does not disclose behaviors such as whether the item is inserted at the edit cursor, whether it replaces existing items, or any selection or focus side effects. 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 compact and well-structured: a one-sentence purpose, an Args section, and a Returns section. Every line earns its place, with no redundant fluff or repetition of schema fields beyond useful unit clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 creation tool, the description covers the core action, two of three parameters, and the return shape. However, it omits track_index entirely, provides no usage context or alternatives, and does not clarify behavior like insertion position or interaction with existing MIDI items. It is minimally viable but not 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 documents position and length with units ('seconds'), which adds meaning. However, track_index is a required parameter and is completely omitted from the description, leaving the agent to infer its purpose from the phrase 'on a track'. Missing one of three required parameters is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('empty MIDI item on a track'), which clearly distinguishes it from siblings like add_midi_note or add_midi_notes_batch that add notes rather than creating an empty item container. The phrase 'empty MIDI item' is precise 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?
No guidance is given about when to use this tool versus alternatives such as add_midi_note, add_midi_notes_batch, or clear_midi_item. There are no exclusions, prerequisites, or context about typical workflows. The description only states what it does, not when it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectADestructive
Create a new REAPER project.
Note: REAPER has no API to name a project that has never been saved, so this server
has no way to name one either. The removed name parameter never took effect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a useful behavioral note about the inability to name unsaved projects, which goes beyond the destructiveHint annotation. However, it does not explain the destructive nature of creating a new project (e.g., whether it replaces the current project), leaving important side effects undisclosed.
Agents need to know what a tool does to the world before calling 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 core action in the first sentence and providing a helpful clarifying note in the second. 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 tool marked destructive, the description does not explain the side effects of creating a new project (e.g., discarding the current one). The absence of an output schema also leaves return behavior unspecified. This is a significant gap for an agent to call it 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?
With zero parameters, the schema is empty, and the description explains why there is no name parameter, adding meaningful context about the parameter's absence. This exceeds the baseline 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 verb 'create' and resource 'new REAPER project', distinguishing it from sibling tools like create_bus or create_midi_item. The note about naming adds precision 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?
No guidance is provided on when to use this tool versus alternatives. The only note about the removed name parameter is not usage guidance, and 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.
create_sendA
Create a send from one track to another.
Args: src_track: Source track index (0-based). dest_track: Destination track index (0-based).
Returns: Object with send_index.
| Name | Required | Description | Default |
|---|---|---|---|
| src_track | Yes | ||
| dest_track | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns an object with send_index, which is useful. Annotations only include destructiveHint: false, so the description carries some burden. It does not explain behavior on invalid track indices, whether existing sends are overwritten, or any other side effects. The return info adds some transparency, but it's 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 extremely concise: a single sentence stating the purpose, followed by a clean argument list and a return note. There is no fluff, and the core purpose is front-loaded. 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 tool with no output schema, the description covers the essentials: purpose, parameter meaning, and return format. It does not mention prerequisites (e.g., track existence) or contrast with sidechain sends, but given the low complexity, it is reasonably complete. The missing usage guidance is the main 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%, so the description must compensate. It explains each parameter's role ('src_track: Source track index', 'dest_track: Destination track index') and clarifies they are 0-based, adding meaning beyond the plain integer type in the schema. This is sufficient for the 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 clearly states the action: 'Create a send from one track to another.' It specifies the verb (create), the resource (send), and the relationship (from one track to another). This is distinct from sibling tools like delete_send, set_send_volume, and setup_sidechain_send, so an agent can readily identify 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. There are many send-related tools (e.g., setup_sidechain_send, delete_send), but no mention of when to prefer create_send over them. No exclusions or prerequisites are stated, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crop_to_active_takeADestructive
Crop a media item to its active take, discarding all other takes.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the destructive behavior: 'discarding all other takes.' This goes beyond the destructiveHint annotation by specifying exactly what gets destroyed (other takes) and what is preserved (the active take). It does not contradict 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?
A single sentence that is front-loaded with the action and resource, and includes the key behavioral consequence. 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 destructive operation with no output schema, the description covers the core behavior. However, it lacks context about prerequisites (e.g., what happens if the item has only one take, or if no active take is set) and does not mention whether the operation is undoable. Given the destructiveHint annotation, a bit more cautionary context would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple 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 burden. However, the parameter names (track_index, item_index) are self-explanatory and the description clarifies the operation's target ('a media item'). The description does not add detail about indexing semantics (e.g., zero-based vs one-based), but the schema itself is minimal and the names are clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Crop'), a specific resource ('a media item'), and the exact scope ('to its active take, discarding all other takes'). This clearly distinguishes it from sibling tools like delete_take, explode_takes, and set_active_take, which operate on takes differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: when you want to reduce a multi-take item to just the active take. However, it does not explicitly state when to use this tool versus alternatives like delete_take or explode_takes, nor does it mention prerequisites (e.g., the item must have multiple takes, an active take must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_selected_itemsADestructive
Cut selected items to clipboard.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the destructive nature is known. The description adds the clipboard behavior, which clarifies the tool is a move rather than a delete. However, it does not disclose that the original items are removed from their current location or that the clipboard contents are overwritten, though these are implied by 'cut'. The description adds minimal 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?
A single sentence with no filler. It states the action, target, and destination in under ten words. This is appropriately 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 no-parameter, straightforward operation, the description is sufficient. It communicates the action and the clipboard destination. It does not explicitly state that a selection is required, but this is implied by the name and is a common prerequisite for such tools. No output schema is needed for a side-effect operation, and the destructive hint covers risk.
Complex tools with many parameters or behaviors need more documentation. Simple 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% (empty). There is nothing to explain about parameters. With no parameters, a baseline of 4 is appropriate; the description does not need to provide additional parameter 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 'cut' and the resource 'selected items', with the result 'to clipboard'. It distinguishes from delete (removes without clipboard) and copy (keeps original), though it doesn't explicitly name alternatives. The purpose is unambiguous for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 on when to use this tool versus copy_selected_items or paste_items. The use case is implied by the name and description, but there is no mention of when not to use it or prerequisites like having a selection. It does not name sibling alternatives, so the agent must infer the correct context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_envelope_pointCDestructive
Delete an envelope point.
Args: envelope_name: Envelope name.
| Name | Required | Description | Default |
|---|---|---|---|
| point_index | Yes | ||
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description's 'Delete' matches that hint. However, no additional behavioral context is provided—such as irreversibility, effect on automation, or whether the envelope point is removed from the active take or item. The description adds no value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but under-specification is not conciseness. It fails to document two of three required parameters and provides no structural details. The single effective sentence does not earn its place because it omits 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?
With three required parameters, no output schema, and no parameter documentation in the schema, the description is critically incomplete. It leaves track_index and point_index unexplainedites, making it impossible for an agent to confidently construct a valid 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 by explaining the parameters. It only lists 'envelope_name: Envelope name' without describing track_index or point_index, which are both required. This is insufficient for an agent to correctly invoke the function.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Delete an envelope point.' The name and description are consistent)Skip, and the sibling delete_fx_envelope_point is distinguishable by the 'fx' qualifier. Still, it doesn't explicitly differentiate from clearing envelopes or deleting FX envelope points, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like delete_fx_envelope_point or clear_envelope. The description only states what it does, leaving the agent to infer selection criteria from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fx_envelope_pointCDestructive
Delete an automation point from an FX parameter envelope.
Args: point_index: Point index (0-based) to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| point_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description must add context beyond that. It only repeats the destructive nature implicitly and provides no additional behavioral detail (e.g., irreversible, shifts subsequent points, affects automation playback). This contradicts the annotation? No, it aligns, but falls short of enhancing 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?
Very concise: two sentences, front-loading the core purpose and then explaining the one ambiguous parameter. No fluff. It focuses limited characters on the key detail (point_index base).
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 4 required parameters, all undocumented in schema, and a destructive operation, the description is too thin. It doesn't clarify how the envelope is identified (track/fx/param indices) or provide usage example or prerequisites. Output schema absent, but return value not critical for a deletion tool. Should include more context for an agent to call 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 parameters are bare integers with no descriptions. The description only explains point_index as '0-based', which is valuable, but track_index, fx_index, and param_index are unexplained. Since coverage is low, the description should compensate, but it only partially does. Baseline for low coverage is low, so 3 is fair.
Input schemas describe structure but not intent. Descriptions should explain 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 action: 'delete an automation point from an FX parameter envelope', specifying the resource (FX parameter envelope) and the operation (delete). This distinguishes from similar siblings like delete_envelope_point and clear_fx_envelope, though it doesn't explicitly name 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?
No explicit guidance on when to use this tool versus alternatives. It implies usage for deleting automation points but does not explain prerequisites (e.g., envelope must exist) or contrast with clear_fx_envelope, delete_envelope_point, or get_fx_envelope_points. Description lacks exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemCDestructive
Delete a media item.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already communicates that this is a destructive operation, and the description adds no further behavioral context. It does not mention whether the deletion is permanent, undoable, or what happens to contained MIDI notes, but there is no contradiction with 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 very short and front-loaded with the core action, containing no filler. However, it is slightly too terse to cover important context such as the indexing scheme, which could have been added in a few extra words without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter destructive operation with a destructiveHint annotation, the description is minimally adequate. It lacks guidance on undo behavior, permanence, index base, and the relationship to selection-based deletion, which leaves some important gaps for an agent deciding how 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 description coverage is 0%, so the description carries the burden of explaining parameters. It does not clarify that track_index and item_index identify the target item, nor does it specify indexing conventions or how the two indices relate. The parameter names are somewhat self-explanatory, but the description adds no 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?
The description uses an explicit verb and object ('Delete a media item'), clearly identifying the operation and resource. It is distinguishable from sibling tools like delete_take or delete_midi_note, though it could more explicitly differentiate from delete_selected_items by mentioning that it targets an item by index rather than current selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 such as delete_selected_items, clear_midi_item, or delete_take. The sibling list contains several deletion-related tools, and the description gives the agent no criteria for choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_markerADestructive
Delete a marker by index.
| Name | Required | Description | Default |
|---|---|---|---|
| marker_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already indicates the destructive nature. The description simply restates 'delete' without adding extra context such as permanence, undoability, or side effects. It is consistent with the annotation but adds no additional transparency 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 a single, front-loaded sentence that directly states the action and target. There is no extraneous information, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive tool, the description is minimal but adequate for a basic call. It does not explain how to obtain the index or any indexing conventions, which could be important for correct usage. Given the simplicity, a score of 3 reflects that it is functional but lacks deeper 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 provides no description for marker_index (0% coverage). The description clarifies that marker_index is the index of the marker to delete, which adds meaning beyond the raw schema. However, it does not specify whether the index is zero-based or how to retrieve it, 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 clearly states the action (delete), the resource (marker), and how to identify it (by index). This distinguishes it from siblings like delete_region and add_marker, 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention that the index should be obtained from get_markers, nor does it provide any prerequisites or exclusions. The description is purely declarative with no contextual instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_midi_noteCDestructive
Delete a MIDI note from an item.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| note_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already signals that this operation is destructive. The description adds minimal behavioral context beyond that—it specifies the target (a MIDI note within an item) but doesn't disclose whether the deletion is undoable, whether it affects only the selected note or all notes at that index, or what happens if indices are out of range. With the annotation covering the destructive nature, a 3 is appropriate: the description adds some context but not rich 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 a single, concise sentence that front-loads the action and target. It earns its place with no wasted words. However, it could have used the brevity to add parameter context or usage guidance without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema and zero parameter documentation, the description is incomplete. It doesn't explain the indexing semantics, prerequisites, or effects beyond the basic action. The destructiveHint annotation covers the safety warning, but an agent still lacks enough information to call this tool correctly without guessing at index meanings.
Complex tools with many parameters or behaviors need more documentation. Simple 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 three parameters (track_index, item_index, note_index). The description only mentions 'an item' and 'a MIDI note' but doesn't explain the indexing scheme (e.g., zero-based vs one-based, which item, which note). It doesn't clarify the relationship between track_index and item_index or how note_index maps to notes within the item. This is a significant gap for a tool with three required integer 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 'Delete a MIDI note from an item' clearly states the verb (delete), the resource (MIDI note), and the container (an item). It distinguishes itself from sibling tools like add_midi_note, set_midi_note, and clear_midi_item, though it doesn't explicitly name them. The purpose is clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like delete_selected_items, clear_midi_item, or remove_overlapping_midi_notes. It doesn't mention prerequisites (e.g., the item must contain MIDI notes, indices must be valid) or context for when deletion is appropriate. An agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_regionCDestructive
Delete a region by index.
| Name | Required | Description | Default |
|---|---|---|---|
| region_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint: true already covers the destructive nature, so the description adds almost nothing beyond that. It does not disclose whether the operation is permanent, whether it can be undone, or what happens to the region's content. The description merely restates the action without additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action. There is no wasted text, and it is appropriately sized for a tool with one parameter. Perfectly 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?
Given the minimal schema and lack of output schema, the description should explain how to use the index (e.g., referencing get_regions to retrieve the list) and specify indexing semantics. It provides none of this, leaving an agent without enough information to call the tool correctly, especially regarding the meaning of 'index'.
Complex tools with many parameters or behaviors need more documentation. 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 compensate for the missing parameter documentation. It only mentions 'by index', which largely repeats the parameter name 'region_index'. It does not clarify indexing convention (0-based vs 1-based), how to obtain a valid index, or what the index refers to in the list of regions. This is insufficient for a tool with an undocumented 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 states a clear verb ('Delete'), resource ('region'), and identifier ('by index'). It is unambiguous about what the tool does and is distinct from siblings like delete_marker or delete_track based on the noun. However, it does not explicitly differentiate itself from other deletion tools, 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?
There is no guidance on when to use this tool versus alternatives such as delete_marker or delete_item. No context about prerequisites (e.g., needing to list regions first) or conditions that select it is provided. The usage is only implied by the verb and resource, which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_selected_itemsBDestructive
Delete all selected items.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals mutating behavior, and the description adds the 'all selected' scope. However, it does not disclose whether the operation is undoable, whether it no-ops with no selection, or whether it affects only media items. The description is consistent with the annotation but adds limited 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 a single, direct sentence that front-loads the action and scope. Every word earns its place, 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 no-parameter, destructive tool, the description conveys the core behavior, but it leaves gaps around what 'items' means and what happens if nothing is selected. Given the destructive nature and no output schema, slightly more context would help an agent invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is complete by definition. The description does not need to explain parameter semantics, and there is no ambiguity introduced by missing 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 identifies the action (delete), the resource (selected items), and the scope (all). It is distinguishable from singular tools like delete_item and from selection-oriented tools like cut_selected_items, though it does not explicitly state that 'items' refers to media items rather than tracks or other 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?
There is no guidance on when to use this tool instead of alternatives such as delete_item, cut_selected_items, or clear_track. The intended context (delete all currently selected media items) is only implied by the name and description, with no explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sendBDestructive
Delete a send from a track.
Args: track_index: Source track index (0-based). send_index: Send index (0-based) to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| send_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations include destructiveHint=true, which covers the primary behavioral trait (destructiveness). The description adds that the deletion is permanent, but it does not disclose other potential behaviors like whether it has side effects on other sends, whether it requires the track to be unmuted, or whether it returns anything. Given the annotation, the description's minimal addition is acceptable 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 extremely concise—two lines covering the action and parameters. The information is front-loaded with the core action in the first sentence. It does not waste words, but it could be slightly more structured with a clearer separation between the description and parameter 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 simplicity (2 integer parameters, no output schema), the description covers the essential calling contract. However, it lacks context on how to find the correct send_index, potential errors (e.g., out-of-range indices), and the broader use case. Since the description is the only source of behavioral guidance beyond annotations, a bit more contextual detail would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, so the description must compensate. It does define both parameters ('track_index' and 'send_index') and clarifies they are 0-based, which is useful. However, it does not explain what a 'send' is or how to obtain the indices, leaving some ambiguity that could be filled by referencing sibling tools like 'get_track_num_sends'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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') and the resource ('a send from a track'), making the purpose unambiguous. It is distinct from sibling tools like 'create_send' or 'get_track_num_sends', which are easily differentiated by the verb and object, though it does not explicitly compare itself to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that deletes are irreversible or suggest when deletion might be appropriate (e.g., when cleaning up routing). The only context is the destructive annotation, which is implicit rather than explicit in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_takeBDestructive
Delete a specific take from a media item.
Args: take_index: Take index to delete (0-based). The take is activated first, then removed.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a non-obvious behavior beyond the destructiveHint annotation: 'The take is activated first, then removed.' This adds useful context about what happens during deletion, though it does not discuss side effects on the active take state or undo behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear one-sentence purpose followed by an Args section. Every sentence adds value, and there is no redundant filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive three-parameter tool with no output schema, the description leaves important context unexplained: what track_index and item_index refer to, how they relate to take_index, and what happens on invalid indices. The activation note is helpful, but it does not fully compensate for the missing parameter 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 needed to explain all three required parameters. It only documents take_index (including 0-based indexing), while track_index and item_index are left entirely unexplained beyond their 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 action ('Delete') and a specific resource ('a specific take from a media item'), which clearly distinguishes it from sibling tools like delete_item, delete_track, and delete_selected_items. The singular 'specific take' also signals that this targets one take by index rather than a bulk 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?
There is no guidance about when to choose this tool over alternatives such as delete_item, explode_takes, or crop_to_active_take. The description implies usage by its wording, but it does not state exclusions, prerequisites, or the relationship to other take/item deletion tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_trackADestructive
Delete a track.
Args: track_index: Track index to delete (0-based). Cannot delete master track (-1).
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already flags that this tool mutates state. The description adds useful behavioral detail beyond the annotation: track_index is 0-based and the master track (-1) cannot be deleted. It does not spell out side effects like removal of items or child tracks, but the destructive annotation lowers the burden and the critical prohibition 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 minimal and front-loaded. The purpose is stated in the first three words, and the only supporting detail is the parameter explanation. Every sentence contributes information, and there is no fluff or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema, this is complete. The agent knows what to delete, which index is valid (0-based), which index is prohibited, and that the operation is destructive via annotations. Nothing necessary to make the call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates. It explains that track_index is 0-based and explicitly calls out the forbidden value -1 (the master track). This gives an agent the semantic information absent from the raw integer 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: 'Delete a track.' This clearly distinguishes it from the many delete_* siblings (delete_midi_note, delete_take, delete_item) by naming the exact object being removed. No ambiguity remains about what resource this tool operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 implied by the name and opening sentence: call this when you want to remove a track by its index. However, the description does not explicitly discuss when to prefer this over alternatives or mention any prerequisite, such as obtaining a valid track index first. It also only partially guides usage by stating that the master track cannot be deleted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_itemC
Duplicate a media item.
Returns: Object with new item info.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only mentions the return object, and the annotation already signals non-destructiveness. It does not disclose whether the duplicate is placed adjacent to the original, whether all properties are copied, or how selection state is affected—important behavioral context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded with the action, and the return line is structured. It contains no filler, though it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, this description is too thin. An agent cannot determine what the duplicate will look like, where it will appear, or how the indices relate to the operation. The missing behavioral details make it inadequate for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, and the tool description does not explain the role of track_index and item_index or any indexing conventions. The parameter names are self-explanatory, but the description adds no deeper meaning beyond what the schema names already imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action 'Duplicate' and the resource 'media item', clearly identifying what the tool does. It does not differentiate from siblings like copy_selected_items or paste_items, but the core 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?
There is no guidance on when to use this tool versus alternatives such as copy/paste or other item manipulation tools. No prerequisites, exclusions, or sibling comparisons are provided, 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.
explode_takesADestructive
Explode all takes of a media item in place (each take becomes its own overlapping item).
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already flags the destructive nature, so the description does not need to repeat that. It adds the 'in place' modifier and the outcome (each take becomes its own overlapping item), which clarifies that the original take structure is modified rather than creating new items. This goes beyond the annotation by describing the result.
Agents need to know what a tool does to the world before calling 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 front-loads the verb and resource and immediately states the effect. There is zero fluff; every word contributes meaning. It is concise without sacrificing 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 destructive action with two parameters and no output schema, the description explains the core behavior but omits parameter semantics. The tool's simplicity reduces the need for extensive detail, but the lack of parameter explanation is a real gap. Given that annotations cover destructive behavior and the effect is described, it is minimally complete but not 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?
Schema description coverage is 0% and the description provides no explanation for track_index or item_index. While the parameter names are somewhat self-explanatory, the description does not compensate for the lack of schema details. An agent cannot know whether indices are zero-based, what ranges are valid, or how they relate to the media item. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'explode' and the resource 'all takes of a media item', with a precise outcome: each take becomes its own overlapping item. This distinguishes it from sibling tools like crop_to_active_take (which keeps only the active take) or delete_take (which removes takes). The 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?
The description implies when to use it (when you want to separate takes into individual overlapping items) but does not explicitly mention alternatives or when not to use it. Sibling tools like crop_to_active_take or delete_take are not referenced, leaving the agent to infer the choice from context. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_eqA
Find ReaEQ on a track, optionally adding it if absent.
Args: instantiate: If True and ReaEQ is not present, add it.
Returns: Object with 'ret' = the FX index of ReaEQ, or -1 if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| instantiate | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses the conditional side effect: if instantiate is True and ReaEQ is absent, it will be added. It also specifies the return contract. It does not mention where the FX is inserted or error behavior, but the key 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 compact and well-structured: a one-sentence purpose followed by Args and Returns. Every sentence contributes useful information 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 return value and conditional side effect are clearly specified, which is good given there is no output schema. However, the required track_index parameter is not explained, and invalid-track or not-found edge cases are not addressed, leaving the tool slightly incomplete for 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?
The description explains instantiate well ('If True and ReaEQ is not present, add it'), but it does not describe track_index at all. With 0% schema description coverage, the required track_index parameter is left undocumented beyond its integer type, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Find ReaEQ on a track', with an optional add behavior. This clearly distinguishes it from add-only tools like add_eq and other FX query 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 for locating ReaEQ or ensuring it exists, but it gives no explicit when-to-use guidance and does not mention alternatives such as add_eq for pure addition. An agent must infer the intended usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_takeARead-only
Get the index of the active take of a media item.
Returns: Object with 'ret' = active take index (-1 if the item has no active take).
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring this as a safe read, the description goes further by defining the return shape and the sentinel value -1 for 'no active take', which is genuinely useful behavioral context an agent can act on. It stops short of describing what happens on an invalid track/item 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?
Two tight lines: the purpose sentence front-loads the verb and resource, and the Returns block cleanly scopes the output. 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?
There is no output schema, so the description rightly carries the return contract, and the -1 sentinel makes it callable without ambiguity. The remaining gap is that the two required indexing parameters are undescribed, leaving callers to guess how to address a valid item.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds nothing about track_index or item_index beyond implying they locate a media item. With two undocumented required integer parameters, the agent gets no help interpreting indexing base, valid ranges, or whether indices refer to the currently selected track.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb (Get) and resource (the index of the active take of a media item), and its return specification (-1 when no active take exists) cleanly separates it from siblings like get_takes, which lists takes, and set_active_take, which mutates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Reading the description makes it obvious this is the read counterpart to set_active_take, but there is no explicit 'use this when... vs set_active_take/get_takes when...' guidance or mention of a prerequisite that an item must be selected or exist. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_tracksBRead-only
Get information about all tracks in the project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the read-only nature of the operation, and the description is consistent with it. The description adds the 'all tracks' scope but does not disclose whether the master track is included, how much data is returned, or any other behavioral 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 one short, front-loaded sentence with no filler or repetition. It conveys the essential action and resource scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool, the description is close to sufficient, but since there is no output schema it leaves the return format and content unspecified. An agent cannot tell whether the result includes track IDs, names, indices, or nested data.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the description has no parameter semantics to add. This is the appropriate baseline 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 states a specific action ('Get information') and resource ('all tracks in the project'), which distinguishes it from siblings like get_track, get_selected_tracks, or get_track_count. However, 'information' is broad and does not specify what data is actually returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_track, get_selected_tracks, or get_track_count. The description does not mention scope exclusions, filtering behavior, or any condition that would make this tool the preferred choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cursor_positionARead-only
Get the edit cursor position.
Returns: Object with cursor position in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe read-only nature is known. The description adds useful behavioral context beyond that: the return value is an object containing the cursor position in seconds. It does not mention side effects, but none are expected given 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 two short lines with no filler. It front-loads the verb and resource, then immediately states the return type and units. 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 is nearly complete: it names the resource, the return type, and the units. The only minor ambiguity is the exact key name inside the returned object, but this does not affect the agent's ability to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to document. The baseline of 4 applies because no parameter guidance is needed; the description correctly focuses entirely on the return 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 states a specific verb and resource: 'Get the edit cursor position.' It clearly distinguishes this from the sibling get_play_position, which queries the playhead rather than the edit cursor. The addition of return units further clarifies intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 by naming the exact resource (edit cursor) and result format. It does not explicitly mention alternatives or when not to use it, but the resource name itself disambiguates from get_play_position and set_cursor_position. For a no-parameter getter, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_envelope_point_countCRead-only
Get the number of points in an envelope.
Args: envelope_name: Envelope name.
Returns: Object with point count.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already declares this a safe read operation, and the description's 'Get' wording is consistent with that. The description adds a small behavioral note that it returns 'an Object with point count,' but it doesn't disclose anything beyond what the annotation and tool name already imply. No contradiction, but no meaningful added transparency either.
Agents need to know what a tool does to the world before calling 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 its one-line purpose. The Args/Returns docstring format is lightweight. However, the Args section is misleadingly incomplete (it lists one of two parameters), which slightly detracts from otherwise lean 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 2-parameter tool with no output schema and 0% schema description coverage, the description should at minimum document both parameters. It documents only envelope_name and omits track_index entirely, leaving the agent unable to correctly construct a call. The simple read operation and existing annotation lower the bar, but the missing required parameter is a significant completeness failure.
Complex tools with many parameters or behaviors need more documentation. Simple 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 documenting parameters. It only documents envelope_name, which is near-tautological ('Envelope name'), and completely omits the required track_index parameter. An agent cannot know what track_index refers to or how to supply it, which is a critical gap for a 2-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get the number of points in an envelope.' This distinguishes it from sibling get_envelope_points (which returns the points themselves) and the mutating add/delete/clear envelope tools. However, it does not name or reference any sibling for explicit differentiation, so it's clear but lacks the explicit contrast that would earn 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?
There is no guidance on when to use this tool versus alternatives such as get_envelope_points, get_fx_envelope_points, or get_track_envelope. The description provides no contextual triggers, exclusions, or conditions that would help an agent choose this tool over its many envelope-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_envelope_pointsCRead-only
Get all points from an envelope.
Args: envelope_name: Envelope name.
Returns: Object with list of points (time, value, shape).
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| envelope_name | 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 an object containing a list of points with time, value, and shape, but does not disclose behavior for missing envelopes, ordering, or empty envelopes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and free of filler. It follows a clear 'summary, args, returns' structure. The incomplete Args section is a content issue rather than a conciseness problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 definition is not complete enough for correct invocation: track_index is required but undocumented, and there is no distinction from FX envelope tools. With no output schema and sparse annotations, an agent needs more context than this provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions envelope_name, omitting the required track_index parameter entirely. The phrase 'Envelope name' adds little beyond the parameter name, and dropping a required parameter is misleading for an agent trying 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?
States a clear verb and resource: 'Get all points from an envelope.' It specifies the return format, so an agent understands the core action. However, it does not distinguish track envelopes from FX envelopes, even though get_fx_envelope_points exists as a 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?
No guidance is given about when to use this tool versus alternatives like get_fx_envelope_points or get_envelope_point_count. The intended usage must be inferred entirely from 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.
get_eq_band_enabledARead-only
Check whether a ReaEQ band is enabled.
Args: fx_index: FX index (0-based) of ReaEQ. bandtype: Band type (0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass). bandidx: Band index within that type (0=first).
Returns: Object with 'ret' boolean (true=enabled).
| Name | Required | Description | Default |
|---|---|---|---|
| bandidx | No | ||
| bandtype | Yes | ||
| fx_index | Yes | ||
| track_index | 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 covered. The description adds useful behavior beyond annotations: the exact return shape ('ret' boolean), 0-based indexing for FX and band index, and the bandtype numeric code mapping. 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 well-structured with a purpose line, Args section, and Returns section. It is front-loaded with the core behavior and avoids unnecessary prose, though the Args section is incomplete by omitting track_index.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 return contract and most parameter semantics, and the readOnly annotation covers side-effect concerns. However, it fails to explain the required track_index parameter or clarify that this is a track-FX operation versus a take-FX operation, leaving a meaningful gap 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 description documents fx_index, bandtype, and bandidx with helpful semantics, including the bandtype enum mapping and 0-based indexing. However, it completely omits track_index from the Args block even though track_index is a required schema parameter and its meaning is not otherwise obvious.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Check whether a ReaEQ band is enabled') with a clear resource target. It distinguishes itself from the sibling set_eq_band_enabled by framing itself as a read/query operation, and from get_eq_bands by targeting a single band's enabled 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 read/query intent is implied by 'Check whether,' and the sibling set_eq_band_enabled makes the contrast obvious, but there is no explicit guidance about when to use this tool instead of related ones, nor any mention of prerequisites like locating the ReaEQ FX first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eq_bandsARead-only
Get all ReaEQ band settings in one structured call.
Args: fx_index: FX index (0-based) of ReaEQ in the FX chain.
Returns: Object with a 'bands' list. Each band has band_index, bandtype, bandtype_name, bandidx, paramtype, paramtype_name, normval, the REAPER-formatted value, and (for gain params) the computed gain_db.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful return-shape context, such as band metadata and computed gain_db values, but does not disclose behavior for invalid fx_index or non-ReaEQ FX. No contradiction with the 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 concise and front-loaded, with a clear one-sentence purpose followed by Args and Returns sections. Every sentence adds information 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?
The return value is documented in detail even without an output schema, and fx_index is explained. However, track_index is missing from the description, and there is no guidance about when to prefer this over get_eq_band_enabled or set_eq_band, leaving the description only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents fx_index clearly as a 0-based FX index, but track_index is required by the schema and is completely unexplained, leaving an essential parameter 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 states a specific verb and resource: 'Get all ReaEQ band settings in one structured call.' The word 'all' and the structured-return framing distinguish it from siblings like get_eq_band_enabled and set_eq_band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 that this tool is for retrieving the complete set of ReaEQ band settings at once, but it never explicitly says when to choose it over alternatives or when not to use it. No sibling tools are named as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_envelopeA
Get or create an automation envelope for an FX parameter.
This enables automation of any FX parameter (e.g., a flanger knob in Guitar Rig). The envelope is created if it doesn't exist.
Args: param_index: Parameter index (0-based). Use track_fx_get_num_params() to find available parameters.
Returns: Object with envelope_name, param_name, point_count, and indices.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the minimal destructiveHint=false annotation by explicitly disclosing the side effect that the envelope is created when missing and by naming the return fields. No hidden mutation is implied beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact, front-loaded purpose with a clear Args/Returns structure. The example and side-effect statement each earn their place; 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?
No output schema and only destructiveHint=false, so the description carries the burden. It covers side effects and return shape, but leaves two of three required parameters undocumented and does not clarify 0-based indexing for track_index and fx_index.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only param_index is documented (with 0-based indexing and how to discover valid values via track_fx_get_num_params). track_index and fx_index remain undocumented at 0% schema coverage; their meanings are inferable from names but the description does not state that they are also indices or what indexing convention they follow.
Input schemas describe structure but not intent. Descriptions should explain 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 (get or create) on a specific resource (automation envelope for an FX parameter), with an illustrative example. This clearly differentiates it from track-envelope utilities like get_track_envelope and point-level tools like get_fx_envelope_points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the intended use: automating any FX parameter, and clarifies side-effect behavior (created if absent). It does not explicitly name alternatives or exclusionary conditions, but the FX-scoped context is sufficient to guide selection among envelope-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_envelope_pointsBRead-only
Get all automation points from an FX parameter envelope.
Returns: Object with list of points (time, value, shape, tension, selected).
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safe-read behavior, and the description adds the return shape (time, value, shape, tension, selected). However, it does not disclose behavior around empty envelopes, index conventions, or whether the envelope must exist. 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 two short sentences with the core action front-loaded and a concise return summary. Every sentence earns its place, and there is no filler or repetition of schema 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?
For a simple read-only getter, the description plus readOnlyHint covers the basic call and lists the return fields. However, with no output schema and no parameter explanations, an agent lacks details on index conventions and point field semantics, so the description is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain track_index, fx_index, or param_index, their units, or zero-based indexing. It only names the resource, so it fails to compensate for the complete lack of parameter documentation 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 states a specific verb ('Get') and resource ('all automation points from an FX parameter envelope'), which clearly distinguishes it from siblings like get_envelope_points that target track envelopes. The phrase 'FX parameter envelope' makes the tool's 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?
No guidance is given about when to use this tool versus alternatives such as get_envelope_points, get_fx_envelope, or add_fx_envelope_point. The description only states what the tool does, leaving the agent to infer selection from the 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.
get_fx_presetCRead-only
Get the current preset name of an FX.
Returns: Object with current preset name.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | 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 that the return value is an object containing the current preset name, which is useful. However, it does not disclose behavior for invalid indices or whether the preset name can be null.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. The return line is slightly redundant but adds a small amount of structural information without 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?
For a simple getter with a readOnly annotation, the return shape is mentioned, but the complete absence of parameter semantics and usage guidance leaves an agent uncertain about how to invoke it correctly. No output schema exists to fill the 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%, and the description does not explain what track_index and fx_index mean, their indexing origin, or how they identify the target FX. The description entirely fails to compensate for the schema's lack of 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 operation ('Get') and the resource ('current preset name of an FX'), which distinguishes it from plural-oriented siblings like get_fx_presets. It does not explicitly specify track FX versus take FX, but the required track_index parameter implies 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?
No guidance is provided about when to use this tool versus alternatives such as get_fx_presets, set_fx_preset, or track_fx_get_name. The description does not mention exclusions, prerequisites, or context for choosing this getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_presetsCRead-only
Get list of presets available for an FX.
Returns: Object with list of preset names.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already discloses that this is a read-only operation, so the description's burden is lower. The description adds that it returns an object with a list of preset names, which is mildly useful but does not go beyond what an agent would infer. It does not mention error conditions, indexing behavior, or any other side-effect-relevant details, but given the strong annotation coverage, a score of 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 extremely concise, containing only two short sentences with no filler. It is structured as a one-line purpose followed by a return type note, which is efficient. However, the brevity comes at the cost of omitted parameter explanations, so while it is concise, it is not optimally structured for clarity. Still, it scores high on conciseness alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 there are 2 required parameters, no schema descriptions, and no output schema, the description is far from complete. It does not explain the index parameters, how they are resolved, or any edge cases. The return type is loosely described as an 'Object with list of preset names,' but without structure. Sibling tools like get_fx_preset and set_fx_preset suggest a broader FX context, but the description fails to position this tool within that context. An agent would struggle to call this correctly without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 by explaining what track_index and fx_index refer to. It does not mention either parameter at all, leaving the agent to guess that track_index identifies a track and fx_index identifies an effect on that track. This is a critical omission since both parameters are required and undocumented, making it impossible to invoke the tool correctly 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 clearly states a specific verb ('Get') and resource ('list of presets available for an FX'), making the core purpose unambiguous. It does not explicitly differentiate from sibling tools like get_fx_preset, but the plural 'presets' versus singular 'preset' provides a natural distinction, so it is not misleading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_fx_preset, set_fx_preset, or save_fx_preset. It also lacks any context about prerequisites (e.g., needing a valid track_index and fx_index) or scenarios where this tool is preferred. The only implied usage is 'get presets for an FX,' which is not enough for an agent to choose correctly among related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_item_infoCRead-only
Get information about a media item.
Returns: Object with item properties (position, length, take info, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes that this is a safe read operation, so the description does not need to repeat that. However, the description adds almost no behavioral context: it only mentions the return type without describing side effects, error behavior, or any nuances like whether the item must be selected. Since the bar is lower given annotations, but the description still offers minimal extra value, a 2 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 short and uses a 'Returns:' line for structure, which is clean and front-loaded. However, the content is so thin that it borders on under-specification rather than efficient conciseness. It earns a 3 for being brief and organized, but not for being informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 there is no output schema and the parameters are undocumented, the description is far from complete. An agent cannot confidently call this tool without knowing what the parameters mean or what the returned object contains. For a simple getter this is borderline inadequate; a 2 reflects the missing parameter semantics and return structure 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%, meaning the parameters track_index and item_index have no descriptions in the schema, and the tool description also fails to explain their meaning or format. The agent is left to guess whether indices are zero-based, how they relate to each other, or what valid ranges are. With two required parameters and no semantic explanation, this is a critical deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 (get information) and the resource (media item), and mentions the return of item properties. It is specific enough to know it retrieves item data, but it does not distinguish itself from sibling getters like get_midi_item or get_item_position. A 4 is warranted for clear verb+resource without 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 such as get_midi_item, get_track, or the many item-modifying functions. There is no mention of context, prerequisites, or exclusions. The description leaves the agent to infer usage, which is a significant gap for a generic getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markersARead-only
Get all markers in the project.
Returns: Object with list of markers (position, name, index).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the tool is known to be a read operation. The description adds value by stating the return object structure (position, name, index). It does not mention ordering, empty results, or error cases, but this is 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 extremely concise at two sentences, front-loading the tool's purpose and immediately followed by the return shape. No superfluous information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 absence of an output schema, the description properly explains the return object's fields. It could mention the empty case or ordering, but for a simple all-markers query the description 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?
With 0 parameters, the schema fully describes the input. The description correctly does not attempt to explain parameters. Baseline for 0 params is 4, and no additional parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get all markers in the project.' It clearly distinguishes itself from sibling tools like add_marker, delete_marker, and go_to_marker by focusing on retrieval of all markers, and from get_regions by naming markers 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?
Usage is implied: use this when you need all markers in the project. However, there is no explicit guidance on when not to use it or mention of alternatives for specific markers (e.g., go_to_marker). The description is clear but lacks direct exclusion or comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_master_trackCRead-only
Get information about the master track.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already tells the agent this is a safe read operation, so the description does not need to restate that. The description adds no behavioral context beyond the annotation: it does not say whether the tool returns a track object, a dictionary of properties, or a simple value, nor whether it can fail when no project is open. With annotations covering the safety profile, a 3 is appropriate because the description adds minimal value but does not contradict 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 a single short sentence with no wasted words. It is front-loaded with the verb 'Get' and the resource 'master track'. It is concise, though it could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with no output schema, the description should clarify what information is returned. 'Information about the master track' is too vague: an agent cannot predict whether the result is a track ID, a property map, or a human-readable summary. The sibling list contains many more specific getters, so the description should at least hint at the return shape or scope. The readOnlyHint annotation covers safety, but not the semantic content of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden on the description. The schema is empty and schema description coverage is 100% (vacuously). The description's only job is to clarify what the tool returns, which it does only vaguely, but with no parameters to document, a baseline of 4 is fair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Get information about the master track'), so an agent knows it is a read operation targeting the master track. However, it does not specify what kind of information is returned (e.g., name, volume, pan, mute, sends, FX), and it does not distinguish itself from sibling tools like get_track, get_track_master_send, or get_track_peak. It is minimally clear but lacks 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?
No guidance is given about when to use this tool versus alternatives. The sibling list includes many track-related getters (get_track, get_track_master_send, get_track_peak, get_track_count), and the description does not explain what makes get_master_track the right choice. An agent would have to guess whether this returns a summary, a handle, or a specific set of properties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_midi_itemCRead-only
Get information about a MIDI item.
Returns: Object with item info including position, length, note count.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=trueainer, and the description aligns by presenting a read-only get operation. The description adds useful return-shape context (position, length, note count), but it does not disclose indexing assumptions, failure behavior, or edge cases for the two required integer 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 short and front-loaded, with the core intent in the first sentence and a useful but compact return summary in the second. There is 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 two-parameter getter this is partly sufficient, but the missing parameter semantics and lack of usage routing leave real gaps. With no output schema, the description's partial return summary is helpful, but alone it does not fully equip an agent to call 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 does not compensate. It never explains what track_index and item_index mean, whether they are zero-based, or how they relate to the returned object. The agent must guess the parameter semantics from 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 clearly states a specific verb and resource: 'Get information about a MIDI item.' This distinguishes it from mutation tools like add_midi_note or delete_midi_note. However, it does not differentiate from the nearby generic get_item_info sibling, so it stops short of full sibling-level clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_item_info or get_midi_notes. The description says what it does, but not when an agent should prefer it over sibling tools, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_midi_notesCRead-only
Get all MIDI notes from an item.
Returns: Object with list of notes.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds the 'all notes' scope and a basic return shape, but does not disclose behavior such as note ordering, empty-item behavior, or how the optional fields parameter affects 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 short, front-loaded, and easy to scan. The 'Returns:' clause is somewhat generic but acceptable given the lack of an output schema. There is minor redundancy with the tool name, but no real 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 three parameters and no output schema, the description provides only minimal context. It does not explain the structure of the returned notes, the meaning of the fields parameter, or how the output relates to other MIDI note tools, leaving important gaps for correct invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain the parameters, but it only vaguely references 'an item.' track_index and item_index are not explicitly clarified, and fields is entirely undocumented beyond its schema default and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 and resource: 'Get all MIDI notes from an item.' It conveys the core purpose and scope, but does not differentiate it from closely related siblings such as get_midi_item or get_selected_midi_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?
There is no guidance about when to use this tool versus alternatives, no prerequisites, and no mention of when a different MIDI note tool would be more appropriate. The agent must infer usage entirely from the name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_play_positionARead-only
Get the current playback position.
Returns: Object with play position in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, and the description adds that the return value is an object with play position in seconds. It doesn't disclose behavior when playback is stopped or whether the object contains additional fields, but for a read-only getter 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 short, front-loaded, and contains no filler. The return format is stated in a clear second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only getter, the description provides the essential information: what it returns and the unit of measurement. The exact object key is not specified, and sibling ambiguity remains, but nothing critical is missing 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?
The tool has zero parameters, so parameter semantics are trivially covered; the baseline of 4 applies. The description correctly focuses on the output rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current playback position') and specifies the return value in seconds. It is unambiguous, though it doesn't explicitly differentiate from sibling tools like get_play_state or get_cursor_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?
The description gives no explicit guidance on when to use this tool versus alternatives. With siblings such as get_play_state and get_cursor_position, the agent must infer which position-related tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_play_stateBRead-only
Get the current playback state.
Returns: Object with play state info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates safe read-only behavior; the description adds only the generic statement that it returns 'Object with play state info.' It does not disclose what fields or states are included, nor how playback state relates to playing, paused, stopped, or recording states. There is no contradiction with 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 short and front-loaded with the core action: 'Get the current playback state.' The 'Returns: Object with play state info' sentence adds minimal return-type context and is slightly redundant, but the overall description remains appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity of a zero-parameter, read-only getter, the description is minimally usable. However, with no output schema, the vague 'Object with play state info' leaves the return shape ambiguous, and no usage context is provided relative to related state getters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters and 100% schema coverage because the input schema is empty. With no parameters to document, the description has no semantic burden to carry, and the zero-parameter baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get the current playback state.' This distinguishes it from action-oriented siblings like play, pause, and stop, and from position-specific get_play_position. However, it does not explicitly differentiate it from other state getters such as get_repeat_state, so it is clear but not fully sibling-aware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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_play_position, get_repeat_state, or the play/pause/stop controls. The description only states what the tool does, leaving selection to be inferred from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_lengthARead-only
Get the length of the project (end of last item).
Returns: Object with project length in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds value by clarifying that the length is based on the end of the last item and that the return value is an object with the length expressed in seconds, which is not available elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary purpose is stated first, and the return format/unit is provided in a compact follow-up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, this description is complete: it defines what the tool returns, the unit, and the precise interpretation of 'project length'. No output schema exists, but the description adequately communicates the essential return contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters and the schema coverage is 100%, so there is no parameter information to compensate for. The description appropriately focuses on return semantics instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: "Get the length of the project", and clarifies the definition as "end of last item". This clearly distinguishes it from other read-only project tools like get_project_summary or get_project_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 implies when to use this tool: any time the agent needs the project length in seconds. However, it does not mention alternatives or exclusions, such as when to use get_project_summary or get_play_position instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_nameARead-only
Get the project name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this is a safe read operation, and the description's 'Get' aligns with that. The description adds no behavioral context beyond the annotation, but for a zero-parameter read-only getter there is little additional behavior to disclose. No contradiction 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 a single, direct sentence with no wasted words. It is appropriately sized for a trivial zero-parameter getter and front-loads the essential information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no parameters, no output schema, and no nested objects, 'Get the project name.' is sufficiently complete. The annotation covers the safety profile, and the description unambiguously states the operation and resource.
Complex tools with many parameters or behaviors need more documentation. 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 the schema fully covers parameter semantics. The description does not need to explain any parameter meaning. Baseline for zero-parameter tools is 4, and no information 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?
Description states a specific verb and resource: 'Get the project name.' It clearly differentiates from sibling tools like get_project_path, get_project_length, and get_project_summary by naming the project name as the target resource. Even with zero parameters, an agent knows exactly what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 implied: call when you need the project name. However, there is no explicit guidance about when not to use it or how it differs from related project getters like get_project_path or get_project_summary. The context is clear but alternatives are not discussed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_pathARead-only
Get the project path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already declares this as a safe read operation, and the description 'Get the project path' aligns with that. The description adds little beyond the annotation—no details on path format (absolute vs relative) or whether it returns the full file path—but does not contradict anything. For a trivial getter with annotation coverage, 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 a single, front-loaded sentence that directly states the operation with zero filler words. It is perfectly compact and immediately informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 getter with no output schema, the description provides the essential information—what the tool returns. Minor ambiguity about the exact nature of the path (file path vs directory) could be clarified, but this is not critical for an agent making the call correctly. Overall, it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple 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 takes no parameters, so the input schema is fully self-documenting (100% coverage). The description logically does not need to elaborate on parameters; the baseline of 4 for zero-parameter tools is justified 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 states the action (Get) and the resource (project path), which is a specific, unambiguous artifact. It naturally distinguishes from siblings like get_project_name or get_project_summary, as it targets the path rather than other project attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 is clear: an agent would call this when it needs the filesystem path of the current project. There are no explicit exclusions or alternative routing to other siblings, but the purpose is self-evident for a simple getter, so a minor deduction only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_summaryARead-only
Get a comprehensive summary of the current REAPER project.
Returns everything needed to understand the project state and give useful mixing/production advice in a single call.
Returns: Object with: - project_name: Name of the project file - project_path: Full path to the project - tempo: Project tempo in BPM - time_signature: {numerator, denominator} - project_length: Length in seconds - track_count: Total number of tracks - tracks: List of track info objects, each containing: - index: Track index (0-based) - name: Track name - volume_db: Volume in decibels - pan: Pan position (-1 to 1) - mute: Boolean mute state - solo: Boolean solo state - fx_count: Number of FX plugins - fx_names: List of FX plugin names - master: Master track info {volume_db, fx_count, fx_names} - markers: List of {index, position, name} - regions: List of {index, start, end, name}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only behavior is covered. The description adds value by detailing the exact return structure, including nested track objects, markers, and regions. It does not contradict annotations, but it also does not disclose any potential limitations (e.g., behavior with no open project). Given the simple read-only nature, the added return schema is sufficient 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 a one-sentence purpose, followed by a clear 'Returns:' section listing the object fields. Every line provides necessary information about the return structure. There is no fluff; 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 there is no output schema, the description fully documents the return object with nested fields, types, and examples (e.g., volume_db, pan ranges). It covers all relevant project aspects: tracks, master, markers, regions, and timing. Nothing an agent needs to understand the tool's output 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 no properties in the input schema, so there is nothing for the description to explain. Per the baseline for zero-parameter tools, a score of 4 is appropriate; the description does not need to compensate for missing 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 opens with a clear verb and resource: 'Get a comprehensive summary of the current REAPER project.' It explicitly states the tool returns everything needed to understand project state for mixing/production advice, distinguishing it from more specific siblings like get_project_name or get_tempo. The scope and intent 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?
The description implies usage as a one-shot overview for production advice, but it does not explicitly mention when to use dedicated tools for specific details. While the purpose is clear, there is no explicit guidance on exclusions or alternatives beyond the implicit one-stop-shop nature. A stronger statement like 'for individual fields use get_project_name etc.' would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regionsBRead-only
Get all regions in the project.
Returns: Object with list of regions (start, end, name, index).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, so the agent knows this is a read operation. The description adds the return format: 'Object with list of regions (start, end, name, index).' This is useful, but it doesn't disclose any other behavioral traits, such as whether the list is sorted, whether regions include markers, or if there are any limits. Since the annotation covers safety, the description adds minimal extra context, so a 2 is appropriate – it provides the return structure but nothing more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second lists the return fields. It is concise and front-loaded with the main action. However, the return format could be integrated into a single sentence, but it's not overly verbose. A 4 is fair – efficient but not perfectly streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema, and a simple read operation, the description is fairly complete. It tells the agent what it returns. However, it doesn't specify the exact structure (e.g., array vs. object), or whether the list is sorted, or if it includes empty regions. But for a simple getter, the agent can likely infer the usage. A 3 is a reasonable baseline – adequate but with minor gaps in return format 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 tool has zero parameters, and the schema coverage is 100% (trivially, since there are no properties). With no parameters, the baseline is 4. The description doesn't need to explain parameters because there are none. This is a perfect score for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: 'Get all regions in the project.' It specifies the resource (regions) and the scope (all in the project). It does not explicitly distinguish from sibling tools like add_region, delete_region, go_to_region, but the list of sibling tools includes those, and the 'Get all' phrasing makes it clear it's a retrieval, not a mutation. A 4 is appropriate because it's clear but 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 implies usage (when you need a list of all regions), but it doesn't explicitly state when not to use it or mention alternatives. For example, it doesn't say 'use get_markers for markers' or 'use go_to_region to navigate.' Given the tool is a straightforward getter, the context is fairly obvious, so a 3 is fair – it's clear but no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repeat_stateARead-only
Get the current repeat state.
Returns: Object with repeat state (true/false).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the return format (an object containing true/false), which goes beyond the readOnlyHint annotation. It confirms the read-only nature and expected output shape, though it does not cover edge cases 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 compact and front-loaded with the core purpose. The Returns line efficiently adds necessary output information without 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 zero-parameter getter with a readOnly annotation and no output schema, this description sufficiently explains what the tool does and what it returns. 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 tool has zero parameters, so the description carries no parameter burden. The schema fully covers the empty parameter list, 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('repeat state'). It distinguishes from siblings like toggle_repeat and get_play_state by focusing on reading the repeat 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 no guidance on when to use this tool versus alternatives such as toggle_repeat. There is no mention of conditions, exclusions, or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_itemsARead-only
Get all selected media items.
Returns: Object with list of selected items.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral info: it states the return type ('Object with list of selected items') but does not clarify the structure of that object (e.g., item IDs, names, or how to access the list). The readOnlyHint annotation already covers safety, so the description's contribution is limited but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no fluff, and the primary action is front-loaded. It earns its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should explain the return value in more detail. 'Object with list of selected items' is vague about what constitutes an item and how to parse the object. However, for a simple read-only getter with no parameters, it may be adequate for an agent familiar with the domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description correctly has no parameter details. Per the baseline for 0-param tools, this is a 4; no additional explanation 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 verb 'get' and the resource 'selected media items', which distinguishes it from siblings like get_selected_tracks and get_selected_midi_notes. 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?
No guidance is provided on when to use this tool versus alternatives (e.g., get_selected_tracks, select_all_items). The description does not mention when not to use it or any context for selection scope, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_midi_notesARead-only
Read the MIDI notes currently SELECTED in REAPER's editor for the active take.
The escape hatch for "operate on what I've selected": select notes by hand in REAPER, call this to see which they are, then translate that into an explicit value filter (pitch range / beat window / channel) for the transform tools. Read-only, no undo.
Returns:
{ok, notes:[...], ret} - the selected notes, same shape as get_midi_notes (each note
carries item-relative start_beat/end_beat). index is REAPER's absolute PPQ-sorted
note index, so a partial selection is non-contiguous. Empty selection -> notes:[].
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral detail beyond the readOnlyHint annotation: it states 'Read-only, no undo,' describes the exact return shape, explains that `index` is REAPER's absolute PPQ-sorted note index and that a partial selection is non-contiguous, and explicitly handles the empty selection case with `notes:[]`. This fully informs the agent of edge cases and output 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 compact and well-structured: a clear opening statement, a practical usage note, and a return-value specification. Every sentence adds value, and the most important information (what the tool reads) is front-loaded before the more detailed return semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an output schema, the description thoroughly covers return types and edge cases (non-contiguous selection, empty selection). It also provides usage context. However, the parameter semantics are incomplete, and an agent might not be sure how the required track_index and item_index map to the 'active take,' preventing fully confident invocation without consulting other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for explaining parameters. It never explains track_index, item_index, or fields, nor their relationship to the 'active take' mentioned in the opening sentence. The parameter meanings are left to inference from names and sibling tools, which is a clear gap for a tool with 3 parameters and no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Read the MIDI notes currently SELECTED in REAPER's editor for the active take,' identifying a specific verb, resource, and scope. It clearly distinguishes itself from siblings like get_midi_notes (which reads all notes) and select_midi_notes (which manipulates selection) by focusing on reading the current selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when-to-use guidance: it is the 'escape hatch' for operating on what the user has selected, and instructs the agent to translate the selection into an explicit value filter for transform tools. It also notes that the operation is read-only with no undo, which helps an agent decide when to invoke it over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_tracksARead-only
Get indices of all selected tracks.
Returns: Object with list of selected track indices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint: true, and the description does not contradict this. It adds that the tool returns an object containing a list of selected track indices, which is useful behavioral context. No side effects are implied, and the description aligns with the read-only 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 extremely concise: two short sentences that front-load the verb and resource. There is no filler or redundancy. 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 read-only getter with no parameters, the description gives the basic return info, but it does not specify the exact structure of the returned object (e.g., property key, zero-based vs one-based indices). This ambiguity could cause an agent to misinterpret the result. However, the overall complexity is low, and the description covers the core 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 zero parameters, so the schema is trivially complete. The description doesn't need to add parameter information, and the baseline of 4 applies. No additional semantics are required 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 states a specific verb ('Get') and resource ('indices of all selected tracks'), clearly distinguishing it from siblings that target items or MIDI notes. The return type is also stated. It is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the operation, but it does not explicitly mention when to use this tool versus alternatives like get_selected_items or select_track. There is no guidance on exclusions or alternative conditions. The intended context is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_takesBRead-only
List all takes of a media item.
Returns: Object with 'takes' array (each entry: index, name, is_active) and 'ret' = take count.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds the concrete return shape (takes array of index/name/is_active plus a take count), which is genuinely useful context beyond the annotation, but does not cover edge cases such as what happens if the item has no takes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by a compact structured return block; every line carries information with no filler. Slightly more verbose formatting than strictly needed 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?
No output schema exists, so the description's return-value explanation is valuable and covers that gap. However, with two required, undocumented parameters, the definition is incomplete on the input side of a tool an agent must invoke with correct indices.
Complex tools with many parameters or behaviors need more documentation. Simple 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% for two required integer parameters (track_index, item_index), and the description says nothing about them. It does not clarify that indices are zero-based track/item positions, nor how they relate to the item returned by sibling tools, so it fails to compensate for the coverage 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?
States a specific verb+resource: 'List all takes of a media item', which is clearly distinct from the sibling get_active_take (singular active take) and set_active_take. It never names those siblings explicitly, so it stops short of full 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 statement of when to use this versus get_active_take, get_takes vs explode_takes/crop_to_active_take, or any prerequisite (e.g. needing a valid item). The agent gets no routing guidance among a crowded cluster of take-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tempoARead-only
Get the tempo at project start as ret, and every tempo marker as tempo_markers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, consistent with a read operation. The description adds return-value details (ret and tempo_markers) beyond the annotation, but does not specify types or structure. It provides some additional context but not rich 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 a single, efficient sentence that front-loads the core purpose and return fields. No fluff or repetition; 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?
The tool is simple and read-only, but the description leaves the return format unspecified (e.g., types of ret and tempo_markers, whether tempo_markers is an array). Without an output schema, an agent might need more detail to correctly interpret the result, though the core purpose 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?
With zero parameters and 100% schema coverage (empty schema), the baseline for parameter semantics is 4. The description does not need to elaborate on parameters, and it does not add or omit anything relevant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 project-start tempo and all tempo markers, using a specific verb ('Get') and resource ('tempo'). It distinguishes itself from set_tempo and other getters by specifying exactly what data is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. For example, get_project_summary might also expose tempo, but no comparison is made. The description simply states output without any contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_selectionARead-only
Get the current time selection.
Returns: Object with start and end times.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds the return format (Object with start and end times), which is not covered by annotations or output schema. This is useful behavioral context, though it omits details like units or behavior with no selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences with no filler. It front-loads the core purpose and immediately states the return type, making it efficient for an agent 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?
Given the simplicity (no params, read-only, simple return), the description is mostly complete. It lacks explicit mention of time units or edge cases, but for a basic getter it provides sufficient information 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 tool has zero parameters, so there is nothing for the description to elaborate. Baseline of 4 applies per rubric; no additional info 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 verb 'Get' and the resource 'current time selection', distinguishing it from siblings like set_time_selection and clear_time_selection. It immediately communicates the tool's read-only 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?
There is no explicit guidance on when to use this tool versus alternatives. Usage is implied by the name and the presence of set/clear siblings, but the description itself does not mention when to choose it over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_signatureARead-only
Get the project time signature.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that this is a safe read operation. The description adds no behavioral details beyond that, such as the returned format or units, but for a parameterless getter this is a minor gap rather than a serious omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler. It front-loads the operation and resource immediately, and every word contributes to 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?
For a zero-parameter, read-only, simple getter, the description is fully sufficient. There is no schema or parameter complexity to document, and the sentence conveys exactly what the tool returns without requiring extra context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics is not a concern. The baseline of 4 applies because there is nothing for the description to elaborate on; it correctly avoids inventing meaningless 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 verb 'Get' and the resource 'project time signature'. It is distinguishable from the sibling set_time_signature and other project getters, leaving no ambiguity about what information this tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. The name and description imply it is the read counterpart to set_time_signature, but there is no explicit mention of when to prefer it or what conditions make it appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackBRead-only
Get information about a track.
Returns: Object with 'info': guid, name, volume, volume_db, pan, muted, soloed, has_midi, has_audio, fx_names, role.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only safety profile is covered. The description adds the return shape but does not disclose additional behavioral traits such as error handling for out-of-range track_index or any constraints beyond the basic 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: one clear purpose sentence followed by a concise return-field list. No words are 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 return fields are documented, which is important because there is no output schema. However, the single required parameter is left under-described, and error behavior is absent, so the definition 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?
Schema description coverage is 0%, and the description never mentions track_index or its semantics (e.g., zero-based indexing, valid range). The agent is left with only the parameter name and integer type, which is not enough for reliable 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 states a specific verb ('Get') and resource ('a track'), and the return field list makes it clear this is a general track-info getter. It is distinguishable from siblings like get_track_peak or get_track_fx_chunk, though it does not explicitly call out that distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus the many related track getters, nor any exclusions or alternatives. The usage is only implied by the name and basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_countARead-only
Get the total number of tracks in the current REAPER project (excluding master track).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, and the description is consistent with that by using 'Get the total number'—a safe read operation. It adds useful behavioral scope beyond the annotation by clarifying that the master track is not counted, which is a meaningful edge-case 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 a single well-structured sentence that front-loads the action ('Get the total number of tracks') and immediately specifies the scope and exclusion. 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 zero-parameter, read-only counting tool with no output schema, the description is complete: an agent knows exactly what is counted, what is excluded, and that the result is a track count. No additional context is needed 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?
The tool has zero parameters and the schema is an empty object, so there is no parameter semantics burden on the description. This matches the baseline of 4 for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it gets the total number of tracks in the current REAPER project. It also disambiguates the scope by explicitly excluding the master track, which differentiates it from related track-querying siblings like get_all_tracks and get_master_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 clear context by specifying 'current REAPER project' and 'excluding master track', so an agent can infer when to use this read-only counting tool. It does not explicitly name alternative tools or provide when-not-to-use conditions, but for a zero-parameter query this level of context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_envelopeBRead-only
Get a track envelope by name.
Args: envelope_name: Envelope name (e.g., "Volume", "Pan", "Mute").
Returns: Object with envelope info.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| envelope_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, so the description does not need to explain side effects. It adds only a minimal return expectation ('Object with envelope info') and no deeper behavioral context such as what the returned envelope object contains. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and uses clear Args/Returns sections. Every sentence adds essential orientation, and there is no unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 2-parameter required tool with no output schema and no schema descriptions, the description is incomplete: it omits track_index, gives only a vague return description, and provides no differentiation from sibling envelope tools. The readOnlyHint mitigates safety concerns, but the agent cannot fully determine correct invocation or result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents envelope_name with useful examples ('Volume', 'Pan', 'Mute'), but it omits the required track_index parameter entirely, leaving the agent without a documented meaning for that 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 states a specific verb and resource: 'Get a track envelope by name.' It clearly identifies the object and the lookup key, and the 'track envelope' wording distinguishes it from fx-envelope siblings like get_fx_envelope, though it does not explicitly contrast 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?
No guidance is given about when to use this tool versus alternative envelope-related tools such as get_fx_envelope, get_envelope_points, or arm_track_envelope. The context in which get_track_envelope is preferred is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_fx_chunkARead-only
Get the raw state chunk from an FX plugin (includes preset/state data).
Useful for reading VSTi state data like Toontrack EZkeys chord progressions. The chunk contains the full serialized state of the plugin.
Returns: Object with 'chunk' containing the FX state data string.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context by explaining that the tool returns the full serialized plugin state and specifying the return shape: 'Object with "chunk" containing the FX state data string.' This goes beyond the minimal 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 short, front-loaded with the core action, and includes a concrete use case and return shape. Every sentence adds value, though the phrase 'includes preset/state data' is somewhat redundant with 'full serialized state.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 what the tool returns and gives a practical example, but it does not clarify how the two parameters map to the track/FX context, differentiate track FX from take FX (relevant given sibling tools like take_fx_get_name), or describe potential edge cases. It is adequate for a simple read tool but leaves 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?
Schema description coverage is 0%, so the description must compensate for explaining track_index and fx_index. It does not mention either parameter or describe how they identify the plugin, leaving the agent to infer from names alone. The parameter names are somewhat self-explanatory, but the description adds no 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 uses a specific verb and resource: 'Get the raw state chunk from an FX plugin.' It distinguishes itself from related FX tools by emphasizing 'raw state chunk' and 'full serialized state,' which clearly separates it from preset-name or parameter-level getters like get_fx_preset or track_fx_get_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 a clear use case: 'Useful for reading VSTi state data like Toontrack EZkeys chord progressions.' This gives context for when to use the tool, though it does not explicitly 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.
get_track_itemsCRead-only
Get all media items on a track.
Returns: Object with list of items.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call read-only, so no mutation disclosure is needed, but the description adds only a generic return shape and no information about indexing, empty results, ordering, or error behavior. It provides little behavioral context beyond what the name and annotation imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, front-loaded with the action. It is concise but sacrifices needed detail, so it earns high marks for structure rather than perfect marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 this is close, but with no output schema and no parameter explanation, the description fails to fully equip an agent to call it correctly. The return statement is too vague to know what the item list contains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 exposes only a bare integer track_index with 0% description coverage, and the description never defines the index base, scope, or what 'track' refers to. An agent is left to guess whether the index is 0-based, 1-based, or a track ID.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource: retrieve all media items for a track. The phrase 'all media items' distinguishes it from singular tools like get_midi_item or get_item_info, and the return statement reinforces 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 offers no guidance on when to choose this tool instead of siblings such as get_takes, get_item_info, or get_track, nor does it explain how track_index should be interpreted. Usage is only implied by the tool name and verb phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_master_sendARead-only
Get the master/parent send state of a track.
Returns: Object with 'ret' field (1 = enabled, 0 = disabled).
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds the return value semantics ('ret' field with 1/0 meaning), which is useful but does not disclose error behavior, track-index validity, or other operational details 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 definition is two compact sentences with no wasted words. The primary purpose is front-loaded, followed immediately by the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 getter with no output schema, the description supplies the return field meaning, which helps the agent interpret results. The main remaining gap is track_index semantics, but the basic purpose and output shape are covered adequately.
Complex tools with many parameters or behaviors need more documentation. Simple 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 single required parameter, track_index. The description only implies that it identifies 'a track' and does not clarify indexing base, range, or any other semantics, so it fails to compensate 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 uses a specific verb ('Get') and resource ('master/parent send state of a track'), making it easy to distinguish from sibling setters such as set_track_master_send and from other send-related tools like get_track_num_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?
Usage is implied by the getter phrasing: an agent would use this when it needs to inspect a track's master/parent send state. However, the description does not explicitly say when to choose this over alternatives or mention related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_num_sendsARead-only
Get the number of sends from a track.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation and clearly indicates a non-mutating query. It does not add extra behavioral context beyond the annotation, such as what exactly counts as a send or whether the result is a simple integer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler or redundant information. It efficiently conveys the core 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?
For a simple read-only getter, the description is minimally adequate. However, it lacks parameter clarification and does not explicitly state the return type or counting semantics, which would be more important because there is no 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 must compensate for the undocumented track_index parameter. It only says 'from a track' and does not clarify whether track_index is zero-based, how to resolve invalid indices, or what value range is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: getting the number of sends from a track. It is immediately distinguishable from mutation siblings like create_send, delete_send, and set_send_volume, and from count tools like get_track_count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 description: call this when you need the send count for a track. However, there is no explicit guidance about when to use this over alternatives, nor any mention of indexing conventions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_peakBRead-only
Get the current peak level of a track.
Args: channel: Channel (0=left, 1=right).
Returns: Object with peak value in dB.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile. The description adds some useful context by stating that the return value is an object with peak value in dB, but it does not clarify whether this is a momentary sample, meter value, or how it behaves during playback/stopped states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and well-structured with Args and Returns sections. It loses a point because the Args section is incomplete, omitting the required parameter, though this is more a completeness issue than a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter, the description is mostly adequate but not fully complete. It explains channel and the return value, yet leaves track_index semantics and the exact shape of the returned object unspecified, especially with no output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple 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 document parameters. It explains channel meaningfully ('0=left, 1=right') but completely omits the required track_index parameter, leaving its semantics and indexing 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 description begins with a specific action and resource: 'Get the current peak level of a track.' The word 'current' clearly distinguishes this from the sibling get_track_peak_hold, and the read-only nature is evident from 'Get.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over alternatives such as get_track_peak_hold. The description states what it does but not when an agent should choose it instead of a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_peak_holdARead-only
Get the peak hold level of a track (highest peak since meters were last reset).
Returns the max peak from a previous playback without needing to be actively playing - play the project, stop, then call this for gain staging.
Args: channel: Channel (0=left, 1=right).
Returns: Object with peak hold value in dB.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint; the description adds real behavioral context: the value is a max since last meter reset, persists after playback stops, and is expressed in dB. It does not describe reset semantics beyond 'meters were last reset' or the exact response field 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?
Front-loaded with the core definition, then when-to-use, args, and returns. The Args/Returns blocks are slightly verbose for two parameters but every section carries information, especially since there is no output 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?
With no output schema, the description compensates by stating the return is an object with a peak hold value in dB (though not the field key). Combined with the usage note, this is nearly complete for a simple read 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 carry the load. It usefully documents channel (0=left, 1=right) with the default behavior implied, but track_index is never explained and no overall parameter guidance is 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?
States a specific verb+resource and clarifies the exact scope: the highest peak since meters were last reset, returned as dB. This implicitly separates it from get_track_peak (instantaneous level), but it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage workflow (play the project, stop, then call this for gain staging) and notes it works without active playback, which contextualizes when it beats a live meter read. It stops short of naming the alternative tool or stating exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_undo_stateARead-only
Get the current undo/redo state.
Returns: Object with undo and redo descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals safety; the description adds a brief return-shape detail (object with undo and redo descriptions). It does not explain what a description contains or how empty state is represented, but this is acceptable for a no-argument 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?
Two short, front-loaded sentences state the action and the return shape without waste. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only tool with no output schema, the description covers the core contract: what it returns and that it concerns undo/redo state. There are no meaningful gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description has no parameter burden. The baseline of 4 applies, and the description doesn't introduce any confusing or redundant parameter language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get the current undo/redo state') and further clarifies the returned data as an object containing undo and redo descriptions. This makes its purpose unmistakable and distinguishes it from action tools like undo and redo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance or comparison to alternatives is provided. It does not state, for example, that this should be used to inspect state before calling undo/redo, leaving the usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_to_markerB
Move the edit cursor to a marker.
| Name | Required | Description | Default |
|---|---|---|---|
| marker_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide destructiveHint=false, and the description correctly describes a non-destructive cursor move without contradicting that. It adds the useful detail that the edit cursor is what moves, but does not disclose whether playback is affected or how invalid indices are handled. For a simple navigation 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 a single, front-loaded sentence with no filler. Every word earns its place, and nothing important could be removed 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 tool is simple, with one required integer parameter and no nested objects or output schema. However, a fully invocation-ready description should clarify marker_index semantics and point to get_markers as the source of valid indices. The current text conveys intent but leaves the exact contract under-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?
Schema description coverage is 0%, so the description needed to clarify marker_index semantics. It does not specify whether the index is zero-based or one-based, what the valid range is, or that the index should come from get_markers. The parameter name is self-descriptive at a surface level, but the actual calling contract remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Move'), names the affected resource ('edit cursor'), and names the destination ('a marker'). This clearly distinguishes it from siblings like go_to_region, set_cursor_position, and get_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 gives no guidance about when to use this tool over alternatives, notably the sibling go_to_region. It also does not mention that marker indices should be obtained from get_markers or address any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_to_regionB
Move the edit cursor to a region start.
| Name | Required | Description | Default |
|---|---|---|---|
| region_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description succinctly states the effect — moving the cursor — which is the core behavioral trait. Annotations already set destructiveHint to false, so no contradiction exists. However, it does not add context about edge cases (e.g., invalid region_index) or what the cursor movement implies for playback, though this is minor for such a 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 a single clear sentence with no redundant words. It is well-structured and front-loaded, but the extreme brevity sacrifices needed parameter context — though that is more a completeness issue than a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 only one parameter with zero schema description and no output schema, the description must compensate but fails to explain the region_index semantics. The tool is otherwise simple and non-destructive, yet the parameter gap makes it 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?
Schema description coverage is 0% and the description never mentions the region_index parameter. It only says 'a region start' without clarifying that the index refers to the region list, whether it is zero-based, or any constraints. The agent must guess the meaning of the sole required parameter, a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does — moves the edit cursor to a region start — using a clear verb and resource. It is distinguishable from the sibling go_to_marker, which targets markers, so there is 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 provides no guidance on when to use this tool versus alternatives like go_to_marker or other navigation commands. It does not mention context, preconditions, or exclusions, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
humanize_midi_notesA
Humanize MIDI: nudge timing and velocity by small random amounts, reproducibly.
Each note gets its own timing and velocity offset drawn from a bell curve. Note lengths are preserved (start and end move together) and pitches are never touched. The randomness is seeded, so the same take with the same seed and settings gives identical results every time. Velocities are clamped to 1-127 and counted in clamped; notes pushed past the item end are kept and reported in out_of_bounds.
Unlike the other timing tools, a note pushed before the item start is placed at the item start and counted in out_of_bounds, not clamped; clamped here counts only the velocity clamp.
Args: timing: Timing spread in beats (standard deviation); 0.02 is a subtle human feel, 0.0 leaves timing alone. velocity: Velocity spread (standard deviation, in velocity units); 0.0 leaves velocity alone. seed: Any integer. The same seed, settings and take give the same result. max_sigma: Cap on how far one note may stray, in multiples of the spread.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| fields | No | ||
| timing | No | ||
| channel | No | ||
| end_beat | No | ||
| velocity | No | ||
| max_sigma | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint: false, so the description carries the full burden and exceeds it. It discloses that pitches are never touched, lengths are preserved, velocities are clamped to 1-127, notes pushed past the item end are kept and reported, and that randomness is seeded and reproducible. It also explains the difference in clamping behavior for notes before the item start. This is comprehensive and goes far beyond the minimal 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 paragraph explaining the core behavior and edge cases, then a concise bullet list of key parameters. Every sentence adds value, and the most important behavioral details are front-loaded. 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?
Given the tool's complexity (13 parameters, no output schema), the description covers the core behavior well but leaves many parameters undefined. It does not explain what the function returns (e.g., the structure of 'out_of_bounds' or 'clamped' results) nor the purpose of parameters like 'fields', 'return_notes', or the pitch/beat range filters. An agent would need to infer or guess these, which is a 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 has 0% description coverage, so the description must explain parameters. It does explain four key parameters (timing, velocity, seed, max_sigma) with meaningful details like standard deviation and defaults. However, it leaves nine other parameters (track_index, item_index, fields, channel, start_beat, end_beat, pitch_low, pitch_high, return_notes) unexplained. While some are self-explanatory by name, the description does not fully compensate 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 starts with a clear verb+resource: 'Humanize MIDI: nudge timing and velocity by small random amounts, reproducibly.' It precisely states what the tool does and even differentiates from sibling tools by noting 'Unlike the other timing tools' and explaining a specific behavioral difference. This makes it easy for an agent to know exactly 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 a clear behavioral distinction from 'other timing tools' (clamping vs. clamping behavior for out-of-bounds notes), which helps an agent decide when to use this tool. However, it does not explicitly state 'use this when you want a natural, human feel' or name specific alternatives like quantize or nudge, leaving some inference to the agent. It is close to explicit but could be more direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_audio_fileB
Insert an audio file onto a track.
Args: file_path: Full path to the audio file. position: Position in seconds.
Returns: Object with track_index, item_index of the created item, and position.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| file_path | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, and the description adds that a new item is created and describes the return object. It does not cover edge cases or side effects, but it is not misleading and provides moderate 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 text is short, organized into Args and Returns sections, and contains no filler. The structure is slightly imperfect because track_index is listed as a return field but omitted from the argument 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 low-complexity tool, the description plus schema covers the core call: file path, position, track, and return fields. Missing usage guidance and the unexplained track_index argument 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 documents file_path and position, but omits the required track_index parameter from its Args section; track_index only appears in the Returns section. With schema coverage at 0%, this leaves a required argument 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 and resource: inserting an audio file onto a track. It is specific enough to separate it from MIDI-oriented siblings like create_midi_item or add_midi_note, though it never explicitly names an 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?
There is no statement about when to use this tool instead of sibling tools, nor any prerequisites or exclusions. The only context is the implicit one supplied by the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_trackA
Insert a new track at the specified index.
Args: index: Position to insert track (0-based). If not specified, adds at end. name: Optional name for the new track.
Returns: Info about the created track.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description carries some burden. It makes the mutating nature clear ('Insert') and adds that omitted index appends at the end, plus a return value. However, it does not disclose side effects like selection changes, track type, or whether the operation is undoable. With sparse annotations, 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 core action, followed by a short Args section and a one-line Returns note. Every sentence earns its place 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 two-parameter insert operation, the description is sufficient: both parameters are explained and the return value is mentioned. The only gap is that 'Info about the created track' is vague about the exact shape, and no output schema exists to fill that 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%, so the description must fully explain the parameters. It does: index is 0-based, optional, and defaults to appending at the end; name is optional. This adds meaning that the bare input schema completely 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 opens with a specific verb and resource: 'Insert a new track at the specified index.' This clearly distinguishes it from sibling tools like delete_track, set_track_name, and create_bus. 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 gives clear context for how to use the tool: provide an index to insert at a specific position, or omit it to append at the end. It does not explicitly name alternatives or exclusions, but the usage context is clear enough for an agent to decide when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legato_midi_notesA
Close the gaps in a MIDI line (legato), or set every note to one length.
Only note ends move; starts are never touched. "connect" extends each note's end to the next onset and never shortens anything; a gap wider than max_gap_beats is left as a rest and counted in gaps_preserved, and the last note is left alone. "fixed" instead sets every targeted note's length to length_beats. Notes whose new end passes the item end are kept and reported in out_of_bounds.
Args: mode: "connect" (extend each end to the next onset) or "fixed" (set every length). voice: connect only. "chordal" extends to the next onset of any note, so a chord's notes move together; "per_pitch" extends to the next note of the SAME pitch and channel, keeping interleaved voices independent. max_gap_beats: connect only. Gaps wider than this are left as rests (>= 0). length_beats: fixed only. The length every targeted note is set to (> 0).
Returns: {ok, notes_changed, clamped, skipped, out_of_bounds, gaps_preserved, notes:[...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | connect | |
| voice | No | chordal | |
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| length_beats | No | ||
| return_notes | No | ||
| max_gap_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides extensive behavioral detail beyond the destructiveHint annotation: starts never move, 'connect' never shortens, gaps preserved, out-of-bounds notes reported. This fully informs the agent about side effects and 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 well-structured with an opening purpose, mode explanations, and a returns section. It is reasonably concise given the complexity, though the arg list is somewhat repetitive with the schema definitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 13 parameters and no output schema, the description leaves major gaps: filtering mechanism, what 'targeted note' means, and the role of return_notes are unclear. An agent cannot confidently construct a correct call without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 explains only 4 of 13 parameters (mode, voice, max_gap_beats, length_beats). Critical targeting parameters like track_index, item_index, fields, channel, pitch range, and start/end beat are entirely unaddressed, leaving the agent guessing how to select notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation (closing gaps or setting fixed lengths) on a MIDI line, with a clear verb and resource. It distinguishes itself from siblings like quantize, stretch, and humanize by focusing on note ends and legato 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?
It explains when to use 'connect' vs 'fixed' modes and clarifies the voice parameter's role in chordal vs per-pitch processing. However, it does not explicitly mention alternatives or when not to use this tool versus other MIDI editing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_loudnessARead-only
Measure loudness as REAPER's loudness window does: integrated LUFS, short-term and momentary max, loudness range, sample peak, plus true peak.
Target: the master (default), a track, or one item (its track's output over the item, other items muted). start_time/end_time limit it to a range. It runs a render dry run, so it writes no files, puts selections back and adds no undo step. Measuring the master marks the project as modified, even though nothing in it changes.
Returns: integrated_lufs, short_term_max_lufs, momentary_max_lufs, loudness_range_lu, sample_peak_dbfs, true_peak_dbtp, samples_over_0dbfs, duration; a note when a figure is approximate or unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | ||
| item_index | No | ||
| start_time | No | ||
| track_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true available, the description adds substantial behavioral context beyond annotations: it runs a render dry run, writes no files, restores selections, adds no undo step, and discloses the non-obvious side effect that measuring the master marks the project modified. That caveat is exactly the kind of trait annotations cannot express.
Agents need to know what a tool does to the 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 blocks — what it measures, how the target/range work, and what it returns — with the metric list front-loaded and zero filler. Every sentence carries information the agent cannot get from 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 read-only measurement tool with no output schema and undocumented parameters, the description is complete: it covers metric definitions, target/range semantics, side effects, and the full return field list including the approximate/unavailable note. Nothing needed to invoke or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the load and mostly does: start_time/end_time limit the measurement range, track_index selects a track or defaults to master, and item_index measures one item's track output with other items muted. It leaves minor ambiguity (e.g., whether item_index is global or per-track, that -1 means master), keeping it out of the top 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?
States a specific verb+resource (measure loudness) and enumerates the exact metric set (integrated LUFS, short-term/momentary max, LRA, sample peak, true peak). It also distinguishes itself from the sibling measure_spectrum by naming the loudness-window behavior, so an agent can tell them apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines the target choices (master default, a track, or one item) and the start_time/end_time scoping condition, which is real when-to-use guidance. It stops short of naming alternatives or exclusions against measure_spectrum, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_spectrumARead-only
Measure tonal balance and stereo image: octave-band levels (31.5 Hz to 16 kHz), spectral centroid, tilt in dB per octave, stereo correlation overall and below 150 Hz, side-to-mid level and left/right balance.
Same targets and range as measure_loudness. Levels are dBFS with a full-scale sine at 0, as in REAPER. Needs the TwelveTake MCP Analyzer, which --install-bridge installs.
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | ||
| item_index | No | ||
| start_time | No | ||
| track_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give readOnlyHint=true; the description adds real behavior beyond that: the measurement unit convention (dBFS, full-scale sine at 0, 'as in REAPER') and the external-analyzer dependency/install path. That dependency disclosure is exactly the kind of trait annotations cannot carry. It does not cover computational cost or failure behavior when the analyzer is absent, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the metric list, then the two operational caveats (unit convention, install requirement) in terse sentences. Dense but each sentence earns its place; the enumerated metrics could arguably be trimmed but they substitute for a missing output 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?
With no output schema, the description usefully enumerates what gets returned and in what units, and it flags the external dependency — enough for an agent to call it correctly in the happy path. The remaining gap is scoping semantics: how the four un-documented parameters limit or target the measurement.
Complex tools with many parameters or behaviors need more documentation. Simple 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% across four parameters (start_time, end_time, track_index, item_index), so the description must compensate and largely does not. 'Same targets and range as measure_loudness' is an indirect hint that the time/index parameters scope the measurement, but nothing states the meaning of track_index=-1, the time units, or how item_index interacts with track_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?
Names a specific action ('Measure') plus the exact resource and the outputs: octave-band levels 31.5 Hz to 16 kHz, spectral centroid, tilt, stereo correlation, side-to-mid, L/R balance. An agent can distinguish it from measure_loudness and from analysis-adjacent siblings purely from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States a clear relationship to the sibling measure_loudness ('Same targets and range') and warns of a hard prerequisite (the TwelveTake MCP Analyzer, installed via --install-bridge), which is genuinely actionable. It stops short of explicit when-to-use/when-not guidance or naming the alternative to call for loudness-only needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nudge_midi_notesA
Shift MIDI notes in time by a number of beats (+ = later, - = earlier).
Start and end move together, so note lengths are preserved. A note pushed before the
item start clamps to it and one pushed past the item end is left there; both count in
out_of_bounds, not clamped.
Args: amount_beats: Signed beat shift (0.25 = a 16th later, -1.0 = a beat earlier). 0 = no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| amount_beats | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the sparse annotations: note lengths are preserved, clamping behavior at item boundaries is specified, and the out_of_bounds vs clamped distinction is disclosed. This is valuable context for an agent 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 compact and front-loaded with the core behavior, followed by useful edge-case semantics and a parameter note. It wastes no words, though the Args section is incomplete relative to the actual parameter set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema, and no parameter descriptions in the schema, the description is not complete enough for reliable invocation. It explains only one parameter and does not describe the return value or the role of filtering parameters like channel, pitch range, or start/end beat.
Complex tools with many parameters or behaviors need more documentation. Simple 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 10 undocumented parameters. It only explains amount_beats, leaving track_index, item_index, fields, channel, pitch_low, pitch_high, start_beat, end_beat, and return_notes unexplained. The amount_beats explanation is good, but the majority of parameters remain opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 operation: shifting MIDI notes in time by beats, with sign convention. It distinguishes itself from sibling MIDI tools by focusing on temporal nudge rather than pitch, velocity, or quantization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 implied by the description ('Shift MIDI notes in time'), but it does not explicitly state when to prefer this over alternatives like transpose_midi_notes, stretch_midi_notes, or quantize_midi_notes. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectBDestructive
Open a REAPER project file.
Args: path: Full path to the .rpp file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description offers no behavioral detail beyond what the annotations already indicate (destructiveHint: true). It does not mention that opening a new project may discard unsaved changes, affect the current session, or have other side effects. The description adds no extra context, so the agent relies solely on the annotation 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?
The description is extremely concise—two sentences covering purpose and the single parameter. It is front-loaded with the action and includes the necessary detail for the argument. No wasted words or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 open operation, the description is minimally adequate: it states what it does and how to specify the file. However, given the destructive hint, it could mention consequences like overwriting the current project or losing unsaved work. There is also no mention of return values or success/failure behavior, though the lack of an output schema reduces the burden.
Complex tools with many parameters or behaviors need more documentation. Simple 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 string type for 'path', but the description adds meaningful semantics: it specifies a full path to an .rpp file. This clarifies the expected format and file extension, which is helpful beyond the bare schema. Since schema coverage is 0%, this compensation is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 opens a REAPER project file, which is a specific action on a specific resource. It does not explicitly differentiate from sibling tools like create_project or save_project, but the action is distinct enough that 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, conflicts, or situations where other tools (like create_project or save_project) would be more appropriate. The agent is left to infer usage from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paste_itemsA
Paste items from clipboard at edit cursor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description must carry most behavioral disclosure. It states the action and location accurately, but does not explain side effects such as whether pasted items are selected, how an empty clipboard is handled, or whether the operation can be undone. This is acceptable for a simple paste command 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?
A single, front-loaded sentence conveys the action, source, and destination with no wasted words. Every part contributes 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?
For a zero-parameter paste operation with only a destructiveHint annotation, the description provides the essential context: what is pasted, where it comes from, and where it goes. It does not describe return values or errors, but given the low complexity, it is sufficiently 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 tool has zero parameterswit schema coverage 100%, so the baseline is 4. The description adds no parameter details because none exist, and none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('paste') and resource ('items'), adds the source ('from clipboard') and destination ('at edit cursor'). It clearly distinguishes this from the many item manipulation siblings such as delete_item or duplicate_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: paste occurs from the clipboard at the edit cursor subset. There are no competing paste tools among the siblings, so alternative routing is not needed. It does not explicitly state prerequisites such as having copied or cut items first, but the clipboard source makes the intended workflow evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pauseB
Pause playback in REAPER.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only includes destructiveHint=false, which is minimal. The description states the action but does not describe side effects, such as whether the cursor position remains, whether it affects recording, or if it resumes from the same point. There is no contradiction with annotations, but the description adds little beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence with no filler. It is front-loaded with the action and resource. Every word earns its place, making it highly scannable and efficient 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?
Given the simplicity of the tool (no params, no output schema, no complex behavior), the description is nearly complete for its purpose. However, it lacks any mention of the relationship to playback state or potential differences from 'stop', which are relevant given the sibling tools. It is adequate but leaves a small gap for an agent unfamiliar with DAW 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?
There are no parameters, and the schema coverage is 100% (vacuously true). Since there are no parameters to explain, the description does not need to add parameter semantics. The baseline for zero parameters is 4, and the description does not need to compensate for any undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is very short: 'Pause playback in REAPER.' It clearly states the action (pause) and the resource (playback), which is specific enough to distinguish from sibling tools like 'play' and 'stop'. It is less detailed than a fuller description but still conveys the primary purpose 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?
There is no guidance on when to use this tool versus alternatives like 'stop' or 'play'. While the name and description suggest it pauses transport, it does not clarify the difference between pausing and stopping, which could confuse an agent deciding between 'pause', 'stop', and 'toggle_repeat'. No explicit 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playA
Start playback in REAPER.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description names the core effect—starting playback—while the annotation already communicates non-destructiveness. However, it does not add context such as whether playback resumes from the current play cursor or what happens if playback is already active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place, and it is easily parsed in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 transport command with a destructiveHint annotation and no output schema, the description is nearly complete. The only gap is the lack of relationship guidance to sibling transport controls, which is already penalized under 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?
The tool has zero parameters, so parameter semantics are trivially satisfied. The baseline of 4 applies because there is no parameter information the description could or needs to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Start playback in REAPER.' It clearly identifies the action and is instantly distinguishable from sibling tools like pause, stop, record, and toggle_repeat, even without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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. With siblings such as pause, stop, record, and get_play_state nearby, an agent is not told under what conditions play should be chosen, nor when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quantize_midi_notesA
Quantize MIDI note onsets onto the grid (tighten sloppy timing, add swing).
Onsets snap to the PROJECT bar/beat grid, not to an offset from the item's own start,
and note lengths are preserved: start and end move together. Notes that land past the
item end are kept, and one that would land before the item start is placed at it; both
are counted in out_of_bounds (clamped stays 0 here).
Args: grid: Grid spacing in beats: 0.25 = 1/16, 0.5 = 1/8, 1.0 = 1/4. Must be > 0. strength: 0.0-1.0. 1.0 snaps exactly onto the grid, 0.5 moves each note halfway there, 0.0 is a no-op. swing: 0.0-1.0. 0.0 = straight, 1.0 = full triplet feel (off-beats at 66.7%), scaling linearly between. Only the off-beat (odd) grid cells are delayed.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | ||
| swing | No | ||
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| strength | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by detailing edge cases (notes past item end kept, before start clamped), the counting of out_of_bounds, and the exact semantics of strength and swing. It discloses the non-destructive nature implied by destructiveHint=false and adds substantial behavioral context, making it highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, a behavioral paragraph, and an args section. It is appropriately detailed for the tool's complexity, but the long list of parameters could be more concise. The front-loaded purpose 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?
Despite a thorough explanation of the quantization behavior, the description omits critical context: it does not explain the filtering parameters (fields, channel, pitch range, start/end beats) or the return value structure (though it mentions out_of_bounds/clamped). With no output schema and 12 params, an agent lacks complete information to correctly invoke the tool for all 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 schema has 12 parameters with 0% description coverage, so the description must compensate. It explains only three parameters (grid, strength, swing) in detail, but leaves the others (fields, channel, pitch_low, pitch_high, start_beat, end_beat, return_notes, etc.) unexplained. An agent would not know the purpose or constraints of these remaining parameters from the description 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's function: quantize MIDI note onsets onto the grid, with explicit mention of tightening timing and adding swing. It identifies the specific resource (MIDI notes) and the action (quantize), distinguishing it from other MIDI editing tools like humanize or snap-to-scale, even though it doesn't name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (when quantizing note onsets to the grid) and explains its behavior (snaps to project grid, preserves lengths, handles out-of-bounds). However, it does not explicitly mention alternatives or when not to use it, such as distinguishing from snap_midi_notes_to_scale or nudge_midi_notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ramp_midi_note_velocitiesA
Apply a linear velocity ramp (crescendo / decrescendo) across MIDI notes.
Velocities interpolate by onset: the earliest note in the filtered set gets start_velocity, the latest gets end_velocity, everything between is linear. Notes sharing an onset (a chord) get the same velocity. Results clamp to 1-127.
Args: start_velocity: Velocity at the earliest onset (1-127; out of range clamps, not an error). end_velocity: Velocity at the latest onset (1-127).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| end_velocity | Yes | ||
| return_notes | No | ||
| start_velocity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the single destructiveHint false annotation, the description discloses several behavioral specifics: interpolation is by onset, chords get same velocity, results clamp to 1-127, and out-of-range velocities clamp rather than error. This adds real value. However, it omits any mention of return behavior (despite a return_notes parameter) and the filtering mechanism, which are relevant 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. It leads with the purpose, follows with a clear algorithm explanation, and lists the two key parameters with annotations. No redundant information; every sentence contributes to understanding the core behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema, and minimal annotations, the description is incomplete. It does not explain how the filtered note set is determined (the role of track_index, item_index, channel, pitch, beat filters) nor what the tool returns (return_notes). This leaves critical usage knowledge missing, especially for a tool with such a large parameter surface.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only covers start_velocity and end_velocity (including clamping behavior), but leaves the other 9 parameters (track_index, item_index, fields, channel, pitch_low/high, start_beat/end_beat, return_notes) entirely unexplained. The agent must guess their meaning from names alone, which is insufficient 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 a specific operation: applying a linear velocity ramp (crescendo/decrescendo) across MIDI notes. It uses a precise verb and resource, and the interpolation details (by onset, linear, chords share velocity) make the purpose unmistakable and distinct from sibling tools like scale_midi_note_velocities or humanize_midi_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 no guidance on when to use this tool versus alternatives. It does not mention conditions (e.g., 'when you need a gradual dynamic change') or exclusions ('do not use for uniform scaling'). It only describes what the tool does, leaving the agent to infer applicability from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recordA
Start recording in REAPER.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares destructiveHint=false, and the description clearly communicates the core state change of starting recording. It adds no details about side effects or prerequisites, but for a zero-parameter command this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler. Every word contributes to meaning, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and low operational complexity, the description is nearly complete. A note about transport state or recording preconditions would add clarity but is not essential 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 parameters, so there is no parameter detail for the description to add. The zero-parameter baseline of 4 applies appropriately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 imperative action and target ('Start recording in REAPER') rather than merely restating the tool name. The action is unambiguous, though it does not explicitly differentiate itself from related transport tools like play, stop, or pause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 implied by the action: call this when recording should begin. However, it provides no explicit guidance about prerequisites, exclusions, or alternatives among the many sibling transport and playback tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redoADestructive
Redo the last undone action in REAPER.
Returns: Object with redo description.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows this tool mutates state. The description does not add further behavioral context such as failure behavior when there is nothing to redo, but it does not contradict the annotation. With annotation coverage present, the description is minimally 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 states the action, another states the return type. There is no wasted text, and the core purpose appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers purpose and return shape sufficiently. It does not mention behavior when the undo history is empty, 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?
The input schema has zero parameters, so there is nothing for the description to elaborate on. The baseline for a no-parameter tool is 4, and the description does not need to compensate for missing schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Redo the last undone action in REAPER.' This clearly distinguishes redo from sibling tools like undo and get_undo_state. The action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (redo pairs with undo) but provides no explicit guidance about when to use it, prerequisites like an existing undo history, or comparisons to alternatives. An agent can infer the intent, but no direct routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_overlapping_midi_notesADestructive
Clean up overlapping MIDI notes (same pitch stacked on itself).
Two notes conflict only if they share a pitch AND a channel AND overlap in time, so a chord is never a conflict and notes that merely touch are left alone. "trim" shortens the earlier note to stop where the next begins, losing nothing; "delete" drops one note of each overlapping pair, keeping the louder (ties go to the longer note).
Either mode can remove notes: notes stacked on the exact same onset collapse to the loudest, since there is nothing to trim between them, and a trim left shorter than min_length_beats is removed rather than left as a click.
Args: mode: "trim" (shorten the earlier note) or "delete" (drop the quieter note). min_length_beats: A trimmed note left shorter than this is removed instead. Default 1/128 of a beat; 0 disables it. pitch_low, pitch_high: Notes outside the filter are invisible: never touched, and never counted as an overlap partner.
Returns: {ok, mode, notes_changed, clamped, skipped, out_of_bounds, notes_removed, trimmed, deduped, deleted, notes:[...]} where notes_removed = deduped + deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | trim | |
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No | ||
| min_length_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses substantial behavioral detail: both modes can remove notes, same-onset stacks collapse to the loudest, trimmed notes shorter than min_length_beats are removed, and pitch filtering makes notes invisible to the operation. It also explains the return counters and the relationship notes_removed = deduped + deleted.
Agents need to know what a tool does to the world before calling 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 purpose, a precise conflict rule, mode semantics, edge-case behavior, an Args list, and a Returns summary. Every sentence contributes meaningful information and the structure makes the long parameter list navigable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the core overlap behavior and return shape are thoroughly explained, the description omits several parameters that affect invocation, including the required track_index/item_index, channel filtering, start/end beat bounds, fields, and return_notes. For an 11-parameter destructive tool with no output schema, this is a significant 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?
With 0% schema description coverage, the description must document parameters, but it only explains mode, min_length_beats, and pitch_low/pitch_high. The required track_index and item_index, plus channel, fields, start_beat, end_beat, and return_notes, are left undocumented, so an agent cannot fully determine how 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 specific verb and resource ('Clean up overlapping MIDI notes') and precisely defines what counts as a conflict (same pitch AND channel AND time overlap), which distinguishes it from sibling MIDI editing tools. It also clarifies what is not a conflict (chords, touching notes), leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear applicability context by defining the exact overlap condition and explaining the two modes, so an agent can determine when this tool fits. It does not explicitly name alternatives or state when not to use it, but the conflict definition effectively scopes the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_projectADestructive
Render the project's master mix to an audio file (uses REAPER's last render settings for format details; a .wav extension selects WAV output).
If the target file already exists, this returns an error unless overwrite=True (which deletes the existing file first). This is explicit because REAPER's own behavior on existing files (prompt vs auto-increment) is a user preference, and the overwrite prompt blocks unattended rendering.
Args: output_path: Full path for output file (extension determines format). start_time: Start time in seconds (None = project start). end_time: End time in seconds (None = project end). tail_seconds: Extra seconds to render at end for reverb tails. overwrite: True to replace an existing file at output_path.
Returns: Object with render status and REAPER's computed output target(s).
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | ||
| overwrite | No | ||
| start_time | No | ||
| output_path | Yes | ||
| tail_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint: true is consistent with the stated overwrite behavior ('which deletes the existing file first'), so no contradiction. The description adds substantial behavioral detail beyond the annotation: error-on-existing-file unless overwrite=True, format determined by REAPER's last render settings, and the rationale that REAPER's overwrite prompt blocks unattended rendering. This is context the annotation alone cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by a behavior note, then a clean Args section, then Returns. The overwrite rationale is somewhat verbose but earns its place because it explains non-obvious behavior that would otherwise confuse an agent invoking the tool unattended. 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?
All five parameters, the format behavior, and the overwrite semantics are covered, leaving little ambiguity about how to call the tool. The one gap is the Returns statement—'Object with render status and REAPER's computed output target(s)'—which lacks field-level detail, and with no output schema available, the agent must guess the return structure. Minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple 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 (output_path, start_time, end_time, tail_seconds, overwrite) has a dedicated line with type semantics and defaults ('None = project start'). This exceeds the minimum expected from a bare schema that supplies only 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 sentence states a specific verb and resource: 'Render the project's master mix to an audio file.' This is unambiguous and immediately distinct from the sibling render_region, which targets a region rather than the entire master mix. The purpose requires no inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 context for the tool itself (format selection via extension, time-range semantics, overwrite handling) but offers no explicit differentiation from the closely related sibling render_region. No 'when not to use' or alternative-routing guidance is present, so usage boundaries are implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_regionADestructive
NOT IMPLEMENTED. Use render_project with the region's start/end from get_regions.
Args: output_path: Full path for output file.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| region_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral fact beyond what annotations convey: the tool is not implemented. It also steers the agent to a working alternative. The destructiveHint=true annotation is not contradicted, and the stub status is enough to prevent an agent from actually calling 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 warning is front-loaded and the alternative is stated in a single clear sentence. The Args block is minimal and scannable; there is no filler 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?
For a stub, the essential context is present: don't call this tool, use render_project, and get region bounds via get_regions. It is sufficient to prevent misuse, though a functional version would need region_index semantics and return-value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 for explaining parameters. It documents output_path as 'Full path for output file' but never mentions region_index, leaving a required parameter completely 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 does not actually state what render_region does; it only marks the tool as NOT IMPLEMENTED and points to render_project. This is a clear status signal, but the intended verb+resource behavior must be inferred from the tool name, so purpose clarity is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs the agent to use render_project instead and specifies how to obtain the needed data: 'with the region's start/end from get_regions.' This is direct, actionable routing guidance that resolves ambiguity with the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_actionCDestructive
Run a REAPER action by command ID.
Args: action_id: REAPER action/command ID number.
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint: true, so the agent knows the action can be destructive. However, the description adds no further behavioral context: it does not explain what running an action entails, potential side effects, or any authorization requirements 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 extremely concise, consisting of one sentence and a parameter line. The purpose is front-loaded, and there is no filler or redundant 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?
There is no output schema to explain return values, and the description does not cover side effects or usage guidance. For a tool that can execute arbitrary REAPER actions, the lack of context about potential effects, valid IDs, and expected outcomes makes it insufficient for safe, 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 provides only the name 'action_id' and type integer with no description. The description's Args section adds meaning: 'REAPER action/command ID number.' This gives the parameter some semantic context, but it is minimal and does not explain how to obtain valid IDs or provide 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 clearly states the action: 'Run a REAPER action by command ID.' This identifies the verb, resource, and method of selection. It implicitly distinguishes from the sibling run_action_by_name, which selects by name, though it doesn't explicitly name that 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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of when to prefer run_action over run_action_by_name, nor any prerequisites, limitations, or conditions. The agent is left to infer usage solely from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_action_by_nameADestructive
Run a REAPER action by its named command id.
Named commands (e.g. ReaScripts "_RS12345" or SWS "SWS...") are resolved to a numeric command id via NamedCommandLookup before firing. A purely numeric string (e.g. "40297") is treated as a built-in command id and run directly; prefer run_action(action_id) for built-ins.
Args: action_name: Named command id (e.g. "_RS12345") or a numeric command id string.
Returns: If the named command cannot be resolved, returns {"ok": False, "error": ...} without firing any action.
| Name | Required | Description | Default |
|---|---|---|---|
| action_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the error-handling behavior (returns {'ok': False, 'error': ...} if unresolved) and notes that resolution happens 'before firing'. The destructiveHint annotation is already present and the description does not contradict it; it adds context beyond the annotation, though it does not elaborate on side effects of the fired 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, front-loads the purpose, and uses an Args/Returns structure for clarity. Every sentence adds value, 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 input, resolution logic, and failure return. The only gap is that the success return value is not explicitly described (only failure is specified). Given the tool's simplicity and lack of output schema, this is a minor omission and the description is otherwise 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 input schema only specifies a 'string' with 0% coverage, but the description fully explains the accepted formats: named command ids like '_RS12345' or numeric strings like '40297', with examples. This completely 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 'Run a REAPER action by its named command id' with a specific verb and resource. It also differentiates from the sibling run_action by explicitly saying 'prefer run_action(action_id) for built-ins', 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 provides explicit guidance: named commands (e.g. '_RS12345' or '_SWS_...') are resolved via NamedCommandLookup, while purely numeric strings are treated as built-in ids and run directly, with a recommendation to use run_action for built-ins. This tells the agent exactly when to use this tool versus run_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_fx_presetCDestructive
Save the current FX settings as a preset.
Args: preset_name: Name for the new preset.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| preset_name | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no side-effect detail beyond the destructiveHint annotation. It does not mention whether an existing preset with the same name is overwritten, whether the save persists to disk, or what other state may be affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the purpose, and contains no filler. However, the Args section lists only one of three required parameters, which is misleading but not a conciseness failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, three-parameter tool with no output schema, the description is materially incomplete. It omits the meaning of track_index/fx_index and any behavior around preset overwrites or persistence, so an agent cannot reliably 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?
Only preset_name is explained. The required track_index and fx_index parameters have no schema descriptions and are not explained in the description, leaving the agent unable to determine how to target the FX to save.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Save...as a preset') and resource ('current FX settings'), which is distinct from the get/set preset siblings. It does not explicitly differentiate from those siblings, and 'current FX settings' is ambiguous because the tool actually takes track_index and fx_index arguments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 about when to use this tool versus related tools such as set_fx_preset or get_fx_preset. There are no stated preconditions, alternatives, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectADestructive
Save the current REAPER project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description's burden is lighter. It adds that the affected resource is the current project, implying the existing project file may be overwritten, but it does not disclose behavior such as confirmation prompts or what happens with unsaved projects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word 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 save command, the description plus the destructive annotation cover the essential behavior. It does not describe return values or error cases, but those are minor 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 tool has zero parameters and an empty input schema, so there is nothing for the description to explain. The 0-parameter baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action (Save) and a specific target (the current REAPER project). This clearly distinguishes it from related siblings like create_project, open_project, and render_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?
Usage is implied by the phrase 'current REAPER project'—use it to persist the active project—but there is no explicit guidance about when not to use it or how it compares with related actions such as render_project or undo. The context is clear enough for a simple command, but no alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_midi_note_velocitiesA
Scale MIDI note velocities: multiply, set to a fixed value, or compress toward a pivot. Results clamp to 1-127.
Args:
mode: "multiply" (velocity * ratio), "set" (velocity becomes value), or "compress"
(pivot + (velocity - pivot) * ratio).
ratio: Multiply factor (>= 0, no upper cap), or compress amount (0.0-1.0, where 0
collapses every note onto the pivot and 1.0 changes nothing).
value: Target velocity for "set" mode (1-127).
pivot: What compress pulls toward (1-127), or -1 for the rounded mean of the matched
notes' velocities (reported as pivot_used).
Returns: {ok, notes_changed, clamped, skipped, out_of_bounds, pivot_used, notes:[...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | multiply | |
| pivot | No | ||
| ratio | No | ||
| value | No | ||
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Aside from destructiveHint=false, annotations carry little behavioral context, so the description does the heavy lifting. It clearly discloses clamping to 1-127, exact transformation formulas per mode, the special pivot=-1 mean behavior with pivot_used reporting, and the shape of the result with counts such as clamped, skipped, and out_of_bounds. This goes well 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 well-structured: a one-line purpose statement, compact Args blocks with precise semantics, and a Returns contract. There is no filler, and each sentence contributes either a transformation rule, a boundary condition, or return-field 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 13-parameter tool with no output schema, the description covers the core transformation logic and return shape, which is good. However, it does not explain the filtering parameters or the meaning of fields, leaving some supported invocations underdocumented. It is complete for basic use but not fully self-contained for all capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple 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, ratio, value, and pivot, but it leaves several parameters undocumented, including fields, channel, pitch_low, pitch_high, start_beat, end_beat, and return_notes. Some parameter names are self-explanatory, but the gap is still noticeable for a 13-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 opens with a specific verb and resource: 'Scale MIDI note velocities', then lists three concrete modes (multiply, set, compress). This makes the tool's purpose immediately clear and helps distinguish it from single-note velocity edits like set_midi_note_velocity and from shape-based operations like ramp_midi_note_velocities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode descriptions imply usage scenarios (multiply, set, compress), and the phrase 'matched notes' implies a filtered bulk operation. However, the description never explicitly tells the agent when to choose this tool over related siblings such as set_midi_note_velocity or ramp_midi_note_velocities, and it provides no exclusions or alternative-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_all_itemsA
Select all media items.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys the core behavior and the annotation confirms it is not destructive. It does not add further context such as whether the current selection is replaced, whether items on all tracks are affected, or what the return value is. This is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short, front-loaded sentence with no filler. Every word contributes to understanding 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 simple parameterless selection action, the description is nearly complete. It lacks minor context about selection behavior relative to existing selections, but the operation is straightforward and well-named.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, so there is no parameter detail missing. The description does not need to explain parameters because 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 states a specific verb ('Select') and a clearly scoped resource ('all media items'), which distinguishes this tool from siblings like select_all_tracks and unselect_all_items. It is immediately obvious 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 intended use is implied by the description: call this when you want to select all media items. However, it does not explicitly mention alternatives or say when not to use it, such as comparing with unselect_all_items or select_all_tracks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_all_tracksB
Select all tracks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint: false, which is minimal. The description adds no further behavioral context—no mention of side effects, selection state changes, or requirements. The tool likely mutates selection, but the description is silent on this, leaving the agent to infer 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 a single, concise sentence with zero filler. It is front-loaded and immediately comprehensible, achieving maximal efficiency for a zero-parameter 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 zero-parameter selection action with no output schema, the description is largely sufficient. It clearly states the target (all tracks) and the action. The only gap is lack of mention of selection state replacement, but this is minor given the low complexity and common DAW 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 tool has zero parameters, and schema coverage is trivially 100% (empty schema). Baseline for 0 params is 4. The description's 'all' clarifies scope (selects all tracks rather than a subset), which adds minor semantic meaning beyond the tool name, but no parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Select all tracks' clearly states the action and resource with a specific verb ('Select') and object ('all tracks'). It distinguishes from obvious siblings like 'unselect_all_tracks' by the explicit 'all' and 'select'. However, it doesn't explicitly differentiate from 'select_track' (singular), but the 'all' modifier provides enough distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like 'select_track', 'get_selected_tracks', or 'unselect_all_tracks'. There's no mention of selection state behavior (e.g., whether it clears existing selection), so the agent lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_comp_laneAIdempotent
Make a fixed lane play exclusively on a track (REAPER 7 lane-based comping).
The track must be in fixed-lane mode (right-click track -> Track lanes). Returns a clear error if it is not, or if the lane index is out of range.
Args: lane_index: Fixed lane index to play exclusively (0-based).
| Name | Required | Description | Default |
|---|---|---|---|
| lane_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description goes beyond this by disclosing error behavior when the track is not in fixed-lane mode or the lane index is out of range. This adds useful context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action. The error and precondition are clearly stated. The Args section is not bloated, but it is incomplete, which slightly hurts structural quality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool, the description covers the action, precondition, and error cases. However, it omits track_index from the parameter documentation and does not specify what happens on success (e.g., return value or effect). This leaves enough ambiguity that the definition is only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document parameters. It documents lane_index with useful meaning ('0-based', fixed lane to play exclusively), but track_index is entirely absent from the Args section despite being required. The agent is left to infer what track_index refers to, creating 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 uses a specific verb and resource: 'Make a fixed lane play exclusively on a track'. It is immediately clear this is a lane-based comping operation and is distinct from any sibling tool. The REAPER 7 context further anchors 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 a clear precondition: the track must be in fixed-lane mode, with a pointer to how to enable it. It also states what happens when the precondition is violated or the lane index is out of range. It does not mention alternatives, but no lane-specific sibling tools exist, so exclusions are less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_midi_notesB
Select the MIDI notes matching the filter, as if clicked in REAPER's MIDI editor.
Args: selected: False deselects the matching notes instead; with no filter, clears the selection. exclusive: When selecting, deselect every note that does not match.
notes_changed counts notes whose selection flipped.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| selected | No | ||
| exclusive | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint: false, so the description carries the burden of explaining behavioral nuance. It does this well for selection semantics: selected=False deselects, exclusive deselects non-matching notes, and notes_changed counts flipped notes. It does not mention undo behavior or side effects, but the core selection-state mutation 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 concise and front-loaded: the main action appears in the first sentence, followed by focused parameter explanations. It contains no fluff or redundant phrases. However, the structure could be improved by grouping the remaining filter parameters, 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 high parameter count, 0% schema coverage, and lack of an output schema, this description is not complete enough for reliable invocation. It explains the selection/deselection behavior but leaves most filter parameters, the return_notes flag, and required track/item identifiers without explanation. An agent would need to infer too much.
Complex tools with many parameters or behaviors need more documentation. 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 11 parameters and 0% schema description coverage, the description must explain parameter meaning, but it only covers two: selected and exclusive. It omits the filter parameters (channel, pitch_low/pitch_high, start_beat/end_beat, fields) and return_notes, which are not self-explanatory enough for an agent to pass correctly. This is a significant compensation 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: 'Select the MIDI notes matching the filter.' This clearly distinguishes the tool from read-only siblings like get_midi_notes and editing tools like delete_midi_note or set_midi_note. The 'as if clicked in REAPER's MIDI editor' analogy reinforces the intended 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 no explicit guidance on when to use this tool versus alternatives such as get_midi_notes or delete_midi_note. It does not mention prerequisites, exclusions, or scenarios where another tool would be more appropriate. The usage context is only implied by the verb 'Select.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_trackC
Select a track.
Args: exclusive: If True, deselect other tracks first.
| Name | Required | Description | Default |
|---|---|---|---|
| exclusive | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the exclusive behavior: 'If True, deselect other tracks first.' This adds useful context beyond the annotations. However, it does not mention what happens when exclusive is False, whether the operation is additive, or any behavior for invalid track indices. The destructiveHint=false annotation is not contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action. However, the 'Args:' section lists only exclusive, omitting track_index, which is structurally inconsistent with the schema. It is concise but slightly incomplete in 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 tool with no output schema and minimal annotations, the description leaves important gaps: track_index is undocumented, there is no usage guidance relative to sibling selection tools, and no mention of return behavior or side effects beyond exclusive. The description is too thin to fully support 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 for both parameters. It explains exclusive but completely omits track_index, which is the required parameter. The meaning of track_index is left to inference, and no details about indexing or bounds are 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 states a specific verb and resource: 'Select a track.' This is clear and unambiguous about the core operation. However, it does not explicitly differentiate from sibling tools like select_all_tracks or unselect_all_tracks, 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?
No guidance is given about when to use this tool versus alternatives such as select_all_tracks, unselect_all_tracks, or get_selected_tracks. The exclusive argument implies behavior around other tracks, but there is no 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.
set_active_takeCIdempotent
Set the active take of a media item (which take plays).
Args:
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context by clarifying that the active take is 'which take plays,' but it discloses no additional side effects or playback implications 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 main sentence is concise, but the dangling 'Args:' heading adds clutter without delivering any content. The structure is incomplete rather than economically minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 required parameters, no output schema, and no parameter descriptions, this definition is incomplete. An agent cannot tell whether indices are zero-based, what each index refers to, or what the tool returns after setting the active take.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter meaning. The trailing 'Args:' is empty, leaving track_index, item_index, and take_index completely unexplained. The parameter names are somewhat self-evident, but the description itself provides no 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 states a specific verb and resource: 'Set the active take of a media item (which take plays).' This clearly conveys the operation and its purpose. It does not explicitly distinguish itself from sibling getters like get_active_take or get_takes, so it misses 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?
There is no guidance on when to use this tool versus alternatives such as get_active_take, get_takes, delete_take, or crop_to_active_take. The operation is implied by the name and one-line description, but no context or exclusion is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cursor_positionA
Set the edit cursor position.
Args: position: Position in seconds from project start.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=false, which covers the safety profile. The description adds no further behavioral context (e.g., that it moves the cursor without affecting playback or selection). For a trivial setter, this is acceptable but does not enrich 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 two short sentences: a terse statement of the action followed by a clear parameter definition. No filler, 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 one-parameter setter with no output schema and a low-complexity operation, the description provides everything needed to call it correctly. It could optionally mention side effects, but none are essential.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'position' as a number with no description. The description compensates fully by specifying 'Position in seconds from project start,' giving both the unit and the origin, which 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 states a clear verb ('Set') and a specific resource ('the edit cursor position'). It implicitly differentiates from the sibling get_cursor_position by contrasting set vs. get, so an agent can immediately identify the 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?
The purpose is self-evident for a setter, but no explicit when-to-use guidance or mention of the get_cursor_position alternative is provided. Usage is implied rather than stated, which is adequate for a simple tool but leaves no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_eq_bandA
Set a ReaEQ band parameter.
Pass real values by default: frequency in Hz (paramtype 0), gain in dB (paramtype 1), or Q (paramtype 2). Gain is converted to ReaEQ's normalized curve internally; freq and Q are sent raw.
Args: fx_index: FX index (0-based) of ReaEQ. bandtype: -1=master gain, 0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass, 6=bandpass, 7=parallel bandpass. bandidx: Band index within that type (0=first). Ignored for master gain. paramtype: 0=frequency (Hz), 1=gain (dB), 2=Q. Ignored for master gain. value: The value, in real units unless is_normalized=True. is_normalized: If True, value is a raw 0-1 normalized value written directly.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| bandidx | Yes | ||
| bandtype | Yes | ||
| fx_index | Yes | ||
| paramtype | Yes | ||
| track_index | Yes | ||
| is_normalized | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal annotation (destructiveHint: false), the description discloses important behavioral details: gain is converted internally to normalized curve while freq and Q are sent raw, and is_normalized allows raw values. This adds value. However, it does not mention side effects, error conditions, or return values, which would be useful 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: a clear one-sentence purpose, then a compact arg list. It is concise without being sparse, and the front-loaded purpose makes it easy to parse. Every line adds 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?
For a tool with 7 parameters and minimal annotations, the description is incomplete. It fails to document track_index, provides no return value or error information, and does not mention any side effects. While it explains the parameter logic well, the missing required parameter and lack of outcome details leave the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains six of seven parameters in detail, including enums for bandtype and paramtype and units for value. However, it completely omits track_index, which is a required parameter. With 0% schema coverage, the description must compensate, and missing a required parameter is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (set a ReaEQ band parameter) and enumerates the parameter types and band types, making it distinct from sibling tools like set_eq_band_enabled. The verb+resource is specific and unambiguous, even though track_index is not mentioned, the core purpose is 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 provides clear context for when to use this tool (to adjust frequency, gain, or Q on a ReaEQ band) and implicitly indicates it is not for enabling/disabling bands (a separate sibling). However, it does not explicitly mention alternatives or when not to use it, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_eq_band_enabledB
Enable or disable a ReaEQ band.
Args: fx_index: FX index (0-based) of ReaEQ. bandtype: Band type (0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass). bandidx: Band index within that type (0=first). enabled: True to enable, False to disable.
| Name | Required | Description | Default |
|---|---|---|---|
| bandidx | No | ||
| enabled | No | ||
| bandtype | Yes | ||
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description accurately states the mutation: toggling a ReaEQ band's enabled state. Annotations only provide destructiveHint=false, so the description carries most of the behavioral burden. It adds the core behavior but does not discuss side effects, requirements, or error conditions; for a simple state setter 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 front-loaded with a clear one-sentence summary followed by a compact argument list. It wastes no words, though the argument list's omission of track_index is a structural gap that prevents 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 five-parameter tool with no output schema and minimal annotations, the description is not complete enough. It fails to document the required track_index parameter and provides no context about how to identify the correct ReaEQ instance or what happens if the band type/index is invalid. An agent could easily make an incorrect call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds useful meaning for fx_index, bandtype (with the 0-5 enum), bandidx, and enabled. However, it omits track_index entirely, which is a required parameter, leaving that parameter's meaning to be inferred solely from its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Enable or disable a ReaEQ band.' This clearly distinguishes it from sibling tools like get_eq_band_enabled (read state) and set_eq_band (adjust band parameters), so an agent can infer the core action without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus related tools, nor are prerequisites mentioned such as the track needing a ReaEQ instance or how to locate one with find_eq. The operation is implied by the name and description, but no explicit context 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.
set_fx_presetC
Set the preset of an FX.
Args: preset_name: Preset name.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| preset_name | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only set destructiveHint=false; the description adds no behavioral context such as whether setting a preset overwrites current FX parameters, whether the change is undoable, or how invalid preset names are handled. It does not contradict the annotations, but it carries little of the burden for a mutation 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 first sentence is appropriately concise and front-loaded. However, the 'Args' section lists only preset_name with a redundant definition and omits the other two required parameters, making the structure incomplete and slightly misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain valid preset_name sources, indexing conventions, or whether this applies to track or take FX. Even though get_fx_presets is a sibling, the definition does not point the agent to it for valid preset values, so the agent cannot reliably call 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, but it only restates preset_name as 'Preset name,' which is nearly tautological. track_index and fx_index are completely unexplained, leaving the agent without meaning for two of the three required 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 starts with 'Set the preset of an FX,' a clear verb-plus-resource construction that distinguishes it from get/save preset tools. However, it does not specify whether this targets track FX or take FX, which is ambiguous given the parallel track_fx_* and take_fx_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus siblings like get_fx_preset, save_fx_preset, track_fx_set_param, or take_fx_set_param. There are no conditions, prerequisites, or alternative mentions, leaving the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_item_fade_inC
Set the fade-in length of a media item.
Args: length: Fade-in length in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| length | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only include destructiveHint=false, so the description must carry behavioral disclosure. It states that it sets the length but does not mention whether existing fades are overwritten, if the change is reversible, or any side effects. No additional behavioral context is 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 brief and front-loaded with the core purpose. The Args section is clear. It wastes no words, though it could benefit from a sentence clarifying the indices. It is appropriately concise for a simple setter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 required parameters and no output schema, the description is incomplete. It does not explain how to obtain track_index and item_index, any constraints (e.g., ranges, zero-based indexing), or what happens on success/failure. The description is too sparse to fully guide 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 zero description coverage, so the description must explain all parameters. It only explains 'length' (fade-in length in seconds), leaving 'track_index' and 'item_index' completely undocumented. This is a partial compensation at best.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 fade-in length of a media item.' The verb 'Set' and resource 'fade-in length' are specific, and the sibling set_item_fade_out makes the distinction obvious without needing explicit contrast. 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?
No guidance is given about when to use this tool vs alternatives, nor any prerequisites or context (e.g., how to identify the item, whether indices are zero-based, or when a fade-in would be applicable). The name alone implies the use case, but the description offers no explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_item_fade_outC
Set the fade-out length of a media item.
Args: length: Fade-out length in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| length | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false. The description adds the fact that length is in seconds, but it does not disclose that this overwrites the existing fade-out length, whether a fade-out already exists, or what the interaction with fade-in is. For a mutating tool, this is a notable behavioral 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 short and front-loaded with the primary purpose. The Args section is clearly formatted. It loses a point because the parameter documentation is incomplete, but the structure itself 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?
Given the tool's low complexity, the description is minimally viable: it states what the tool does and documents one parameter. However, the two index parameters are left unexplained, and there is no mention of side effects or return behavior. An agent could likely call it correctly, but some guessing remains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only the 'length' parameter and its unit (seconds). The required 'track_index' and 'item_index' parameters are completely undocumented, leaving the agent without guidance on how to identify the target item.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Set the fade-out length of a media item.' This clearly distinguishes it from the sibling set_item_fade_in. The main limitation is that it does not mention the track/item identification context, but the core 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 gives no guidance on when to use this tool versus alternatives. It does not mention that it should be used for fade-out rather than fade-in, and it does not list any exclusions or related tools. Usage is only implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_item_lengthB
Set the length of a media item.
Args: length: New length in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| length | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, and the description adds no behavioral detail beyond the mutation itself. It does not disclose whether changing length trims or stretches the media content, whether it affects other items, or any other side effects. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal and front-loaded: a single clear sentence plus a concise Args section that adds value by specifying units for length. 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 3-parameter mutation tool with no output schema and sparse annotations, the description is incomplete. It leaves two required parameters semantically unexplained and does not describe how the item's content is affected, which are essential 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 description covers only the length parameter ('New length in seconds') but omits track_index and item_index entirely. With 0% schema description coverage, the description fails to clarify how the target item is identified (e.g., zero-based indexing), leaving the agent to guess about two of the three required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Set') and resource ('length of a media item'), clearly distinguishing it from sibling setters like set_item_position or set_item_volume. It does not mention the indexing parameters, but the core 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 intended use—changing a media item's length—is implied by the name and description, but there is no explicit guidance on when to choose this over other item setters, nor any prerequisites such as having an existing item selected or referenced. No alternatives 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.
set_item_muteC
Mute or unmute a media item.
Args: mute: True to mute, False to unmute.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description essentially restates the tool name and explains that the mute parameter can mute or unmute. It adds no behavioral context such as persistence, undo behavior, effect on playback, or return value. The annotations only provide destructiveHint=false, which is minimal, so the description carries more responsibility than it fulfills.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with an Args section for parameter documentation. However, it lists only one of three required parameters, making the structure efficient but incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three required parameters with no schema descriptions and no output schema, yet the description only explains the mute flag. The agent receives no guidance on what track_index and item_index mean, how to obtain valid values, or what happens on invalid input, leaving a significant completion 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?
With schema description coverage at 0%, the description must compensate, but it only documents the mute parameter ('True to mute, False to unmute'). The required parameters track_index and item_index are left completely unexplained, even though the agent needs to know how to identify the target media item.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Mute or unmute a media item.' It clearly refers to media items rather than tracks, which helps distinguish it from track-level siblings like set_track_mute. It does not explicitly contrast itself with alternatives, but the meaning 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?
No guidance is given about when to use this tool versus alternatives such as set_track_mute or set_item_volume. There are no prerequisites, no mention of how to locate item indices, and no exclusions. The agent must infer usage entirely from the tool name and the mute parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_item_positionC
Set the position of a media item.
Args: position: New position in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint: false, indicating non-destructive. The description does not add any behavioral context beyond that, such as effects on the project timeline, snapping, 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 extremely concise, with a single sentence and a brief args section. It is well-structured and front-loaded, 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 tool with three required parameters and no output schema, the description is incomplete. It does not explain how to identify the target item (track and item indices), what 'position' refers to (start time), or any prerequisites. It is minimally adequate but leaves critical information to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'position' parameter (seconds) but provides no explanation for track_index or item_index, which are both required and undocumented in the schema. With 0% schema coverage, the description should compensate but only covers one of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Set the position of a media item.' It is specific about the action but does not differentiate from other item setters like set_item_length or set_item_volume. The purpose is clear but could be more explicit about what 'position' means (start time).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention any context or exclusions. An agent would have to infer that this sets the item's start position, and there is no indication of when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_item_volumeC
Set the volume of a media item.
Args: volume_db: Volume in dB.
| Name | Required | Description | Default |
|---|---|---|---|
| volume_db | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, and the description adds no meaningful behavioral context beyond the fact that it sets volume. It does not mention side effects, reversibility, whether the change is absolute or relative, or any permission/rate-limit considerations. The 'volume in dB' note is more parameter semantics than 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 short and front-loaded with the core purpose. The Args section is minimal but additively useful. However, it lists only one of three parameters, which is incomplete rather than concise. Still, there is no fluff and it earns a solid score for its efficient 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 mutation tool with three required parameters and no output schema, the description is too sparse. It does not explain how to obtain valid track_index or item_index values, what the volume range or meaning of dB is, or what the operational effect is on the media item. The annotations and schema provide very little, so the description carries most of the burden and falls short.
Complex tools with many parameters or behaviors need more documentation. Simple 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 three parameters. It only documents volume_db ('Volume in dB'), leaving track_index and item_index completely unexplained. No indexing base, valid ranges, or relationship between parameters is provided, so it only partially 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 a specific verb and resource: 'Set the volume of a media item.' This is distinct from related tools like set_track_volume and set_send_volume, but it does not explicitly name alternatives or differentiate itself. It is unambiguous but 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 no when-to-use guidance, no prerequisites, and no references to alternative tools. It does not indicate whether this should be used over set_track_volume or set_send_volume for item-level adjustments. There is no usage context beyond the bare operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_midi_noteA
Edit one existing MIDI note in place: pitch, start, length and/or channel. Only the fields you pass change, and at least one is required. (Velocity: set_midi_note_velocity.)
note_index is REAPER's PPQ-sorted index from get_midi_notes / get_selected_midi_notes and is unstable - re-read after the edit, since the returned list reflects the new order.
Args: pitch: New pitch (0-127). start_beat: New start in beats from item start; length is preserved. A start before the item start clamps there and is counted in out_of_bounds, not clamped. length_beats: New length in beats (> 0), resized from the current start. channel: New MIDI channel (0-15).
Returns: {ok, notes_changed, clamped, skipped, out_of_bounds, notes:[...]}, or {ok:false, error} for a bad index, an empty edit, or an out-of-range value (nothing is written).
| Name | Required | Description | Default |
|---|---|---|---|
| pitch | No | ||
| fields | No | ||
| channel | No | ||
| item_index | Yes | ||
| note_index | Yes | ||
| start_beat | No | ||
| track_index | Yes | ||
| length_beats | No | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=false, so the description carries the disclosure burden and does it thoroughly: partial-update semantics, PPQ-sorted and unstable note_index, clamping behavior for start_beat, and a guarantee that invalid edits write nothing. This goes well beyond the structured annotations and contains no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool's purpose is stated in the first sentence, and the rest is organized into a note-index warning, an Args block, and a Returns block. Every sentence carries operational content; there is no filler or restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers most of what an agent needs for a state-changing MIDI edit: preconditions for note_index, partial updates, error behavior, and return shape. It is not fully complete because some return counters (e.g., skipped, clamped, out_of_bounds) and the `fields`/`return_notes` parameters are not clearly defined, and no output schema exists to fill those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the Args section adds important range and behavior semantics for pitch, start_beat, length_beats, and channel, and it clarifies the unstable meaning of note_index. However, it does not explain the `fields` parameter, `return_notes`, or track_index/item_index values, so an agent still has to infer or discover significant parts of the 9-parameter 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 sentence states the exact operation ('Edit one existing MIDI note in place') and the modified attributes (pitch, start, length, channel), which clearly separates it from add/delete/velocity tools. The parenthetical 'Velocity: set_midi_note_velocity' directly names the closest sibling, removing 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 frames the tool as editing one existing note with partial updates and at least one required field, making its use case clear. It explicitly routes velocity changes to set_midi_note_velocity, but it does not spell out when to prefer add_midi_note, add_midi_notes_batch, or delete_midi_note beyond the word 'existing'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_midi_note_velocityC
Set the velocity of a MIDI note.
Args: velocity: New velocity (1-127).
| Name | Required | Description | Default |
|---|---|---|---|
| velocity | Yes | ||
| item_index | Yes | ||
| note_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint: false, so the non-destructive nature is already declared. The description adds no further behavioral context—no mention of side effects, reversibility, or requirements. It only restates the basic action without expanding on what happens to the note or the item.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the action, which is good. However, the 'Args:' section only lists velocity, omitting three required parameters, making it structurally incomplete and potentially misleading. It's concise but not well-structured for a 4-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?
Given that the tool requires 4 indices (track, item, note) and has no output schema, the description should explain what these indices represent and how to identify the target note. It does not, nor does it mention any prerequisites or validation. The context is far from complete 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 description coverage is 0%, so the description must compensate for undocumented parameters. It only explains 'velocity' with a range (1-127), leaving track_index, item_index, and note_index completely unexplained. The agent cannot infer what these indices refer to or how to obtain them, making the description inadequate for proper 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 purpose: setting the velocity of a MIDI note. It specifies the resource (MIDI note) and the action (set velocity). While it doesn't explicitly differentiate from sibling tools like set_midi_note or ramp_midi_note_velocities, the focus on velocity is distinct enough for an agent to understand the primary intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 conditions, prerequisites, or compare with related tools like set_midi_note or scale_midi_note_velocities. An agent has no basis to decide between this and other MIDI modification tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_send_dest_channelsC
Set the destination channels for a send (used for sidechain routing).
Args: track_index: Source track index (0-based). dest_chan: Destination channel pair (0=1-2 main, 2=3-4 sidechain, 4=5-6, etc.). For sidechain compression, use 2 to route to channels 3-4.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_chan | Yes | ||
| send_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Besides the annotation destructiveHint=false, the description does not disclose behavioral details such as whether this modifies an existing send, whether it can break current routing, or what happens if send_index is invalid. The sidechain context and channel mapping are useful but are more parameter semantics than 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 concise and well-structured, with a one-line purpose followed by an Args block. There is minor redundancy where the sidechain compression example repeats the channel mapping already stated for dest_chan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A required parameter (send_index) is entirely undocumented, and there is no guidance on how to discover or validate it. For a tool with three required parameters and no output schema, the description is not complete enough for an agent to invoke it reliably without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful detail for track_index (0-based) and dest_chan (channel pair mapping and sidechain example). However, it completely omits the required send_index parameter, leaving a significant gap in a low-coverage schema situation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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: setting the destination channels for a send, specifically in the context of sidechain routing. It distinguishes itself from the sibling set_send_source_channels by focusing on destination rather than source channels, though it does not explicitly name that 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 gives no guidance on when to use this tool versus closely related siblings like setup_sidechain_send, setup_sidechain_compression, or create_send. It implies sidechain routing usage but never states prerequisites, exclusions, or alternative tool selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_send_source_channelsB
Set the source channels for a send.
Args: track_index: Source track index (0-based). src_chan: Source channel (-1=none, 0=stereo 1-2, 1024+n=mono from channel n).
| Name | Required | Description | Default |
|---|---|---|---|
| src_chan | Yes | ||
| send_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=false, which the description does not contradict, but it adds no behavioral context beyond that. It does not explain side effects, prerequisites (e.g., send must exist), or any failure modes. Given the annotation covers only destructiveness, the description should still disclose other behavioral traits but does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose. The argument list is clearly formatted and adds necessary details without fluff. It is appropriately 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 3-parameter tool with no output schema, the description should fully document all parameters and any prerequisites. It fails to explain send_index, and there is no mention of whether the send must already exist or how errors are handled. This is inadequate 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 track_index (0-based) and src_chan (with encoding details), but it completely omits any explanation of send_index, which is a required parameter. It provides partial value but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set') and resource ('source channels for a send'), which clearly distinguishes it from the sibling tool set_send_dest_channels. It is not vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 set_send_dest_channels or any conditions for selecting this tool. The agent is left without direction on when this is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_send_volumeB
Set the volume of a track send.
Args: track_index: Source track index (0-based). volume_db: Send volume in dB.
| Name | Required | Description | Default |
|---|---|---|---|
| volume_db | Yes | ||
| send_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=false annotation, the description adds no behavioral context. It doesn't mention whether the send must already exist, whether the change is reversible/undoable, or what happens when volume_db is out of range. There is no contradiction with the annotation, but the mutation behavior is under-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 compact and front-loaded with the core action, followed by a clean parameter list. Every sentence serves a purpose with no filler, though the parameter list is incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only a destructiveHint annotation, the description carries the burden of explaining how to call the tool. It fails to document send_index, a required parameter, and gives no behavioral context, so an agent cannot fully determine correct usage from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section adds useful semantics for two of three required parameters: track_index is 0-based and volume_db is in dB. However, send_index is required by the schema and is completely undocumented, which is a meaningful gap given the schema itself provides no descriptions (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 opening sentence names a specific verb and resource ('Set the volume of a track send'), which distinguishes it from sibling send-related tools like set_send_dest_channels and set_send_source_channels. The resource is precise enough that an agent can identify the intent immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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-selection guidance is provided. The description states what the tool does but never mentions when it should be preferred over other send-editing tools or any prerequisites such as the send needing to already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tempoA
Set the project tempo.
Args: bpm: Tempo in beats per minute.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=false, and the description clarifies that this modifies the project tempo. It does not add deeper behavioral detail such as whether the change affects playback, timebase, or undo state, but the core behavior is transparent and consistent with 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 extremely concise: one clear action and one well-defined argument. The Args block is easy to parse and contains 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 simple single-parameter mutator with no output schema, the description is sufficient for an agent to invoke it correctly. It could mention accepted BPM range or return behavior, but those are optional details for a tool this straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple 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 says bpm is a number, but the description explains that bpm means 'Tempo in beats per minute,' adding essential semantic meaning and units. This 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 a specific verb and resource: 'Set the project tempo.' It clearly distinguishes this setter from the sibling read-only tool get_tempo, so an agent can tell them apart by intent alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is immediately clear: use this tool when you want to change the project tempo. It does not enumerate alternatives or exclusions, but for a simple one-parameter setter the context is obvious and no misleading guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_selectionA
Set the time selection.
Args: start: Start time in seconds. end: End time in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool sets the time selection, and the destructiveHint annotation already communicates that this is not a destructive operation. It does not add behavioral context such as whether the existing selection is replaced or what happens if start/end are out of order, but for a simple two-number setter the baseline behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences plus a compact arg list. It leads with the primary action and uses a clear Args block with no padding or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, the description provides the action and parameter semantics needed to invoke it. It omits optional context like return behavior and validation, but the low complexity plus destructiveHint=false make the description 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 only declares two numbers, while the description defines each parameter's meaning and unit ('Start time in seconds', 'End time in seconds'). This fully compensates for the 0% schema coverage and gives the agent the necessary semantics to call the tool with 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 names the operation ('Set') and the resource ('time selection'), which is clear and distinct from the sibling get_time_selection and clear_time_selection. It is slightly minimal, essentially unpacking the tool name, so it stops short of a fully differentiated 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?
Usage is implied by the tool name: you call this when you want to establish a time selection. The description gives no explicit when-to-use or alternative guidance, nor does it mention related tools such as get_time_selection or clear_time_selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_signatureB
Set the project time signature.
Args: numerator: Beats per measure (e.g., 4 for 4/4). denominator: Beat unit (e.g., 4 for quarter note).
| Name | Required | Description | Default |
|---|---|---|---|
| numerator | Yes | ||
| denominator | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false and no readOnlyHint, so the description carries the burden of disclosing behavior. It states 'set' (mutation) but does not explain side effects, whether it affects the current play position, if it is undoable, or how invalid values are handled. Minimal behavioral transparency beyond the operation itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and follows with a structured parameter list. Every sentence earns its place with no filler, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description covers the core semantics but leaves gaps. It does not mention whether values are validated, how changes interact with the project timeline, or whether the tool affects all sections. Missing usage and behavioral context lower 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?
With schema description coverage at 0%, the description compensates by explaining each parameter: numerator as beats per measure with a 4/4 example, denominator as beat unit with a quarter-note example. This adds clear meaning beyond the bare integer type, though it omits constraints like valid denominator 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 states a specific verb and resource: 'Set the project time signature'. This clearly differentiates it from the sibling get_time_signature and other project-level tools. It is concise 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 no guidance on when to use this tool versus alternatives, such as set_tempo or get_time_signature. It does not mention prerequisites, exclusions, or typical scenarios. The purpose implies usage, but no explicit direction is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_as_folderA
Set a track as a folder parent or child.
Args: folder_depth: 0=normal, 1=folder parent, -1=end of folder.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| folder_depth | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares destructiveHint=false, and the description adds useful semantic detail by mapping folder_depth values to normal, folder parent, and end-of-folder states. However, it does not disclose potential side effects on track hierarchy or child tracks beyond the minimal mapping.
Agents need to know what a tool does to the world before calling 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 action, followed by a concise parameter mapping. Every sentence is purposeful 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?
For a simple two-parameter setter, the description conveys the main behavior and folder_depth semantics, but it omits any explanation of track_index and offers no broader context about track hierarchy behavior. 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?
Schema description coverage is 0%, so the description must compensate. It explains folder_depth with explicit value meanings, but it leaves track_index entirely undocumented, relying on the parameter name to carry its meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: setting a track as either a folder parent or child. This clearly identifies the operation and naturally distinguishes it from the many other set_track_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus other track-structuring operations, nor are prerequisites or consequences mentioned. The description only states what the tool does, not the conditions under which it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_automation_modeB
Set the automation mode for a track.
Args: mode: 0=trim/read, 1=read, 2=touch, 3=write, 4=latch.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false. The description adds useful context by clarifying the numeric mode meanings (trim/read, read, touch, write, latch), which helps an agent understand what state the track is moved into. However, it does not disclose effects on existing automation writing/playback or whether the change is immediate or persistent.
Agents need to know what a tool does to the world before calling 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, and the Args section adds only useful parameter mapping. 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?
For a simple two-parameter setter, the description covers the mode values but omits details such as track_index conventions, return behavior, or consequences of the change. It is minimally viable but leaves some context gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain 'mode' values well, but it does not clarify 'track_index' semantics, such as whether it is zero-based or how it maps to a specific track. The compensation is 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 states a specific verb and resource: 'Set the automation mode for a track.' It is clear and distinct from the many sibling track-setter tools, though it does not explicitly name or compare itself to any alternative 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 gives no guidance about when to use this tool versus alternatives, no prerequisites, and no contextual hints beyond the literal action. An agent has to infer usage entirely from the tool name and the one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_colorC
Set the color of a track.
Args: r: Red component (0-255). g: Green component (0-255). b: Blue component (0-255).
| Name | Required | Description | Default |
|---|---|---|---|
| b | Yes | ||
| g | Yes | ||
| r | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, which is minimal. The description does not disclose any behavioral traits beyond the basic operation, such as whether the color change is immediately visible, whether it affects the track's appearance in the arrange view, or whether it requires a valid track index. No contradiction with annotations, but the description carries the burden and doesn't add much.
Agents need to know what a tool does to the world before calling 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. The parameter list is clear and compact. It earns its place, though it could be slightly more structured with a note about track_index.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is mostly adequate, but it lacks any mention of track_index semantics, error conditions, or return value. With no output schema and minimal annotations, an agent might not know how to handle invalid track indices or whether the operation is reversible. The RGB range is documented, which is good, but 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 description coverage is 0%, so the description must compensate. It does explain r, g, b as RGB components with 0-255 ranges, which is helpful. However, it does not explain track_index at all, and the schema only says it's an integer. The description adds meaning for 3 of 4 parameters, but the most important one (which track) is left to 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 states a clear verb and resource: 'Set the color of a track.' This is specific enough to distinguish it from other track-related setters like set_track_name, set_track_volume, etc. However, it doesn't explicitly mention the track_index parameter in the description text, though the schema requires it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. There are no sibling tools that set track color, so the lack of alternatives is not a major issue, but there is no context about prerequisites (e.g., track must exist) or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_inputB
Set the record input for a track.
Args: input_index: Input index (-1=no input, 0+=hardware inputs, 4096+=virtual MIDI).
| Name | Required | Description | Default |
|---|---|---|---|
| input_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint: false, so the description carries some burden for behavioral disclosure. It adds context by explaining input_index ranges (-1, 0+, 4096+), which is useful. However, it does not describe the effect of setting the input, potential side effects, or requirements. This is more than annotation-only, but still limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a clear subject line and a well-formatted args section. The most important semantic detail (input_index meaning) is front-loaded. 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?
With two parameters and no output schema, the description explains one parameter but leaves the other (track_index) unexplained. It also does not mention the broader context of recording or what 'record input' implies. This is not complete for an agent to confidently use the tool without additional 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?
Schema description coverage is 0%, so the description must compensate. It explains input_index semantics clearly (no input, hardware, virtual MIDI), but provides no explanation for track_index. This partial compensation is inadequate for a 0% coverage schema, but the explanation provided 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 clearly states the action: 'Set the record input for a track.' This is a specific verb-resource pair. It does not explicitly differentiate from sibling tools, but the purpose is unambiguous. It does not restate the name or title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or exclusions. The description simply states what it does, leaving the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_master_sendAIdempotent
Enable or disable the master/parent send on a track.
When enabled, the track's audio routes to its parent folder track (or the master if it has no parent). Disable it when a track should only output through its sends (e.g., routed exclusively to a bus).
Args: enabled: True to enable, False to disable.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint and destructiveHint annotations, the description discloses the routing effect: enabling sends audio to the parent folder (or master), and disabling makes the track output only via sends. This is useful behavioral context for a mutation tool. 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 text is compact and front-loaded with the core action, and the use-case sentence earns its place. However, the Args block is incomplete: it documents only 'enabled' while both 'track_index' and 'enabled' are required. This structural gap undercuts an otherwise clean layout.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 boolean setter with no output schema, the main behavioral and when-to-use context is present. But the missing track_index semantics, plus no mention of the corresponding getter sibling for verifying state or error behavior, leaves the definition incomplete for fully reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain both required parameters. It clearly explains 'enabled' ('True to enable, False to disable'), but omits 'track_index' entirely from the Args section and gives no indexing conventions. One of the two required parameters remains semantically 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?
States a specific operation ('Enable or disable') and resource ('master/parent send on a track'), so an agent knows exactly what action this performs. It also differentiates from general send tools by targeting the master/parent send 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?
Gives a concrete conditional: disable when the track should only output through its sends, e.g., routed exclusively to a bus. It also explains the enabled behavior (routes to parent folder or master), giving clear context. It does not explicitly name an alternative tool, so it stops just short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_monitorB
Set the monitor mode for a track.
Args: monitor: 0=off, 1=normal, 2=not when playing.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide destructiveHint=false, which is minimal. The description adds no behavioral context beyond the parameter values: no mention of side effects, whether the change is immediate, what happens if the track index is invalid, or any other runtime behavior. The burden falls on the description, and it does not carry 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 extremely concise and front-loaded with the core action, followed by a compact parameter legend. Every sentence contributes necessary information, 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?
For a simple two-parameter setter, this is minimally viable: an agent can infer the call shape and monitor semantics. But it lacks any explanation of track_index, usage context, or expected behavior, leaving some ambiguity for a tool that has no output schema and minimal 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 must compensate. It does document the monitor parameter's meaning and allowed values, which is valuable. However, track_index is left entirely to its name, with no explanation of indexing conventions or bounds, so the 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 states a specific verb and resource: 'Set the monitor mode for a track.' It also enumerates the accepted monitor values, making the tool's function unambiguous and distinct from the many other set_track_* 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?
There is no guidance about when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The description simply states what the tool does without helping an agent decide between this and related track-setting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_muteC
Set the mute state of a track.
Args: mute: True to mute, False to unmute.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide destructiveHint=false, so the description carries most of the behavioral disclosure burden. It adds nothing beyond the parameter explanation: no mention of side effects, whether muting is immediate or reversible, what happens on an invalid track_index, or how this interacts with undo. It does not contradict the annotation, but it is far from 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 efficient and front-loaded: the purpose statement comes first, followed by a compact parameter doc. It earns its place with no fluff, though it is terse enough that the track_index omission is noticeable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 state-setter, the description is mostly adequate: the mute parameter semantics are clear and the tool's effect is obvious. The main gap is the undocumented track_index (indexing convention, range), which an agent needs when calling the tool correctly. The presence of destructiveHint=false partially covers the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple 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 documents the 'mute' parameter ('True to mute, False to unmute'), which is helpful. However, 'track_index' is completely undocumented in the description—no indexing convention (0-based vs 1-based) or validity constraints—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 states a specific verb and resource: 'Set the mute state of a track.' This is clear and unambiguous. It doesn't explicitly differentiate from siblings like set_item_mute, but the track-vs-item resource distinction is readily apparent from the name and description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as set_item_mute or set_track_solo, and no prerequisite conditions are mentioned (e.g., valid track_index, track existing). The agent is given no contextual cues to select this over nearby siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_nameB
Set the name of a track.
Args: name: New name for the track.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, which indicates the operation is not destructive. The description states the mutation ('Set') but does not disclose any additional behavioral aspects such as whether the change is undoable, any side effects on related data, or error conditions. With minimal annotation coverage, the description carries a burden it does not fully meet, though the simple nature of a rename operation mitigates the 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 brief and to the point, with no redundant wording. It front-loads the purpose. However, it is too sparse to be fully effective, but that is more an issue of completeness than conciseness. It earns a 4 for efficient 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?
Given the simplicity of the tool, the description is incomplete. It lacks any explanation of the track_index parameter, no output schema is provided, and it does not mention constraints like whether duplicate names are allowed or if the name must be unique. The absence of these details makes the tool less reliable 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?
Schema description coverage is 0%, so the description must explain all parameters. It documents only 'name' as 'New name for the track', but entirely omits the critical parameter 'track_index'. The agent is left without any explanation of what track_index refers to (e.g., zero-based index, which track), making correct invocation difficult.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 name of a track') with a specific verb and resource. It is distinct from sibling tools that set other track properties (e.g., set_track_volume, set_track_color). 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?
There is no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or exclusions. While the operation is simple, the description provides no contextual routing for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_panB
Set the pan position of a track.
Args: pan: Pan position from -1.0 (full left) to 1.0 (full right). 0 = center.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=false, and the description does not contradict this. The description states the core behavior but adds little beyond it. The pan range is more parameter semantics than behavioral disclosure, so the description adds only marginal context about side effects or operational 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 extremely concise and front-loaded. It opens with the action, then provides a focused Args section for the pan parameter. Every word earns its place, and there is 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?
For a simple setter with two parameters, the description is mostly adequate but leaves a real gap: track_index is not described. The annotations cover the safety profile, and the pan range is documented, but the lack of index semantics and any usage context keeps this 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 carries the burden for both parameters. It provides valuable semantics for 'pan' with the valid range from -1.0 to 1.0 and the meaning of 0. However, it omits any explanation of 'track_index', including whether it is zero-based or which track it 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 clearly states the action: 'Set the pan position of a track.' This is a specific verb and resource, and the pan concept distinguishes it from sibling set_track_* tools. However, it does not explicitly differentiate itself from siblings or mention which track is affected beyond the implicit track_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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, no exclusions, and no prerequisites. The pan range information is parameter guidance rather than usage guidance. An agent must infer the appropriate context solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_phaseB
Set the phase inversion of a track.
Args: invert: True to invert phase, False for normal.
| Name | Required | Description | Default |
|---|---|---|---|
| invert | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the purpose without disclosing any behavioral details beyond the annotations. It does not explain the effect on audio, whether changes are immediate, or any side effects. The destructiveHint annotation already covers non-destructive, so the description adds no additional 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?
The description is concise with two sentences, front-loading the purpose and then explaining the argument. No wasted words 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?
The tool is simple, but the description lacks an explanation of track_index and does not mention error conditions or return values. It is mostly complete for the invert parameter but misses key context for track selection, which is a required parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the invert parameter's meaning ('True to invert phase, False for normal') but omits track_index entirely. With schema coverage at 0%, the description should clarify both parameters; it only partially compensates for the lack of 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 it sets the phase inversion of a track, a specific verb and resource. It is distinct from sibling tools as none others handle phase inversion, 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?
No guidance is provided on when to use this tool or how it compares to alternatives. The description does not mention any conditions, prerequisites, or scenarios where phase inversion would be appropriate, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_soloB
Set the solo state of a track.
Args: solo: True to solo, False to unsolo.
| Name | Required | Description | Default |
|---|---|---|---|
| solo | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint=false, providing minimal safety info. The description adds a brief parameter explanation ('True to solo, False to unsolo') but does not disclose side effects, whether soloing affects other tracks, or the meaning of the return value. For a mutating tool, this is a moderate 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 with no filler, using a clear two-sentence structure plus an Args list. It is appropriately brief for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter with no output schema, the description is minimally adequate. It explains the purpose and the solo parameter but omits details about track_index and any potential side effects on the project. Given the simplicity, a 3 is fair.
Complex tools with many parameters or behaviors need more documentation. 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 partially compensates by explaining the 'solo' parameter's meaning ('True to solo, False to unsolo'). However, 'track_index' is not explained, and the explanation for solo is somewhat redundant with the boolean type. It adds value but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Set the solo state of a track' clearly, specifying a verb and resource. It is unambiguous but does not differentiate from sibling tools like set_track_mute, though the name already conveys the specific 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?
The description implies usage for toggling solo on a track but provides no explicit guidance on when to use it versus alternatives, nor any exclusions or prerequisites. It is obvious from context but lacks explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_volumeC
Set the volume of a track in decibels.
Args: volume_db: Volume in dB (0 = unity gain, -inf to +12 typical range).
| Name | Required | Description | Default |
|---|---|---|---|
| volume_db | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include destructiveHint: false, which is minimal. The description does not add behavioral context such as whether the change is immediate and permanent, what happens if volume is out of range, or if there are side effects. It also omits the track_index parameter entirely, leaving the agent unaware of required identification. The description carries the full burden here and fails to disclose key behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, but the Args section is incomplete—it lists only volume_db while the schema shows two required parameters. The structure is acceptable, but the omission of track_index makes it less effective. It could be improved by listing both parameters with brief 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?
With two required parameters, no output schema, and no enums, the description must fully specify inputs. It fails to describe track_index, leaving a critical gap. The volume range is given, but no error handling or edge cases are mentioned. The tool is simple, yet the missing parameter makes it incomplete for an agent to call 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% because the description mentions only volume_db but not track_index, which is also required. The description does explain volume_db's meaning and typical range, adding value for that parameter, but the track_index parameter is completely undocumented, forcing the agent to guess its semantics. This is a significant gap given both are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (set volume), the resource (a track), and the unit (decibels). It distinguishes itself from sibling tools like set_track_pan or set_track_mute by focusing on volume, though it doesn't explicitly name an alternative. It lacks a mention of the track_index parameter, but the core 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?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of typical use cases. The description only explains what it does, not when to choose it over other track-related setters. An agent would have to infer from the 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.
set_track_widthA
Set the stereo width of a track.
Args: width: Width value (0=mono, 1=stereo, 2=200% width).
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=false, so the safe, non-destructive nature is covered. The description adds useful width value semantics (0=mono, 1=stereo, 2=200%) but does not disclose behavior like clamping, automation interplay, or what happens if an out-of-range value is 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 a single clear purpose statement followed immediately by the one parameter that needs semantic explanation. There is 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?
For a simple two-parameter setter with no output schema, the description is nearly complete: the main parameter's scale and meaning are given, and the other parameter is self-explanatory from its name. The only minor gap is the lack of explicit track_index 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?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains the width parameter well, but track_index is completely undocumented in text; its meaning is only inferable from the parameter name and tool 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 states a specific verb and resource: "Set the stereo width of a track." This clearly distinguishes the tool from siblings like set_track_pan and set_track_volume, so an agent can identify its purpose without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or when not to use it, such as when adjusting panning or volume instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_sidechain_compressionA
Complete sidechain compression setup: creates send and configures compressor.
This is the all-in-one function for setting up sidechain compression. It creates a send from the trigger track to the target track's sidechain input and configures ReaComp to listen to that sidechain.
Args: trigger_track: Track that triggers compression (e.g., kick drum = track 0). target_track: Track to be compressed (e.g., bass = track 1). compressor_fx_index: Index of ReaComp in target track's FX chain. send_volume_db: Sidechain send volume in dB (default 0dB).
Returns: Object with complete setup info.
Example: For kick-triggered bass compression where: - Drums are on track 0 - Bass is on track 1 with ReaComp at FX index 2 Call: setup_sidechain_compression(0, 1, 2)
| Name | Required | Description | Default |
|---|---|---|---|
| target_track | Yes | ||
| trigger_track | Yes | ||
| send_volume_db | No | ||
| compressor_fx_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the main mutating behaviors: creating a send from trigger to target, configuring ReaComp, and returning setup info. The destructiveHint=false annotation is not contradicted. It does not mention potential side effects like overwriting an existing send or requiring ReaComp to already be present, but it is substantially transparent about what the tool does.
Agents need to know what a tool does to the world before calling 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 first line, Args, Returns, and Example. It is slightly redundant ('Complete...' and 'all-in-one function' restate each other), but it is efficient overall 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 description covers what the tool does, all parameters, and a complete usage example. The return value is only vaguely described as 'Object with complete setup info,' which is a minor gap given that no output schema exists, but it is sufficient for invoking 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?
With 0% schema description coverage, the Args section fully compensates by documenting all four parameters with semantic meaning, including examples (kick drum = track 0, bass = track 1) and the default for send_volume_db. The example further grounds the parameter relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Complete sidechain compression setup: creates send and configures compressor.' It clearly describes the tool's function and even calls itself the 'all-in-one function' for sidechain compression, but it does not explicitly differentiate itself from the sibling tools setup_sidechain_send and configure_reacomp_sidechain by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context ('all-in-one function for setting up sidechain compression') and a concrete kick/bass example. It does not explicitly say when to prefer it over the lower-level sibling tools or when not to use it, but the 'all-in-one' framing strongly implies it should be chosen for complete setups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_sidechain_sendA
Create a sidechain send from one track to another track's FX sidechain input.
This creates a send routed to channels 3-4 of the destination track, which is the standard sidechain input for compressors like ReaComp.
Args: src_track: Source/trigger track index (e.g., kick drum). dest_track: Destination track index (e.g., bass with compressor). volume_db: Send volume in dB (default 0dB = unity).
Returns: Object with send_index and routing info.
| Name | Required | Description | Default |
|---|---|---|---|
| src_track | Yes | ||
| volume_db | No | ||
| dest_track | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (only destructiveHint=false, no readOnlyHint), so the description carries the burden. It clearly indicates this is a write operation ('Create', 'creates a send') and explains the routing to channels 3-4 and the return object (send_index and routing info). However, it does not disclose whether it appends to existing sends, whether it requires a specific FX on the destination track, or potential failure modes if tracks are invalid. This is adequate 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 well-structured with a concise purpose statement, a clarifying paragraph on routing, and clearly labeled Args and Returns sections. It is slightly longer than necessary but every part provides value (especially the routing explanation and parameter examples). It is front-loaded with the core action, so an agent quickly grasps the tool's primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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: action, routing behavior, parameter semantics, and return format. It does not mention prerequisites (e.g., destination track must have a compressor with sidechain input) or edge cases (e.g., what happens if a send already exists), but for a straightforward creation tool it is largely complete. Given the presence of many sibling tools, more explicit usage guidance would improve completeness, but this is good enough for an agent to correctly 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?
With schema description coverage at 0%, the description fully compensates by providing clear explanations for each parameter: src_track (source/trigger track with example), dest_track (destination with example), and volume_db (default 0dB, unit). It adds meaning beyond the raw integer/number types and gives practical context 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 a specific action ('Create a sidechain send') and the resource (from one track to another's FX sidechain input). It distinguishes itself from generic create_send by specifying the routing to channels 3-4, which is a unique trait. This makes it easy for an agent to differentiate from similar sibling tools like setup_sidechain_compression or configure_reacomp_sidechain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 standard use case (sidechain routing for compressors like ReaComp) but does not explicitly contrast with alternative tools such as create_send, setup_sidechain_compression, or configure_reacomp_sidechain. An agent is left to infer when this tool is preferred over siblings, and there is no guidance on when not to use it or which tool to use instead for different sidechain configurations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snap_midi_notes_to_scaleA
Snap off-key MIDI notes onto a scale (fix a wrong note, force a part into a key).
Notes already in the scale are left alone; each off-scale note moves to the nearest
in-scale pitch, and under nearest a tie resolves toward the middle of the selection.
A note with no in-scale pitch left inside 0-127 stays put and is counted in skipped.
Args: root: Root pitch class, 0-11 (0=C, 1=C#, 2=D ... 11=B). mode: Scale name: major, minor, harmonic_minor, melodic_minor, dorian, phrygian, lydian, mixolydian, locrian, major_pentatonic, minor_pentatonic, blues, whole_tone, chromatic (aliases: ionian, aeolian, natural_minor). Or a custom list of semitone intervals from the root, each 0-11 (e.g. [0,2,4,7,9]). direction: "nearest" (closest scale tone), "up" or "down" (that way only, skipping a note rather than falling back to the other direction).
Returns:
{ok, notes_changed, clamped, skipped, out_of_bounds, notes:[...]}; notes is the
post-transform list, with indices re-synced after the sort.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | major | |
| root | Yes | ||
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| direction | No | nearest | |
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the single destructiveHint annotation: it specifies that in-scale notes are preserved, off-scale notes move to the nearest in-scale pitch, ties resolve toward the middle of the selection under 'nearest', and unpitchable notes remain and are counted in skipped. It also documents direction behavior and returned counters.
Agents need to know what a tool does to the world before calling 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 algorithm, argument explanations, and return shape. Every section earns its place; the length is justified by the custom-mode and tie-resolution 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?
For a 12-parameter tool with no output schema, the description provides the algorithm, the returned counters, and the key musical parameters, so a basic call is actionable. It is not fully complete because required target-selection parameters and the filtering/return_notes toggles are undocumented, which could lead an agent to misuse 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?
Root, mode, and direction receive rich explanation (root mapping, scale-name list, aliases, custom interval arrays, direction semantics), which is critical because the input schema has 0% description coverage. However, required track_index and item_index are never explained, and the filtering fields, channel, pitch_low/high, start/end_beat, fields, and return_notes are left entirely to the schema's bare 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 opening sentence names a concrete transform ('Snap off-key MIDI notes onto a scale') and adds intent ('fix a wrong note, force a part into a key'), so an agent knows exactly what resource is modified and why. This is distinct from sibling quantize/transpose/velocity tools even though it does not name 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?
The parenthetical gives two concrete triggers — fixing a wrong note or forcing a part into a key — and the first paragraph further says already-in-scale notes are untouched, so the agent can infer the tool targets off-key passages. It does not explicitly name alternatives or exclusions, but the use 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.
split_itemC
Split a media item at a position.
Args: position: Split position in seconds (absolute project time).
Returns: Object with info about both resulting items.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| item_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only states destructiveHint: false, which implies the operation is not destructive. The description adds that it returns 'Object with info about both resulting items,' which clarifies the outcome. However, it does not explain side effects like whether the original item is replaced, undo behavior, or any constraints on position validity. The description provides modest value beyond the annotation but does not contradict 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 and well-structured, using an Args/Returns format. It front-loads the primary action and then details parameters and return. There is no redundant fluff, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters and no output schema, the description is incomplete. It omits explanation of two parameters, does not describe the structure of the returned object, and gives no context about the split behavior (e.g., what happens if position is at item boundaries). The description is not sufficient for an agent to call this tool reliably without additional 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 has 0% description coverage, so the description must explain all parameters. It explains 'position' clearly (in seconds, absolute project time) but completely ignores track_index and item_index, which are required. The agent cannot know what these represent without looking at the schema names, which are somewhat self-explanatory but not explicitly described. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Split a media item at a position') and identifies the resource (media item). It distinguishes itself from siblings like delete_item, duplicate_item, and set_item_position because 'split' is a unique operation. However, it does not mention that track_index and item_index are needed to identify the item, which is a minor omission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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. There is no mention of prerequisites, such as needing a media item to be present or selected, nor any comparison to related operations like duplicate or split into multiple parts. The agent is left to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopA
Stop playback in REAPER.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate destructiveHint=false, so the description carries the burden of explaining the tool's effect. It states the behavior plainly: playback is stopped. It does not add additional context such as whether the edit cursor moves, whether playback position resets, or whether an already-stopped transport is a no-op.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler or redundancy. It is appropriately minimal for a no-argument transport control.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 transport command, the description is nearly sufficient. The main gap is the lack of any distinction from 'pause', which is a closely related sibling, but the tool's simplicity and empty schema keep the completeness high.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clarify. The schema coverage is 100% and no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Stop') and resource ('playback'), making the core action clear. It is easily distinguished from most siblings by name and behavior, though it does not explicitly contrast with the sibling 'pause'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the agent needs to halt playback in REAPER. However, it provides no explicit guidance on when to choose 'stop' over the closely related sibling tools 'pause' or 'record'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stretch_midi_notesA
Stretch or compress MIDI timing (half-time, double-time, or any ratio).
Each targeted note scales as a rigid unit about one fixed pivot: its distance from the
pivot and its own length both multiply by factor, so the rhythm is preserved and only
the speed changes. Notes that land past the item end are kept as-is; one pushed before
the item start begins at the item start but keeps its scaled end, so it comes out
shorter. Both are counted in out_of_bounds (clamped stays 0 here).
Args: factor: Time scale ratio, must be > 0. 2.0 = twice as long (half-time), 0.5 = half as long (double-time). pivot_beat: The fixed point, in beats from the item start; may be negative. None = the earliest targeted onset.
| Name | Required | Description | Default |
|---|---|---|---|
| factor | Yes | ||
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| pivot_beat | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the minimal annotation (destructiveHint: false). It explains edge cases (notes past end, before start), how scaling works, and mentions out_of_bounds and clamped counters. This is comprehensive and non-contradictory.
Agents need to know what a tool does to the world before calling 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 explanation and an Args section. It is concise and each sentence adds value, though it could be slightly more 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 tool's complexity (11 parameters, no output schema, minimal annotations), the description is incomplete. It does not explain the filter parameters, return structure (beyond the counters), or how notes are selected. This leaves significant gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains only two of the eleven parameters (factor and pivot_beat) in detail. The other nine parameters (track_index, item_index, fields, channel, start_beat, etc.) are left unexplained, which is insufficient 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: stretching or compressing MIDI timing with a specific ratio. It explains the behavior (scaling about a pivot) and distinguishes from siblings by focusing on time, not pitch or velocity. It 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?
The description implies usage for time-based scaling, and there is no other sibling tool that performs this exact operation. However, it does not explicitly name alternatives or provide exclusions, so it falls 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.
strum_midi_notesA
Strum chords: stagger the onsets of simultaneous notes so each chord rolls out.
Only onsets move; note lengths are preserved.
Args: spread_beats: Total first-to-last onset span within each chord (>= 0; 0 = no-op). direction: "up" strikes the lowest note of a chord first, "down" the highest. chord_window_beats: Onset tolerance for grouping notes into one chord (0 = exact same onset).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| direction | No | up | |
| pitch_low | No | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No | ||
| spread_beats | Yes | ||
| chord_window_beats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by stating a key behavioral constraint: 'Only onsets move; note lengths are preserved.' It also clarifies edge behavior for spread_beats=0 (no-op) and defines direction semantics. This aligns with destructiveHint=false and gives the agent confidence 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 compact, front-loaded with the purpose, and every sentence adds value. The Args section is readable and parameter-specific, with no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters and no output schema, the description is incomplete: it does not explain how notes are selected (track_index, item_index, pitch_low, pitch_high, start_beat, end_beat, fields, channel), nor what return_notes does or what the tool returns. An agent would struggle to construct a correct call beyond the three described 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 description provides excellent meaning for spread_beats, direction, and chord_window_beats—the operation-specific parameters. However, schema description coverage is 0% and 9 of 12 parameters remain undocumented, including required parameters like track_index and item_index and the return_notes flag. The description partially compensates but does not cover the full invocation surface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Strum chords' and explains the exact transformation ('stagger the onsets of simultaneous notes so each chord rolls out'). It clearly distinguishes this from sibling MIDI operations like transpose, humanize, or quantize by focusing on onset staggering while preserving lengths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 want to strum chords by staggering onsets. It does not explicitly name alternatives or exclusion criteria, but the use case is unambiguous from the first sentence and the parameter semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_add_by_nameB
Add an FX plugin to a take by name.
Args: fx_name: Name of the FX plugin to add (e.g., "ReaEQ", "ReaComp"). Use the exact plugin name as it appears in REAPER's FX browser.
Returns: Object with 'ret' field containing the new FX index (or -1 if it could not be added).
| Name | Required | Description | Default |
|---|---|---|---|
| fx_name | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide destructiveHint=false, so the description carries most of the behavioral disclosure burden. It usefully documents the return value (ret with new FX index or -1 on failure), which is good context. However, it does not describe insertion position, whether existing FX are affected, or any other side effects of adding the plugin.
Agents need to know what a tool does to the world before calling 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 clear Args and Returns sections. There is no filler; every part contributes necessary information. The incomplete Args section is a semantic issue, not a structural or conciseness problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 four required parameters, no output schema, and no usage guidance, the description leaves important gaps. It does not clarify zero-based indexing, how to identify the correct take, or how this operation relates to take FX workflows. The return behavior is documented, but key operational details are 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 must compensate by explaining all parameters. It only documents fx_name, giving examples and the 'exact plugin name' instruction. track_index, item_index, and take_index are left entirely to inference from their names, which is insufficient for a tool with four required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add an FX plugin to a take by name.' The 'by name' qualifier distinguishes it from index-based FX operations, and 'to a take' helps differentiate it from track_fx_add_by_name. The purpose is immediately 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 provides no guidance on when to use this tool versus alternatives like track_fx_add_by_name or other take FX manipulation tools. It does not mention prerequisites, target selection context, or exclusions. The agent must infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_deleteCDestructive
Remove an FX plugin from a take.
Args:
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the destructiveHint annotation by stating 'Remove', which is consistent. However, it adds no additional behavioral context such as irreversibility, failure modes, or side effects on the take's audio. Since annotations already cover destructiveness, the description meets the bar but doesn't enhance 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 extremely brief but under-specified. It consists of one sentence and an incomplete 'Args:' placeholder, which adds no value. While there is no wasted wording, the brevity results in a lack of essential detail, making it more under-specification than 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 destructive operation with four required parameters and no output schema, the description is woefully incomplete. It lacks context about the track/items/take/FX hierarchy, validation, and expected behavior on invalid indices. An agent cannot confidently invoke this tool correctly based on the given 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% and the description provides no parameter explanations beyond the placeholder 'Args:'. The four index parameters (track_index, item_index, take_index, fx_index) are not described in terms of hierarchy or order, leaving the agent without sufficient information to correctly provide 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 states a specific action ('Remove an FX plugin') on a clear resource ('a take'), which distinguishes it from track_fx_delete and other take_fx operations. The verb+resource combination is unambiguous and the tool's scope is immediately understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like track_fx_delete or other take_fx operations. The description merely states what it does without any contextual conditions, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_countBRead-only
Get the number of FX plugins on a take.
Returns: Object with 'ret' field containing the FX count.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | 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 covered. The description adds the return shape ('Object with ret field containing the FX count'), which is useful because no output schema exists. However, it omits other behavioral details like error conditions or indexing requirements, making it adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by the return format. Every sentence earns its place, 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?
Given the simple getter complexity, the lack of output schema, and the 0% schema description coverage, the description should explain the required indices. It states purpose and return shape but leaves parameter semantics entirely unaddressed, so an agent cannot fully determine how to call it correctly from the 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 carry the burden for three required parameters (track_index, item_index, take_index). It only indirectly hints at take_index via 'on a take' and provides no information about track_index or item_index. This is insufficient for a three-parameter tool with no 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 states a specific verb and resource: 'Get the number of FX plugins on a take.' It clearly distinguishes the count operation from siblings like take_fx_get_list by specifying 'number', and from track_fx_get_count by specifying 'on a take'. However, it does not explicitly name an alternative, so it falls short of 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 offers no guidance on when to use this tool versus alternatives such as take_fx_get_list or track_fx_get_count. Usage is only implied by the tool name and purpose; no exclusions, prerequisites, or routing advice are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_enabledBRead-only
Get the enabled (not bypassed) state of an FX plugin on a take.
Args:
Returns: Object with 'ret' field (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety, and the description adds useful context by clarifying that 'enabled' means not bypassed and that the return is an object with a boolean 'ret' field. It does not contradict the annotations, though it could say more about error behavior 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 short and front-loads the core purpose, but the empty 'Args:' section is wasted space and the return information is terse. It is not verbose, but it includes a placeholder that does not 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 getter with four required indices and no output schema, the description should at least explain the parameters and their ordering. It covers the return shape, but the empty Args section leaves a significant gap 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 0% description coverage for four required integer parameters, and the description provides no parameter meaning beyond an empty 'Args:' placeholder. It fails to compensate for the schema gap by explaining track_index, item_index, take_index, or fx_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 uses a specific verb and resource: 'Get the enabled (not bypassed) state of an FX plugin on a take.' It clearly distinguishes this operation from sibling setters and track-level FX tools by naming the take scope and the enabled-state 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?
There is no explicit guidance on when to use this tool versus alternatives such as take_fx_set_enabled or track_fx_get_enabled. The description states what it does but not when or why to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_listBRead-only
Get a list of all FX plugins on a take.
Returns: Object with 'fx' array, each entry having index, name, and enabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already marks this as a safe read operation, and the description adds useful behavior by specifying the return shape: an object with an 'fx' array whose entries contain index, name, and enabled state. No contradicting behavior 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?
Two short sentences, front-loaded with the core action and followed immediately by the return structure. No wasted 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 return shape is helpful because there is no output schema, but the description leaves all three required index parameters undocumented despite 0% schema coverage. For a tool that cannot be invoked correctly without understanding track_index, item_index, and take_index, this is a significant 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 input schema has 0% description coverage for three required integer parameters (track_index, item_index, take_index), and the description does not explain any of them. 'On a take' hints at the take resource but adds no real meaning for how to supply 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?
States a specific verb and resource: 'Get a list of all FX plugins on a take.' The 'on a take' scope distinguishes it from sibling track_fx_get_list and from count/parameter-access siblings like take_fx_get_count and take_fx_get_param.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only restates the purpose; it gives no guidance on when to use this tool versus alternatives such as take_fx_get_count, take_fx_get_name, or track_fx_get_list. No 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.
take_fx_get_nameCRead-only
Get the name of an FX plugin on a take.
Args:
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered. Beyond that the description adds nothing: no mention of what happens with an out-of-range fx_index, whether indices are zero-based, or what is returned on an empty FX chain. Only the bare 'get' semantics come from the text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short, but it ends with a dangling 'Args:' fragment that is a template artifact rather than content, which hurts rather than helps structure. Shortness here reflects missing information, not efficient packing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 requiring four positional indices and providing no output schema, the description should at minimum explain the index chain (track→item→take→fx) and the return value. It does neither, so an agent cannot confidently construct a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description supplies no parameter information at all — the trailing 'Args:' is an unfilled placeholder. All four required indices (track_index, item_index, take_index, fx_index) are undocumented in both the schema and the description, leaving indexing conventions completely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get the name of an FX plugin on a take.' The phrase 'on a take' implicitly separates it from the track-level sibling track_fx_get_name, though that sibling is never named. Purpose is unambiguous but not explicitly differentiated 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?
There is no guidance on when to use this versus take_fx_get_list, take_fx_get_param_name, or track_fx_get_name, nor any prerequisite such as needing a valid take with at least one FX. The usage context is only inferable from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_num_paramsCRead-only
Get the number of parameters for an FX plugin on a take.
Args:
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | 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 covered. The description adds nothing beyond that: no note on indexing conventions, error behavior for invalid indices, or what happens when the take has no FX.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is short and front-loaded, but the trailing dangling 'Args:' is leftover template scaffolding that provides no information and indicates an incomplete definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no parameter documentation, and no behavioral notes, the description leaves the agent unable to call this four-required-parameter tool confidently. It should at minimum explain the index semantics and the integer 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?
All four parameters (track_index, item_index, take_index, fx_index) have 0% schema description coverage, and the description supplies no meaning for any of them. It is unclear whether indices are 0-based, 1-based, or what an 'item_index' resolves 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 states a specific verb plus resource: get the number of parameters for an FX plugin on a take. It implicitly distinguishes this take-level tool from the sibling track_fx_get_num_params, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus track_fx_get_num_params, take_fx_get_param, or take_fx_get_param_name. The agent must infer usage from the name alone, and no prerequisites or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_paramCRead-only
Get a parameter value on a take's FX plugin.
Args:
Returns: Object with 'value', 'min', and 'max' for the parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so safety is covered. The description adds the return object shape ('value', 'min', 'max'), which is useful because there is no output schema. It does not mention permissions, failure modes, or index bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but contains an empty 'Args:' header that adds no value. The Returns sentence earns its place by documenting the output shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 5-param getter with no parameter descriptions and no output schema, the description supplies only the return shape. It omits all parameter semantics and usage context, leaving significant gaps 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?
Five required integer parameters, 0% schema description coverage, and the description's 'Args:' section is empty. No parameter meaning, format, or indexing convention is provided, so it fails to compensate 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?
States a specific verb ('Get') and resource ('parameter value on a take's FX plugin'), clearly distinguishing from take_fx_set_param and track_fx_get_param. However, it does not explicitly name alternatives or scope beyond the 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?
No when-to-use guidance, no prerequisites, and no alternative named. The only implied usage is from the verb 'Get' and the presence of take_fx_set_param as a sibling; otherwise the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_get_param_nameCRead-only
Get the name of a parameter on a take's FX plugin.
Args:
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already establishes this is a safe read. The description only restates that it retrieves a name, adding no behavioral context such as what happens when indices are invalid or whether a missing plugin errors out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and front-loaded, but the trailing 'Args:' is an unfilled placeholder that adds noise without content, making the text feel truncated rather than complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 getter requiring a five-level index chain (track > item > take > fx > param) with no output schema and no parameter documentation, the description is far too thin. An agent cannot tell how the indices relate or what shape the returned name takes.
Complex tools with many parameters or behaviors need more documentation. 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 required parameters (track_index, item_index, take_index, fx_index, param_index) have 0% schema description coverage, and the description provides no meaning for them at all — it even trails off with a dangling 'Args:' and no content. The chained index structure is completely 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 names a specific verb and resource: 'Get the name of a parameter on a take's FX plugin.' This is precise enough to separate it from take_fx_get_param (value) and take_fx_get_num_params (count), though it never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus take_fx_get_param, track_fx_get_param_name, or any other sibling. No context, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_set_enabledBIdempotent
Enable or bypass an FX plugin on a take.
Args: enabled: True to enable, False to bypass.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context by clarifying that 'bypass' is the state when enabled is false, but it does not disclose side effects, persistence, or requirements such as the take/FX needing to exist. 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 extremely concise: one purpose sentence and a single useful Args entry. It front-loads the action and avoids any filler. Every word earns its place, and the format is clean 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?
With five required parameters, no output schema, and low annotation richness, this description is not complete enough for correct invocation. The agent must infer how to identify the target take and FX, what the index parameters mean, and whether there is any return value. The essential action is clear, but the invocation context is under-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?
Schema description coverage is 0%, so the description must compensate. It documents only the 'enabled' argument as 'True to enable, False to bypass,' which adds meaning for that one parameter. The four index parameters (track_index, item_index, take_index, fx_index) are entirely unexplained, leaving agents without guidance on their meaning, ordering, or zero-based nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Enable or bypass an FX plugin on a take.' This clearly distinguishes the tool from track-level FX tools like track_fx_set_enabled and from read-oriented siblings like take_fx_get_enabled. The use of 'take' scopes the resource 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 states what the tool does but gives no guidance on when to choose it over alternatives. It does not mention related tools such as take_fx_get_enabled for querying state or track_fx_set_enabled for track-level FX. There are no conditions, exclusions, or context cues beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_fx_set_paramAIdempotent
Set a parameter value on a take's FX plugin.
Args: value: New value (typically normalized 0-1; check min/max via take_fx_get_param).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| fx_index | Yes | ||
| item_index | Yes | ||
| take_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, covering safety. The description adds the behavioral detail that value is normalized 0-1 and recommends validating ranges through take_fx_get_param, which is useful but limited. It does not disclose potential side effects or behavior on out-of-range values, relying on annotations for 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 extremely concise and front-loaded. It states the action in one sentence, then provides an Args section with a single parameter explanation. There is no redundant or filler content; every element earns its place. It is an efficient, minimal 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 set operation with 6 required parameters and no output schema, the description is minimal but adequate. It fails to explain how to identify the target take, FX, or parameter via the index parameters, and does not mention how to obtain these indices (likely through sibling getter tools). However, the annotation coverage and the naming of parameters may be sufficient for an agent familiar with the domain. The description is not thoroughly complete, but it provides the core action and one important value hint.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'value' parameter (normalization and range checking), but entirely ignores the other five parameters: track_index, item_index, take_index, fx_index, param_index. While these names imply indices, the description does not clarify their semantics (e.g., zero-based vs one-based, or how to obtain them), leaving most parameters poorly 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 action: 'Set a parameter value on a take's FX plugin.' This is a specific verb and resource, distinguishing it from getter tools like take_fx_get_param and enable/disable tools like take_fx_set_enabled. 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 gives some usage hint by mentioning that the value is typically normalized 0-1 and advising to check min/max via take_fx_get_param. However, it does not explicitly state when to use this tool versus alternatives, nor any exclusions or prerequisites. The guidance is minimal and mostly operational rather than strategic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_repeatA
Toggle repeat/loop mode.
Returns: Object with new repeat state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint:false, so the description doesn't need to cover that. It adds the return behavior (an object with the new repeat state), which is useful but does not disclose any other side effects or context (e.g., whether it affects playback). Given the simplicity of the operation, 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 extremely concise: two short sentences that lead with the action and follow with the return value. There is no filler or redundant information, earning full marks for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 toggling tool with no parameters and no output schema, the description provides enough information: what it does and what it returns. It doesn't mention any potential side effects on the transport system, but given the sibling tools and the operation's simplicity, it is nearly complete. A 5 would require explicit handling of edge cases or more detailed return structure, which isn't necessary here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document. Per the calibration, a zero-parameter tool gets a baseline of 4. The description adds no parameter information because none is needed, and the schema is fully covered by the absence of 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 'Toggle repeat/loop mode' with a specific verb and resource. It distinguishes from the sibling tool 'get_repeat_state' by indicating a change operation rather than a read operation, making the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: it toggles, while 'get_repeat_state' reads. However, there is no explicit guidance such as 'use this to change repeat mode, use get_repeat_state to query it.' The description does not mention alternatives or exclusions, so it relies on the tool's name and sibling set for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_add_by_nameA
Add an FX plugin to a track by name.
Args: fx_name: Name of the FX plugin to add (e.g., "ReaEQ", "ReaComp", "ReaLimit"). Use the exact plugin name as it appears in REAPER's FX browser. position: Optional insertion position (0-based) in the FX chain. Default -1 adds at the end; 0 inserts at the beginning.
Returns: Info about the added FX including its index.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_name | Yes | ||
| position | No | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=false annotation, the description discloses meaningful behavior: position is 0-based, -1 appends at the end, 0 inserts at the beginning, and the return value includes the FX index. It does not cover failure modes for unknown FX names or duplicate adds, but the core behavioral traits are 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, front-loaded with the purpose, and organized into clear Args and Returns sections. Every sentence contributes useful information, 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 main operation, two of three parameters, and gives a return hint. It is not fully complete because track_index is undocumented, failure behavior for invalid plugin names is unspecified, and there is no mention of how this differs from take_fx_add_by_name. This is adequate but leaves meaningful 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?
With 0% schema description coverage, the prose carries the burden and does document fx_name richly (examples, exact-name requirement) and position (default and 0-based semantics). However, it omits track_index entirely, a required parameter, so a critical argument is left for the agent to infer 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 action, resource, and selection mechanism: 'Add an FX plugin to a track by name.' This clearly distinguishes it from take_fx_add_by_name and the specialized add_eq/add_limiter tools, so an agent can tell what the tool does at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The main use case is implied by the function statement, and the fx_name guidance ('Use the exact plugin name as it appears in REAPER's FX browser') is actionable. However, it never explicitly states when to prefer this tool over alternatives such as take_fx_add_by_name, 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.
track_fx_deleteBDestructive
Remove an FX plugin from a track.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint: true already signals the destructive nature, and the description's 'Remove' is consistent with that. However, the description adds no extra context beyond the annotation—no mention of permanence, undo behavior, or what happens to the plugin after removal. With the annotation covering safety, a 3 is appropriate for not contradicting and simply aligning with the 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 a single, front-loaded sentence with no fluff. It states the action directly and is appropriately sized for a simple removal operation. Every word earns its place, and there is no unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 delete with a destructive annotation, the description is minimally acceptable but lacks essential operational details. It does not explain the effects (e.g., that the plugin is removed from the track's FX chain), nor does it clarify the relationship between track_index and fx_index. Without an output schema or additional parameter context, an agent might call it correctly but without assurance about post-condition 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 for parameter meaning. It does not mention track_index or fx_index at all, leaving the agent to rely on the parameter names. While these names are fairly inferable (indices into track and FX lists), the description provides no additional clarity on indexing (zero/one-based), valid ranges, or error conditions. This is a significant gap given the zero 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 'Remove' and the resource 'FX plugin from a track', making the primary purpose unambiguous. It does not explicitly differentiate from sibling tools like take_fx_delete, but the name 'track_fx_delete' and the phrase 'from a track' inherently separate it from take-level removal, so it is still specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not specify when this tool should be chosen over related tools (e.g., track_fx_set_enabled for toggling, or take_fx_delete for take FX), nor does it mention any prerequisites or conditions for use. An agent must infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_countBRead-only
Get the number of FX plugins on a track.
Returns: Object with 'ret' field containing count.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the return shape ('Object with 'ret' field containing count'), which is useful beyond the annotation. It doesn't disclose edge cases like behavior for tracks with no FX or invalid track_index, but the annotation covers the 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 compact: one sentence for purpose and a brief return format note. It's front-loaded with the action and resource. The return format line is useful and not redundant with the schema since there's no output 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 simple read-only count tool with one parameter, the description is mostly adequate. It covers the return shape and purpose. However, it doesn't clarify track_index semantics (zero-based vs one-based) or behavior for invalid indices, which an agent might need to call it correctly. The readOnlyHint annotation covers the safety aspect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the resource ('track') but doesn't explain what track_index means (zero-based? which track?). The description adds minimal meaning beyond the schema's bare integer type, so it doesn't fully compensate for the coverage 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 a specific verb and resource: 'Get the number of FX plugins on a track.' This clearly distinguishes it from sibling tools like track_fx_get_list or take_fx_get_count, though it doesn't explicitly name those alternatives. 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: it's a read-only query for a track's FX count, and the required track_index parameter indicates which track. However, it doesn't explicitly state when to prefer this over track_fx_get_list or take_fx_get_count, nor does it mention any prerequisites like track existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_enabledBRead-only
Get the enabled state of an FX plugin.
Returns: Object with 'ret' field (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the return format: an object with a 'ret' boolean field. This goes beyond the readOnlyHint annotation, providing concrete information about what the caller receives. It aligns with the annotation (getter implies read-only) and adds useful behavioral detail without contradicting anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose, followed by a clear return description. Every word earns its place with no fluff, making it appropriately sized and efficiently 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?
The description covers the core action and return type, but lacks parameter explanation, error behavior, and does not clarify that the FX is on a track specifically. Even for a simple getter, an agent cannot confidently determine correct indices or know what happens on invalid input without additional context, making it 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 does not explain the meaning or format of track_index and fx_index. With 0% schema description coverage, the description should compensate but does not. The parameter names suggest their roles, but the description omits any detail about indexing, zero-based convention, or which FX chain they refer 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 states a specific verb ('Get') and a resource ('enabled state of an FX plugin'). It clearly distinguishes from the setter tools (track_fx_set_enabled) by the verb. However, it does not explicitly specify that this is for track FX as opposed to take FX, relying on the tool name for that distinction. Thus it is clear but slightly incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 like track_fx_set_enabled or take_fx_get_enabled. It doesn't mention any conditions, exclusions, or contexts. An agent would have to infer the appropriate usage from the name and surrounding context rather than from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_listARead-only
Get list of all FX plugins on a track.
Returns: Object with 'fx' array, one entry per FX with index, name, enabled and offline, plus fx_count. 'enabled' is False when the FX is bypassed. Normal FX chain only, not input/record FX or master monitoring FX.
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral details: the returned object contains an 'fx' array with index, name, enabled, offline fields, plus fx_count, and that 'enabled' is False when bypassed. It also discloses scope limitations. This goes beyond the annotation and gives the agent a reliable expectation of the result.
Agents need to know what a tool does to the world before calling 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 primary action is stated in the first sentence, followed by a concise return specification and scope exclusions. Every sentence contributes meaning without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one integer parameter and no output schema, the description covers the return shape and scope well. The main omission is the lack of documentation for track_index semantics, which prevents it from being fully complete. It is still sufficient for most agents 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 must explain the track_index parameter, but it only says 'on a track' without defining the indexing scheme (e.g., zero-based), range, or error behavior. The parameter name is self-explanatory at a high level, but the description does not compensate 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 states a specific verb and resource: 'Get list of all FX plugins on a track.' It also distinguishes itself from take-FX tools by explicitly saying it covers the normal FX chain only, not input/record FX or master monitoring FX. This makes the tool's purpose unambiguous and separates it from siblings like take_fx_get_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 clear scope context by saying it returns the normal FX chain only and excludes input/record FX and master monitoring FX. This tells the agent when not to use it, though it does not explicitly name alternative tools such as take_fx_get_list for take FX chains. Overall, the guidance is clear but lacks explicit sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_nameCRead-only
Get the name of an FX plugin.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: true covers the read-only nature of this operation, and the description's 'Get' is consistent with that. The description adds no additional behavioral context (e.g., return format, error handling, out-of-bounds behavior), but it does not contradict the annotation. Given the annotation presence, a baseline 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 a single, concise sentence with no wasted words. It is front-loaded with the core action. However, it is under-specified rather than simply concise, which slightly reduces the score from a perfect 5, 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 simple getter with two indices and no output schema, the description is incomplete. It does not explain the return value (presumably a string), nor does it differentiate this tool from take_fx_get_name. With no output schema and zero parameter coverage, more context is needed for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It does not. The description says nothing about track_index or fx_index, leaving the agent to rely on parameter names alone. This is insufficient given the zero 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 verb and resource ('get the name of an FX plugin'), but it is generic and does not specify that this applies to track FX versus take FX. The tool name track_fx_get_name disambiguates, but the description itself does not add that context. It is not a tautology, but it lacks specificity to distinguish from the sibling take_fx_get_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?
There is no guidance on when to use this tool versus alternatives. The description does not mention the distinction between track FX and take FX, nor does it provide any conditions, prerequisites, or exclusions. An agent would have to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_num_paramsBRead-only
Get the number of parameters for an FX plugin.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already communicates that this is a safe read operation, and the description aligns with that. The description adds no further behavioral context such as behavior for invalid track_index/fx_index values or whether hidden parameters are counted, but it does not contradict 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 a single concise sentence with no filler. It is front-loaded and every word contributes to stating 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 simple two-parameter getter, the description is minimally viable: it names the operation, and the required indices can be inferred from the schema and tool name. However, with no output schema, it does not describe the return value format or edge-case behavior, and it does not clarify track versus take FX 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 by explaining track_index and fx_index, but it does not. The parameter names are somewhat self-explanatory, and the phrase 'FX plugin' hints at fx_index, but there is no detail on indexing order, zero-based indexing, or how the track is identified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get') and a clear object ('the number of parameters for an FX plugin'). It is readable and unambiguous about the fundamental operation, though it does not explicitly distinguish track FX from take FX where the sibling take_fx_get_num_params 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?
There is no guidance about when to use this tool versus alternatives such as track_fx_get_param_name, track_fx_get_count, or take_fx_get_num_params. The intended usage context is only implied by the tool name, not stated in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_get_paramARead-only
Get a specific parameter value of an FX plugin.
Returns: Object with value, min, max for the parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a non-mutating operation, and the description adds useful behavioral detail by specifying the exact return shape: an object with value, min, and max. It does not discuss error behavior or out-of-range indexing, but for a simple getter this is reasonable.
Agents need to know what a tool does to the world before calling 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, front-loaded with the action, and contains only the essential return information. No redundant phrasing or filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward indexed getter, the description provides the action and return shape, and the annotation covers read-only safety. It lacks indexing conventions (e.g., zero-based vs one-based) and potential error conditions, but these are minor gaps for a tool of this 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%, and the description does not explain track_index, fx_index, or param_index. The parameter names are self-explanatory within the tool's domain, but the description adds no meaning beyond what the schema already exposes, and it fails to compensate 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 states a clear, specific operation: retrieving the value of a particular FX parameter, and distinguishes itself from sibling tools like track_fx_get_param_name or track_fx_set_param by focusing on the value plus min/max. The resource and action are unambiguous, and the tool name reinforces the track-FX 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 its use when a caller needs a parameter value from an FX plugin, but it does not explicitly state when to prefer this over take_fx_get_param, track_fx_get_param_name, or set-oriented alternatives. Usage is inferred from the verb and resource 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.
track_fx_get_param_nameBRead-only
Get the name of an FX parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a non-destructive getter, and the description agrees. It adds the return concept of 'name' but no additional behavioral details such as whether indices are zero-based, what happens for an invalid index, or the returned string format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word carries meaning, and it is appropriately sized for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameter descriptions, the description needs to provide more context. It does not specify the return type, indexing convention, or how it differs from take_fx_get_param_name, so an agent may not be able to invoke it correctly in ambiguous situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain track_index, fx_index, or param_index beyond the generic phrase 'FX parameter.' The parameter names are self-descriptive, but there is no information about index base, ordering, or required value 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 uses a specific verb and resource: 'Get the name of an FX parameter.' It is clear but generic—it could equally describe take_fx_get_param_name, so it does not explicitly distinguish this track-FX tool from its take-FX 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?
There is no guidance on when to use track_fx_get_param_name instead of related tools such as take_fx_get_param_name, track_fx_get_param, or track_fx_get_name. No prerequisites or exclusions are stated, leaving the agent to rely on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_moveBIdempotent
Move an FX plugin to a new position within the same track's FX chain.
Args: fx_index: Current FX index (0-based) in the FX chain. new_position: Target position (0-based). 0 = beginning of the chain.
| Name | Required | Description | Default |
|---|---|---|---|
| fx_index | Yes | ||
| track_index | Yes | ||
| new_position | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and destructiveHint=false, so the agent knows this is a safe, non-destructive operation. The description adds the positional semantics (0-based indices, 0 = beginning of chain) but doesn't disclose behavior like what happens if indices are out of range, whether the move is relative to current position, or if the operation is atomic. With annotations covering safety, 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 concise and front-loaded with the main action. The Args section is clear and structured. It could be slightly more compact, but every sentence earns its place. The 0-based clarification is valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reorder operation with annotations covering safety, the description is mostly adequate. However, track_index is undocumented, and there's no mention of error behavior (e.g., invalid indices, FX not found). The output schema is absent, but for a move operation the return value is likely trivial. The missing track_index documentation is the main 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%, so the description must compensate. It explains fx_index and new_position, but track_index is completely undocumented in both the description and the schema. The description adds meaning for two of three parameters, but the missing track_index is a significant gap. The 0-based indexing clarification is helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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: moving an FX plugin to a new position within the same track's FX chain. It specifies the resource (FX plugin, track's FX chain) and the operation (move). It doesn't explicitly distinguish from sibling tools like track_fx_get_list or track_fx_delete, but the verb 'move' and the positional semantics make the 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 implies usage context: it's for reordering FX within a track's chain. It doesn't explicitly state when to use this vs alternatives, but the operation is unique among siblings. It doesn't mention prerequisites like the track_index parameter or that the FX must exist, but the parameter list covers that. No explicit exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_set_enabledB
Enable or disable an FX plugin.
Args: enabled: True to enable, False to bypass.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| fx_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some behavioral context by explaining that False means 'bypass,' which clarifies the enabled semantics. The destructiveHint=false annotation already covers safety, and the description does not contradict it. However, it does not disclose behavior around invalid indices or whether the operation is reversible beyond what the annotation 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 very brief and front-loaded with the core purpose. The Args section is minimal and directly explains the Boolean meaning of the key parameter. No unnecessary words are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three required parameters and no output schema, the description is incomplete. It omits any guidance on how to interpret track_index and fx_index, and it does not mention whether indices are zero-based or how they relate to the FX list returned by other tools. This leaves meaningful gaps for an agent deciding how to call 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%, and the description only explains the 'enabled' parameter. The required 'track_index' and 'fx_index' parameters are left to be inferred from their names; no detail is given about indexing conventions or how to obtain valid 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 action: 'Enable or disable an FX plugin.' The verb and resource are specific and easy to understand. It does not explicitly distinguish track FX from take FX, so it relies partly on the tool name 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 no guidance about when to use this tool versus alternatives like take_fx_set_enabled or track_fx_get_enabled. It does not mention prerequisites, index sourcing, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_fx_set_paramC
Set a parameter value on an FX plugin.
Args: value: New value for the parameter (typically normalized 0-1, check min/max).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| fx_index | Yes | ||
| param_index | Yes | ||
| track_index | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=false, which already signals non-destructiveness. The description adds no behavioral context beyond the 'set' action, such as side effects, reversibility, or validation behavior. It does note the value is 'typically normalized 0-1', which hints at range handling, but this is more parameter semantics than behavior. The description fails to disclose any meaningful operational traits 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, with a single line and an args block. However, it is under-specified, prioritizing brevity over utility. The structure is adequate but could be improved with additional context about the indices without becoming verbose. It earns a middling score because it is compact but not well-rounded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 four required parameters, no output schema, and zero schema descriptions, the description is grossly incomplete. It does not explain the meaning of indices, how to obtain them, or how this tool relates to the broader FX toolset. An agent cannot reliably invoke this tool correctly based on the 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 for all four parameters. Only 'value' is explained (normalized 0-1, check min/max). The indices (track_index, fx_index, param_index) are completely undocumented, leaving the agent without guidance on how to obtain or interpret them. This is a significant gap given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'set' and the resource 'parameter value on an FX plugin', which is clear and specific. However, it does not distinguish from sibling tools like take_fx_set_param or track_fx_set_enabled, relying on the tool name to disambiguate. It is not a pure tautology but adds minimal specificity 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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of when to prefer this over take_fx_set_param or track_fx_set_enabled, nor any context about prerequisites or typical workflows. The agent is left to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transpose_midi_notesA
Transpose MIDI notes by a number of semitones (12 = an octave).
A note that would land outside pitch 0-127 keeps its original pitch and is counted in
skipped instead.
Args: semitones: Signed shift; positive is up, negative is down. 0 = no-op.
Returns:
{ok, notes_changed, clamped, skipped, out_of_bounds, notes:[...]}, where notes is
the full note list after the transform, re-indexed.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| channel | No | ||
| end_beat | No | ||
| pitch_low | No | ||
| semitones | Yes | ||
| item_index | Yes | ||
| pitch_high | No | ||
| start_beat | No | ||
| track_index | Yes | ||
| return_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the sparse annotation by disclosing edge-case behavior: notes outside pitch 0-127 keep their original pitch and are counted in `skipped`. It also lists the return fields, including `clamped`, `out_of_bounds`, and the re-indexed note list, giving the agent a clear picture of effects and outputs.
Agents need to know what a tool does to the world before calling 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: core action first, then edge-case behavior, then argument and return summary. Each sentence earns its place 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?
The tool has 10 parameters and no output schema, yet the description only covers one parameter and the return shape. An agent needs to know how `track_index` and `item_index` select the target, how the optional filters constrain which notes are affected, and what `return_notes` controls. This is a substantial completeness gap for a complex 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%, so the description must compensate, but it only documents `semitones`. The required `track_index` and `item_index`, plus all optional filtering parameters such as `start_beat`, `pitch_low`, and `channel`, are left unexplained, leaving the agent unable to confidently construct the full call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation—transposing MIDI notes by a number of semitones—and clarifies the octave relationship. It is clearly distinguishable from sibling MIDI tools like nudge_midi_notes or set_midi_note, since it names the exact transformation and its 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 makes the intended use inferable: shift MIDI note pitches by semitones, with positive/negative direction defined. However, it does not explicitly mention when to prefer this tool over related alternatives, nor does it provide any exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoADestructive
Undo the last action in REAPER.
Returns: Object with undo description.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description aligns by indicating an undo action. It adds the return value ('Object with undo description') which provides extra behavioral detail beyond the annotation, though it does not elaborate on side effects 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 extremely concise and front-loaded. It states the purpose in the first sentence and provides the return type in the second, with no wasted words. Perfectly sized for a simple command.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-argument tool, the description is mostly sufficient, but it lacks any mention of the relationship to 'redo' or when undo might be unavailable. The absence of usage guidance and minimal behavioral context makes it slightly incomplete for an agent deciding between undo and redo.
Complex tools with many parameters or behaviors need more documentation. Simple 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 covers 100% of them (trivially empty). Per the baseline for 0 params, a score of 4 is appropriate. The description adds nothing about parameters, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Undo the last action in REAPER', which is a specific verb and resource. It distinguishes the tool from its sibling 'redo' by indicating the opposite action, 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?
There is no guidance on when to use this tool versus alternatives like 'redo' or 'get_undo_state'. The description only states what it does, without any context on appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unselect_all_itemsA
Unselect all media items.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only provides destructiveHint=false. The description adds the scope 'media items' but does not disclose whether track selection is preserved, whether the action is undoable, or any other side effects. It is not misleading, but adds limited 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 a single, clear sentence with no redundant words. It is appropriately sized for a no-parameter tool and front-loads the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 command, the description is sufficient for an agent to understand the operation. It could optionally mention that track selection is unaffected or that the tool returns nothing, but these are minor omissions 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 tool has zero parameters, so the schema fully covers parameter semantics. The baseline of 4 applies because there is no parameter information the description would need to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Unselect') and resource ('all media items'), clearly distinguishing it from sibling tools like unselect_all_tracks and select_all_items. 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?
No guidance is provided about when to use this tool versus alternatives such as unselect_all_tracks or select_all_items. The intended use is only implied by the name and description, with no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unselect_all_tracksA
Unselect all tracks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation only provides destructiveHint=false, and the description adds no additional behavioral context such as whether item selections are unaffected or whether the action is undoable. However, for a zero-parameter selection-state command, the described behavior is straightforward and adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It is appropriately sized for the tool's trivial scope and is immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless selection command with no output schema, the description is complete. It tells the agent exactly what action will be performed, and nothing else is required to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so no parameter documentation is needed. The schema coverage is 100% and the description correctly omits parameter details, meeting the baseline for a parameterless 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 ('Unselect') and a specific resource ('all tracks'), making the operation immediately clear. It is also distinguishable from sibling tools like select_all_tracks and unselect_all_items without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance or alternatives are provided, but the intended usage is strongly implied by the tool name and description. An agent can reasonably infer this is for clearing the current track selection, especially given sibling tools like select_all_tracks and unselect_all_items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zoom_to_projectA
Zoom the arrange view to show the entire project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=false, and the description's 'zoom' language indicates a non-destructive view manipulation without additional side effects. It adds the specific object of zooming (arrange view) and target (entire project), but doesn't disclose details such as whether scroll position or selection is preserved. Given the annotation already covers the destructive profile, the description 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?
One compact sentence that states the action and target with no filler. Every word contributes to meaning, and the main intent is immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 view command with a clear non-destructive annotation, the description fully states the behavior and requires no further details for invocation. It is complete enough for an agent to call it correctly, though it would benefit from a note contrasting with zoom_to_selection, but that is captured in usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema has no properties, so there is nothing to document. The baseline of 4 applies. No additional parameter information 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 the specific verb 'zoom' and identifies the 'arrange view' as its target, with a clear goal of showing the entire project. This naturally distinguishes it from siblings like zoom_to_selection, which focus on a selected range. It is precise 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 states what occurs but gives no explicit guidance on when to prefer it over zoom_to_selection or other view-control tools. The context of 'show the entire project' implicitly indicates usefulness for overview, but no alternatives or exclusions are mentioned. This leaves the agent to infer the decision on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zoom_to_selectionB
Zoom the arrange view to the time selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide destructiveHint=false, which is minimal. The description adds that the operation is a view action on the arrange view, which is helpful context and implies no data mutation. However, it does not disclose behavior when no time selection exists, whether the view state is changed persistently, or any other nuances. Given the minimal annotation coverage, the description carries some burden but is still 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?
A single concise sentence with no redundancy. It front-loads the action and target, and every word earns its place. The description is appropriately sized for a zero-parameter tool, neither verbose nor incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 view operation with no parameters and no output schema, the description is largely adequate. However, it omits practical information such as the requirement that a time selection must exist for the action to be meaningful, and it does not mention the absence of return value (though that is likely implicit). It could also benefit from a note that this only affects the arrange view, not other views. Thus, it is minimum viable but has room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to elaborate on parameter meaning. The schema covers 100% of parameters (none). The description correctly implies that the operation uses the current time selection as implicit input, which adds a bit of context beyond the empty schema, aligning with the baseline 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 states a clear action ('Zoom') on a specific resource ('arrange view') tied to a specific context ('time selection'). It distinguishes from the sibling 'zoom_to_project' by explicitly referencing the time selection, making the scope clear. Could be stronger by explicitly naming the alternative, but it is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The sibling 'zoom_to_project' exists, but the description does not contrast them or mention any prerequisites (e.g., a time selection must exist). The agent must infer usage from the name alone, which is not ideal.
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.
2 tool updates
v1.8.0- Added
measure_loudness - Added
measure_spectrum
1 tool update
v1.7.5- Added
select_midi_notes
176 tool updates
v1.7.3- First observed
add_compressor - First observed
add_envelope_point - First observed
add_eq - First observed
add_fx_envelope_point - First observed
add_limiter - First observed
add_marker - First observed
add_mastering_chain - First observed
add_midi_note - First observed
add_midi_notes_batch - First observed
add_parallel_compression - First observed
add_region - First observed
arm_track - First observed
arm_track_envelope - First observed
clear_all_peak_indicators - First observed
clear_envelope - First observed
clear_fx_envelope - First observed
clear_midi_item - First observed
clear_time_selection - First observed
configure_reacomp_sidechain - First observed
copy_selected_items - First observed
create_bus - First observed
create_midi_item - First observed
create_project - First observed
create_send - First observed
crop_to_active_take - First observed
cut_selected_items - First observed
delete_envelope_point - First observed
delete_fx_envelope_point - First observed
delete_item - First observed
delete_marker - First observed
delete_midi_note - First observed
delete_region - First observed
delete_selected_items - First observed
delete_send - First observed
delete_take - First observed
delete_track - First observed
duplicate_item - First observed
explode_takes - First observed
find_eq - First observed
get_active_take - First observed
get_all_tracks - First observed
get_cursor_position - First observed
get_envelope_point_count - First observed
get_envelope_points - First observed
get_eq_band_enabled - First observed
get_eq_bands - First observed
get_fx_envelope - First observed
get_fx_envelope_points - First observed
get_fx_preset - First observed
get_fx_presets - First observed
get_item_info - First observed
get_markers - First observed
get_master_track - First observed
get_midi_item - First observed
get_midi_notes - First observed
get_play_position - First observed
get_play_state - First observed
get_project_length - First observed
get_project_name - First observed
get_project_path - First observed
get_project_summary - First observed
get_regions - First observed
get_repeat_state - First observed
get_selected_items - First observed
get_selected_midi_notes - First observed
get_selected_tracks - First observed
get_takes - First observed
get_tempo - First observed
get_time_selection - First observed
get_time_signature - First observed
get_track - First observed
get_track_count - First observed
get_track_envelope - First observed
get_track_fx_chunk - First observed
get_track_items - First observed
get_track_master_send - First observed
get_track_num_sends - First observed
get_track_peak - First observed
get_track_peak_hold - First observed
get_undo_state - First observed
go_to_marker - First observed
go_to_region - First observed
humanize_midi_notes - First observed
insert_audio_file - First observed
insert_track - First observed
legato_midi_notes - First observed
nudge_midi_notes - First observed
open_project - First observed
paste_items - First observed
pause - First observed
play - First observed
quantize_midi_notes - First observed
ramp_midi_note_velocities - First observed
record - First observed
redo - First observed
remove_overlapping_midi_notes - First observed
render_project - First observed
render_region - First observed
run_action - First observed
run_action_by_name - First observed
save_fx_preset - First observed
save_project - First observed
scale_midi_note_velocities - First observed
select_all_items - First observed
select_all_tracks - First observed
select_comp_lane - First observed
select_track - First observed
set_active_take - First observed
set_cursor_position - First observed
set_eq_band - First observed
set_eq_band_enabled - First observed
set_fx_preset - First observed
set_item_fade_in - First observed
set_item_fade_out - First observed
set_item_length - First observed
set_item_mute - First observed
set_item_position - First observed
set_item_volume - First observed
set_midi_note - First observed
set_midi_note_velocity - First observed
set_send_dest_channels - First observed
set_send_source_channels - First observed
set_send_volume - First observed
set_tempo - First observed
set_time_selection - First observed
set_time_signature - First observed
set_track_as_folder - First observed
set_track_automation_mode - First observed
set_track_color - First observed
set_track_input - First observed
set_track_master_send - First observed
set_track_monitor - First observed
set_track_mute - First observed
set_track_name - First observed
set_track_pan - First observed
set_track_phase - First observed
set_track_solo - First observed
set_track_volume - First observed
set_track_width - First observed
setup_sidechain_compression - First observed
setup_sidechain_send - First observed
snap_midi_notes_to_scale - First observed
split_item - First observed
stop - First observed
stretch_midi_notes - First observed
strum_midi_notes - First observed
take_fx_add_by_name - First observed
take_fx_delete - First observed
take_fx_get_count - First observed
take_fx_get_enabled - First observed
take_fx_get_list - First observed
take_fx_get_name - First observed
take_fx_get_num_params - First observed
take_fx_get_param - First observed
take_fx_get_param_name - First observed
take_fx_set_enabled - First observed
take_fx_set_param - First observed
toggle_repeat - First observed
track_fx_add_by_name - First observed
track_fx_delete - First observed
track_fx_get_count - First observed
track_fx_get_enabled - First observed
track_fx_get_list - First observed
track_fx_get_name - First observed
track_fx_get_num_params - First observed
track_fx_get_param - First observed
track_fx_get_param_name - First observed
track_fx_move - First observed
track_fx_set_enabled - First observed
track_fx_set_param - First observed
transpose_midi_notes - First observed
undo - First observed
unselect_all_items - First observed
unselect_all_tracks - First observed
zoom_to_project - First observed
zoom_to_selection
TDQS
Scored across 179 tools
The set contains numerous near-duplicate or overlapping tools: generic FX parameter setters coexist with high-level helpers (set_eq_band, add_eq, track_fx_set_param), and sidechain setup is split across create_send, setup_sidechain_send, configure_reacomp_sidechain, and setup_sidechain_compression. The 179-tool surface makes it hard to choose reliably, and render_region is explicitly a non-implemented alias, adding confusion.
Names are overwhelmingly snake_case, but the convention is inconsistent: some put the resource first (track_fx_get_count, take_fx_get_param), others the verb first (get_track_count, set_track_volume), and there are parallel track_/take_ prefixes and mixed add/create/insert verbs. It is readable but not a single predictable pattern.
179 tools is far beyond a well-scoped set for any single MCP server; even a broad DAW surface does not justify this many, and many are thin wrappers or convenience duplicates. The count alone makes the server unwieldy and difficult to navigate.
The surface covers project, track, item, take, MIDI, FX, routing, automation, rendering, markers, undo, and measurement, so lifecycle coverage is extensive. Minor gaps remain (e.g., no explicit master volume setter and a non-implemented render_region), but agents can work around them.
Maintenance
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
MCP server for progressive tool usage at any scale (see https://klavis.ai)
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityAmaintenanceA 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.58152MIT
- AlicenseBqualityAmaintenanceConnects AI assistants to REAPER for music production, enabling full control over tracks, MIDI, mixing, mastering, and audio analysis through 153 tools across 24 modules.17484Apache 2.0
- AlicenseBqualityDmaintenanceThis 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
- AlicenseAqualityAmaintenanceAn MCP server that enables AI assistants to control Ableton Live, providing 104 tools for music production including track, clip, device, and mixer control.156504 PyPI30MIT