Skip to main content
Glama

TwelveTake REAPER MCP

A TwelveTake Studios project.

Tools Buy Me a Coffee Ko-fi

Setup guide, examples and FAQ -> twelvetake.com/tools/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.7.3

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

setup_sidechain_compression()

Creates send, routes to channels 3-4, configures ReaComp's detector input — complete sidechain setup in one call

add_mastering_chain()

Adds ReaEQ → ReaComp → ReaEQ → ReaLimit to master track with proper signal flow

add_parallel_compression()

Creates a bus track, sets up the send, adds compressor — NY-style compression ready to blend

create_bus()

Creates a submix track and routes your specified tracks to it

get_project_summary()

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 Lua only — the bridge script has no dependencies, nothing extra to install in REAPER

  • Copy the script, run it, connect your AI assistant

176 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

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 script runs inside REAPER and handles communication with the MCP server.

The package can deploy it for you:

uvx twelvetake-reaper-mcp --install-bridge

That copies reaper_mcp_bridge.lua into REAPER's Scripts folder for your platform, backing up any existing copy 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".

To do it by hand instead:

  1. Copy reaper_mcp_bridge.lua to your REAPER Scripts folder:

    • Windows: %APPDATA%\REAPER\Scripts\

    • macOS: ~/Library/Application Support/REAPER/Scripts/

    • Linux: ~/.config/REAPER/Scripts/

  2. In REAPER: Actions → Show action list → Load ReaScript

  3. Select reaper_mcp_bridge.lua and click Run

You should see "REAPER MCP Bridge (File-based, Full API) started" in REAPER's console.

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 servers key with "type": "stdio" instead of mcpServers.

To confirm the server starts on its own:

uvx twelvetake-reaper-mcp
# or: pipx run twelvetake-reaper-mcp

It 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 mcp

Point 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.py

Nix 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 allow

Then install the dependencies as usual:

pip install -r requirements.txt

This pins the Python version and keeps dependencies isolated from your system.

Note: the x86_64-linux dev 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

%APPDATA%\REAPER\Scripts\mcp_bridge_data

macOS

~/Library/Application Support/REAPER/Scripts/mcp_bridge_data

Linux

~/.config/REAPER/Scripts/mcp_bridge_data (or ~/.reaper/... for older installs)

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_track_count()

Get total number of tracks (excluding master)

get_track(index)

Get track info (name, volume, pan, mute, solo)

get_all_tracks()

Get info for all tracks

get_master_track()

Get master track info

insert_track(index, name)

Create a new track

delete_track(index)

Delete a track

set_track_name(index, name)

Rename a track

set_track_volume(index, db)

Set volume in dB

set_track_pan(index, pan)

Set pan (-1 to 1)

set_track_mute(index, mute)

Mute/unmute track

set_track_solo(index, solo)

Solo/unsolo track

set_track_phase(index, invert)

Invert phase

set_track_width(index, width)

Set stereo width (0-2)

set_track_color(index, r, g, b)

Set track color

get_track_peak(index, channel)

Get current peak level (dB)

get_track_peak_hold(index, channel)

Get held peak since last reset (dB)

clear_all_peak_indicators()

Reset peak hold on all tracks

get_track_master_send(index)

Get master/parent send state

set_track_master_send(index, enabled)

Enable/disable master send

set_track_as_folder(index, depth)

Set as folder parent/child

arm_track(index, arm)

Arm for recording

set_track_input(index, input)

Set record input

set_track_monitor(index, mode)

Set monitor mode

FX Operations (16 tools)

Tool

Description

track_fx_get_count(index)

Count FX on track

track_fx_get_list(index)

List all FX with details

track_fx_add_by_name(index, name, position?)

Add FX plugin (optionally at position)

track_fx_move(index, fx_index, new_position)

Reorder FX in the chain

track_fx_delete(index, fx_index)

Remove FX

track_fx_get_name(index, fx_index)

Get FX name

track_fx_get_enabled(index, fx_index)

Check if enabled

track_fx_set_enabled(index, fx_index, enabled)

Enable/bypass FX

track_fx_get_num_params(index, fx_index)

Count parameters

track_fx_get_param_name(index, fx_index, param)

Get parameter name

track_fx_get_param(index, fx_index, param)

Get parameter value

track_fx_set_param(index, fx_index, param, value)

Set parameter value

get_fx_presets(index, fx_index)

List available presets

get_fx_preset(index, fx_index)

Get current preset

set_fx_preset(index, fx_index, name)

Load preset

save_fx_preset(index, fx_index, name)

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_eq(track, instantiate?)

Find ReaEQ on a track (optionally add it)

get_eq_bands(track, fx)

Read all ReaEQ bands with human-readable values

set_eq_band(track, fx, bandtype, bandidx, paramtype, value, is_normalized?)

Set a band parameter (Hz, dB, or Q)

get_eq_band_enabled(track, fx, bandtype, bandidx?)

Check whether a band is enabled

set_eq_band_enabled(track, fx, bandtype, bandidx?, 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

take_fx_get_count(track, item, take)

Count FX on a take

take_fx_get_list(track, item, take)

List all take FX with details

take_fx_add_by_name(track, item, take, name)

Add FX plugin to a take

take_fx_delete(track, item, take, fx)

Remove FX from a take

take_fx_get_name(track, item, take, fx)

Get take FX name

take_fx_get_enabled(track, item, take, fx)

Check if enabled

take_fx_set_enabled(track, item, take, fx, enabled)

Enable/bypass take FX

take_fx_get_num_params(track, item, take, fx)

Count parameters

take_fx_get_param_name(track, item, take, fx, param)

Get parameter name

take_fx_get_param(track, item, take, fx, param)

Get parameter value

take_fx_set_param(track, item, take, fx, param, 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

get_takes(track, item)

List all takes (name + active flag)

get_active_take(track, item)

Get the active take index

set_active_take(track, item, take)

Switch which take plays

explode_takes(track, item)

Explode takes to overlapping items (in place)

crop_to_active_take(track, item)

Keep only the active take

delete_take(track, item, take)

Delete a specific take

select_comp_lane(track, lane)

Play one fixed lane exclusively (lane comping)

Routing (9 tools)

Tool

Description

create_send(src, dest)

Create send between tracks

delete_send(index, send_index)

Remove a send

set_send_volume(index, send_index, db)

Set send level

get_track_num_sends(index)

Count sends from track

set_send_dest_channels(index, send_index, chan)

Route to specific channels

set_send_source_channels(index, send_index, chan)

Set source channels

setup_sidechain_send(src, dest, db)

Create sidechain send

configure_reacomp_sidechain(index, fx_index, use)

Configure ReaComp sidechain

setup_sidechain_compression(trigger, target, fx, db)

Complete sidechain setup

Transport (10 tools)

Tool

Description

play()

Start playback

stop()

Stop playback

pause()

Pause playback

record()

Start recording

get_play_state()

Get current state (playing/paused/recording)

get_cursor_position()

Get edit cursor position (seconds)

set_cursor_position(seconds)

Move edit cursor

get_play_position()

Get playback position (seconds)

toggle_repeat()

Toggle loop mode

get_repeat_state()

Check if looping

Project (15 tools)

Tool

Description

get_project_summary()

Get comprehensive project state in one call

save_project()

Save current project

create_project()

Create new project (REAPER cannot name an unsaved project)

open_project(path)

Open project file

get_project_path()

Get project directory

get_project_name()

Get project filename

get_project_length()

Get project length (seconds)

get_tempo()

Get project tempo (BPM)

set_tempo(bpm)

Set project tempo

get_time_signature()

Get time signature

set_time_signature(num, denom)

Set time signature

render_project(path, start, end, tail)

Render to audio file

render_region(index, path)

Render specific region

zoom_to_selection()

Zoom to time selection

zoom_to_project()

Zoom to show entire project

MIDI Operations (8 tools)

Tool

Description

create_midi_item(track, pos, length)

Create empty MIDI item

get_midi_item(track, item)

Get MIDI item info

add_midi_note(track, item, pitch, vel, start_beat, length_beats, chan)

Add single note (beats)

add_midi_notes_batch(track, item, notes)

Add multiple notes

get_midi_notes(track, item)

Get all notes

delete_midi_note(track, item, note)

Delete a note

clear_midi_item(track, item)

Delete all notes

set_midi_note_velocity(track, item, note, vel)

Change note velocity

MIDI Utilities (13 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

transpose_midi_notes(track, item, semitones, ...)

Shift pitch; notes pushed outside 0-127 are left alone, never wrapped

snap_midi_notes_to_scale(track, item, root, mode, ...)

Snap off-key notes onto a scale (named or a custom interval list)

quantize_midi_notes(track, item, grid, strength, swing, ...)

Snap onsets to the project grid, with strength and swing

nudge_midi_notes(track, item, amount_beats, ...)

Shift notes in time; lengths preserved

stretch_midi_notes(track, item, factor, pivot_beat, ...)

Scale timing about a pivot (half-time / double-time)

legato_midi_notes(track, item, mode, voice, ...)

Close the gaps in a line, or set every note to one length

humanize_midi_notes(track, item, timing, velocity, seed, ...)

Seeded, reproducible timing + velocity jitter

strum_midi_notes(track, item, spread_beats, direction, ...)

Roll a chord out into a strum

ramp_midi_note_velocities(track, item, start_vel, end_vel, ...)

Linear velocity ramp across a phrase (crescendo)

scale_midi_note_velocities(track, item, mode, ratio, ...)

Multiply / set / compress velocities

set_midi_note(track, item, note, ...)

Edit one note's pitch, velocity, timing, channel

get_selected_midi_notes(track, item)

Read the notes selected in REAPER's editor

remove_overlapping_midi_notes(track, item, mode, ...)

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

insert_audio_file(track, path, pos)

Import audio file

get_track_items(track)

List all items on track

get_item_info(track, item)

Get item details

set_item_position(track, item, pos)

Move item

set_item_length(track, item, length)

Change item length

delete_item(track, item)

Delete item

duplicate_item(track, item)

Duplicate item

split_item(track, item, pos)

Split item at position

set_item_mute(track, item, mute)

Mute/unmute item

set_item_volume(track, item, db)

Set item volume

set_item_fade_in(track, item, length)

Set fade-in

set_item_fade_out(track, item, length)

Set fade-out

select_all_items()

Select all items

unselect_all_items()

Deselect all items

get_selected_items()

Get selected items

copy_selected_items()

Copy to clipboard

paste_items()

Paste from clipboard

Markers & Regions (8 tools)

Tool

Description

add_marker(pos, name, color)

Add marker

add_region(start, end, name, color)

Add region

get_markers()

Get all markers

get_regions()

Get all regions

delete_marker(index)

Delete marker

delete_region(index)

Delete region

go_to_marker(index)

Jump to marker

go_to_region(index)

Jump to region start

Automation (8 tools)

Tool

Description

get_track_envelope(track, name)

Get envelope by name

get_envelope_point_count(track, name)

Count envelope points

add_envelope_point(track, name, time, value, shape)

Add automation point

get_envelope_points(track, name)

Get all points

delete_envelope_point(track, name, index)

Delete point

clear_envelope(track, name)

Clear all points

set_track_automation_mode(track, mode)

Set automation mode

arm_track_envelope(track, name, arm)

Arm envelope for recording

FX Parameter Automation (5 tools)

Tool

Description

get_fx_envelope(track, fx, param)

Get/create envelope for any FX parameter

add_fx_envelope_point(track, fx, param, time, value, shape)

Add automation point to FX parameter

get_fx_envelope_points(track, fx, param)

Get all points from FX envelope

delete_fx_envelope_point(track, fx, param, point)

Delete point from FX envelope

clear_fx_envelope(track, fx, param)

Clear all points from FX envelope

Selection & Editing (11 tools)

Tool

Description

undo()

Undo last action

redo()

Redo last undone action

get_undo_state()

Get undo/redo state

select_track(index, exclusive)

Select a track

select_all_tracks()

Select all tracks

unselect_all_tracks()

Deselect all tracks

get_selected_tracks()

Get selected track indices

set_time_selection(start, end)

Set time selection

get_time_selection()

Get time selection

clear_time_selection()

Clear time selection

delete_selected_items()

Delete selected items

Mixing Helpers (6 tools)

Tool

Description

add_mastering_chain()

Add EQ→Comp→EQ→Limiter to master

add_parallel_compression(track, db)

Set up NY compression

create_bus(name, tracks)

Create submix bus

add_eq(track)

Add ReaEQ

add_compressor(track)

Add ReaComp

add_limiter(track)

Add ReaLimit

Advanced (4 tools)

Tool

Description

run_action(action_id)

Run REAPER action by ID

run_action_by_name(name)

Run action by name

get_track_fx_chunk(track, fx)

Get raw FX state data

cut_selected_items()

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

ReaEQ

Compressor

ReaComp

Limiter

ReaLimit

Gate

ReaGate

Delay

ReaDelay

Reverb

ReaVerbate or ReaVerb

Third-party plugins use their full name as shown in REAPER's FX browser.

Troubleshooting

"Cannot connect to REAPER"

  1. Ensure REAPER is running

  2. Ensure the bridge script is running (check REAPER's console)

  3. Verify the bridge directory exists

"Track not found"

  • Track indices are 0-based

  • Use -1 for master track

  • Check 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_BRIDGE_DIR

REAPER's Scripts/mcp_bridge_data, resolved per platform

File bridge directory

REAPER_FILE_TIMEOUT

5.0

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.

REAPER_MCP_DEBUG

unset

Set to 1 before launching REAPER for per-call bridge console logging

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

176 tools
add_compressorC

Add ReaComp to a track.

Returns: Object with fx_index.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It implies a mutation (adding an effect) but says nothing about permissions, whether the effect is inserted at a particular position in the chain, or whether an existing ReaComp is replaced. Only the return shape is mentioned.

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

Conciseness5/5

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

The text is two short, front-loaded statements that say what the tool does and what it returns. No filler or redundancy is present.

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

Completeness2/5

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

The description mentions the return object but says nothing about essential behavioral details such as chain position, replacement behavior, or prerequisites. Without annotations, an output schema, or parameter documentation, the definition leaves large gaps for a mutation tool.

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

Parameters2/5

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

There is one parameter, track_index, and schema description coverage is 0%, so the schema gives no semantic detail. The description also omits any explanation of track_index (e.g., index scope, whether it is absolute), providing essentially no added meaning.

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

Purpose4/5

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

The description states a specific action (add ReaComp) and a specific target (a track), so the verb+resource is clear. However, it doesn't distinguish itself from close siblings such as track_fx_add_by_name or configure_reacomp_sidechain, which an agent would need to disambiguate.

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

Usage Guidelines2/5

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 rather than track_fx_add_by_name or the related compressor setup tools. The description gives no conditions, prerequisites, or alternatives, leaving the agent to infer 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYes
shapeNo
valueYes
track_indexYes
envelope_nameYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It omits side effects of insertion (whether points must be added in time order, what happens on duplicate times, whether this modifies automation data destructively), and gives only the return shape ('point index').

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

Conciseness5/5

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

Front-loaded imperative sentence followed by a tight Args list and a one-line Returns. Every line carries information; no filler.

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

Completeness3/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description covers most surface area and even states the return value. However the undocumented required track_index and the absence of any side-effect or ordering information leave a meaningful gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents envelope_name, time (seconds), value (0.0-1.0), and the full shape enum meaning — genuinely valuable detail the schema lacks — but it entirely omits track_index, which is a required parameter.

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

Purpose4/5

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

States a specific verb+resource ('Add a point to an envelope'), which is unambiguous on its own. It does not distinguish itself from the closely-named sibling add_fx_envelope_point, so an agent must infer the track-vs-FX distinction from the parameter list alone.

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

Usage Guidelines2/5

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 add_fx_envelope_point, add_midi_note, or the batch/clear alternatives. It gives no preconditions (e.g., envelope must be armed or exist via get_track_envelope).

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

add_eqC

Add ReaEQ to a track.

Returns: Object with fx_index.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure for a mutation tool. It does add one useful fact not otherwise available: the call returns an object containing fx_index. But it says nothing about permissions, failure modes, whether an existing ReaEQ is replaced, or where in the chain the FX is inserted.

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

Conciseness4/5

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

Two short, front-loaded statements with no wasted words. The explicit 'Returns' line is valuable given there is no output schema, though the phrasing is terse and could be slightly more informative.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and an undocumented parameter, the definition is too thin. Disclosing the return object is a partial offset, but the agent still lacks the information needed to know when the call will succeed or what side effects to expect.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter track_index is undocumented. The phrase 'to a track' only vaguely implies that track_index identifies the target track, adding essentially no meaning beyond the parameter name.

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

Purpose4/5

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

States a concrete verb and resource ('Add ReaEQ to a track'), naming the specific plugin, which distinguishes it from generic siblings like add_compressor or add_limiter. However, it does not differentiate itself from track_fx_add_by_name or find_eq, which an agent might reasonably consider equivalent options.

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

Usage Guidelines2/5

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 the generic track_fx_add_by_name, nor any precondition stated (e.g., whether the track must already have an FX chain). Usage is only implied by the name and description.

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

add_fx_envelope_pointC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYes
shapeNo
valueYes
fx_indexYes
param_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry full behavioral burden. It mentions that the tool returns an object with point_index and confirmation, which is useful, but it omits critical mutation details: whether it adds or replaces existing points, required permissions, undo behavior, or error conditions (e.g., if the FX envelope doesn't exist). These gaps are significant 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.

Conciseness4/5

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

The description is well-structured with a clear top-line purpose, followed by labeled Args and Returns sections. It is appropriately sized and front-loaded, with no wasted text, though the Args/Returns formatting is slightly formal.

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

Completeness2/5

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

Given a 6-parameter mutation tool with no annotations and no output schema, the description leaves important context unstated. It mentions a return shape but does not cover the three index parameters, permission requirements, side effects, or failure modes, making it incomplete for reliable invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains time (seconds), value (normalized 0.0–1.0), and shape (enum mapping) for three of six parameters. The remaining three required identifiers (track_index, fx_index, param_index) are left undocumented in both schema and description, so it only partially fills the gap.

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

Purpose4/5

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

The description states a clear verb and resource: 'Add an automation point to an FX parameter envelope.' This distinguishes it from the generic track-envelope sibling 'add_envelope_point' by specifying 'FX parameter envelope.' However, it does not explicitly name the alternative or further differentiate from other FX envelope 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.

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no comparison to alternatives (e.g., 'add_envelope_point' for track envelopes). It only states what the tool does, leaving the agent to infer its appropriate context.

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

add_limiterC

Add ReaLimit (brickwall limiter) to a track.

Returns: Object with fx_index.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only discloses the return shape (fx_index). It does not state what happens on failure, whether an existing limiter is replaced, whether the FX is appended at the end of the chain, or any permission/installation requirement 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.

Conciseness4/5

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

Two short sentences, action stated first, return value second; nothing is wasted. The 'Returns:' block is slightly awkwardly formatted for a description but is still clear and front-loaded.

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

Completeness3/5

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

Because no output schema exists, the description usefully supplies the return object (fx_index). However, for a mutation tool with zero annotations and an undocumented required parameter, it omits the operational details an agent needs to invoke it reliably.

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

Parameters2/5

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

Schema coverage is 0% for the single required parameter track_index, and the description never mentions it, so no meaning is added (e.g., whether indices are 0-based or how to obtain a valid index). The schema itself documents only the type, leaving the parameter effectively unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Add ReaLimit (brickwall limiter) to a track') and names the concrete plugin being inserted, so the agent knows exactly what effect is created. It does not explicitly differentiate itself from siblings like track_fx_add_by_name or add_compressor, but the named plugin makes intent unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to choose this over the generic track_fx_add_by_name, add_compressor, or add_mastering_chain. There is no mention of prerequisites, ordering relative to other FX, or whether the plugin must be installed. The agent must infer usage entirely.

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

add_markerB

Add a marker at a position.

Args: position: Position in seconds. name: Marker name. color: Marker color (0 = default).

Returns: Object with marker index.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
positionYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It states a return object with marker index, which is helpful, but doesn't mention any behavioral traits like project state requirements, undo behavior, or side effects. For a mutation tool with no annotation coverage, this is a significant gap.

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

Conciseness4/5

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

Efficient and front-loaded: the purpose is stated first, followed by parameter details and return value. No wasted words, though the formatting mimics docstring style with 'Args:' and 'Returns:' rather than natural prose.

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

Completeness3/5

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

Given no annotations, no output schema, and 0% schema description coverage, the description provides basic parameter semantics and return value. However, it lacks behavioral context (e.g., does it require an open project? What happens on failure?) and usage guidance, making it minimally adequate.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides meaning for 'position' (seconds), 'name' (marker name), and 'color' (0 = default), which is essential since the schema lacks descriptions. However, it doesn't specify units or constraints for color beyond default.

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

Purpose4/5

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

States a specific verb+resource ('Add a marker') clearly. Distinguished from siblings like delete_marker, get_markers, go_to_marker by the 'add' verb. Missing differentiation from add_region, but that's a minor concern.

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

Usage Guidelines2/5

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

No guidance on when to use this vs. alternatives like add_region or go_to_marker. Implies usage from the verb but provides no context or exclusions.

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:

  1. ReaEQ (corrective EQ)

  2. ReaComp (glue compression)

  3. ReaEQ (tonal shaping)

  4. ReaLimit (brickwall limiter)

Returns: Object with list of added FX indices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations, so the description carries full behavioral burden. It correctly discloses the side effect (mutating the master track FX chain) and the exact insertion order, which is genuinely useful context. But it doesn't disclose whether the chain is idempotent, whether it appends or replaces, or whether an existing chain is preserved.

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

Conciseness5/5

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

Front-loaded first sentence stating purpose, followed by a compact numbered list of the exact chain. No filler, no redundancy.

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

Completeness4/5

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

No annotations and no output schema, but the description compensates well by listing the four plugins and the return type (list of added FX indices). The remaining gap is that it doesn't state whether the operation is idempotent or how it interacts with existing master FX.

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

Parameters4/5

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

Zero parameters, so the baseline is 4. The description correctly notes there is nothing to configure and specifies the fixed plugin sequence, which is the only semantic content available for this no-arg tool.

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

Purpose5/5

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

States a specific verb ('Add') and resource ('standard mastering chain to the master track'), and enumerates exactly which plugins get added and in what order. This is immediately distinguishable from generic siblings like add_compressor or add_limiter.

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

Usage Guidelines3/5

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

Implicitly suggests use when you want a complete mastering chain in one call rather than adding plugins individually. However, it never explicitly says when to prefer this over add_compressor/add_limiter/add_eq, nor does it mention exclusions (e.g., will it stack on an existing chain?).

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

add_midi_noteB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pitchYes
channelNo
velocityYes
item_indexYes
start_beatYes
track_indexYes
length_beatsYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and falls short: it does not say whether the item/track must pre-exist, what happens on invalid indices or pitch out of range, whether the change is undoable, or what the call returns. It only conveys timing units and value ranges, which is parameter information rather than 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.

Conciseness4/5

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

Front-loaded purpose sentence, then a compact Args block, then a concrete example. Slightly redundant in restating start/length values inside the example, but every element is useful and the layout is easy to scan.

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

Completeness3/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the description covers the timing model well but omits the role of track_index/item_index/channel and says nothing about failure modes or return behavior. Adequate to make a first correct call, not complete.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for the four musically non-obvious parameters: pitch (0-127, 60 = middle C), velocity (1-127), start_beat (0 = first beat), and length_beats (0.25 = sixteenth, etc.). It leaves channel, item_index, and track_index undocumented, but those are relatively self-describing index/default fields.

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

Purpose4/5

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

States a specific verb and resource: 'Add a MIDI note to an item' with the key qualifier 'using musical timing (beats)'. That distinguishes it reasonably from related siblings like add_midi_notes_batch or set_midi_note, though the description never names those alternatives explicitly.

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

Usage Guidelines3/5

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

The worked 'four-on-the-floor kick' example implicitly shows usage context and expected input shape, which is helpful. But there is no explicit guidance on when to use this single-note tool versus add_midi_notes_batch, nor any stated prerequisites (e.g., a MIDI item must already exist at item_index).

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

add_midi_notes_batchB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYes
item_indexYes
track_indexYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It does disclose the return value ('Object with count of notes added') and the note dict shape, which is genuinely useful, but it never states whether notes are appended versus replacing existing content, what happens on invalid pitch/channel values, or whether item/track must already exist.

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

Conciseness4/5

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

The definition is compact and front-loaded: the first sentence states the action and timing model, followed by clearly separated Args and Returns blocks. Nothing is padded, though the docstring-style formatting is slightly verbose relative to the amount of information conveyed.

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

Completeness3/5

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

With no output schema, the explicit Returns note is valuable, and the notes payload is well described. However, for a 3-required-parameter mutation tool with zero annotation coverage, the description leaves the indexing parameters and append-vs-replace semantics unexplained, so an agent could still call it incorrectly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does well for the notes array, enumerating keys (pitch, velocity, start_beat, length_beats, channel) and marking channel optional, but track_index and item_index receive no explanation at all despite being required, leaving half the parameter surface undocumented.

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

Purpose4/5

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

The description states a specific verb and resource ('Add multiple MIDI notes to an item') and the 'in one call' phrasing signals the batch nature, which meaningfully separates it from the singular sibling add_midi_note. It does not explicitly name that sibling, so differentiation is inferable rather than stated.

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

Usage Guidelines2/5

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

Beyond the implied 'multiple' vs single-note distinction, there is no explicit when-to-use guidance or routing to alternatives like add_midi_note or add_midi_notes_batch's relationship to create_midi_item. The agent must infer that this is the bulk-insert path when many notes are needed.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
blend_dbNo
track_indexYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the side effects: a new bus track is created, a send is added from the source, and compression is applied — the agent knows three new entities result. Doesn't mention undo behavior or whether existing sends are affected, but the mutation profile 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.

Conciseness4/5

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

Front-loaded with the purpose, then tightly documents behavior, args, and returns in a standard structured format. The Returns section is slightly redundant with the Args-level description but adds the concrete output field names, so it earns its place.

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

Completeness4/5

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

For a 2-parameter tool with no annotations, no output schema, and 0% schema coverage, the description supplies the missing pieces: parameter meaning, mutation side effects, and return shape. The remaining gap is the absence of guidance against sibling low-level alternatives.

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

Parameters4/5

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

Schema coverage is 0% and parameters have no inline descriptions, so the description must compensate. It does: track_index is defined as a 0-based source index, blend_db is clarified as the send level in dB with a -6 default. Units and indexing convention are added beyond the bare schema types.

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

Purpose5/5

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

States a specific verb (Set up) and a named mixing technique (New York style parallel compression) for a specific resource (track). Distinguishes itself from sibling primitives like create_send, create_bus, or add_compressor by bundling them into one high-level operation.

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

Usage Guidelines3/5

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

Implies 'use this when you want parallel compression,' but gives no explicit when/when-not guidance versus the low-level siblings it composes (create_send, create_bus, add_compressor). An agent can't tell whether to call this or build the chain manually.

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

add_regionB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
nameNo
colorNo
startYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It does not mention mutation, permissions, whether the operation is reversible, or side effects. It only states the return object with region index, which is minimal. For a mutation tool with no annotations, 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.

Conciseness4/5

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

The description is brief and front-loaded with the purpose. The Args and Returns sections are structured and easy to parse. It could be slightly more concise by integrating parameters into a sentence, but overall it's efficient.

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

Completeness3/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the description is adequate but incomplete. It does not cover behavioral aspects like side effects, error conditions, or return structure beyond 'region index'. The parameter semantics are documented, which helps, but broader context is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does document all four parameters: start and end in seconds, name, and color with default explanation. This adds necessary semantic meaning beyond the schema's bare types. However, it lacks constraints (e.g., valid ranges for start/end, color encoding).

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

Purpose4/5

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

Description clearly states 'Add a region', a specific verb+resource. Siblings like add_marker, get_regions, delete_region exist, but the description doesn't explicitly differentiate or reference them. A 4 is appropriate: clear but no sibling differentiation.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance. It does not mention alternatives like add_marker or conditions under which this tool should be used. The description provides only the basic purpose, leaving usage context implicit.

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

arm_trackC

Arm or disarm a track for recording.

Args: arm: True to arm, False to disarm.

ParametersJSON Schema
NameRequiredDescriptionDefault
armNo
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It conveys the toggle semantics but says nothing about whether arming is required before record, whether it persists, whether it affects existing input monitoring, or whether disarming mid-record fails — meaningful gaps for a state-changing DAW operation.

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

Conciseness4/5

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

Two short sentences, front-loaded with the tool's action. The Args block is somewhat redundant-formatted but adds the only real semantic value present, so it earns its place.

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

Completeness3/5

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

For a two-parameter toggle with no annotations and no output schema, the definition is minimally adequate. It omits track_index meaning and any return/state information, so an agent knows the gist but not the full call contract.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does clarify the boolean 'arm' (True = arm, False = disarm), which is genuinely useful, but leaves the required 'track_index' completely unexplained — the more important parameter for correct invocation.

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

Purpose4/5

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

States a specific verb+resource pair ('Arm or disarm a track') and scopes it to recording, which distinguishes it from the mute/solo siblings. It does not explicitly contrast with arm_track_envelope, but the object 'track' (not envelope) is a reasonable implicit differentiator.

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

Usage Guidelines2/5

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

No guidance on when to arm vs. disarm beyond the parameter flag, no prerequisites (e.g. recording enabled, record-arm mode), and no mention of related siblings like record or set_track_input. The agent must infer the workflow context entirely.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
armNo
track_indexYes
envelope_nameYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the state change but not whether the track must be armed first, whether arming affects existing automation data, whether the change is reversible, or what confirmation is returned.

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

Conciseness4/5

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

The output is short and front-loaded with the action, and the Args block is compact. The redundant restatement of envelope_name is the only waste.

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

Completeness3/5

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

For a 3-parameter mutation with no annotations and no output schema, the definition covers the core action and the arm flag's polarity but leaves the required track_index undocumented and omits any prerequisites or side effects.

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

Parameters2/5

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

Schema coverage is 0%, so the description is the only documentation. It usefully clarifies that arm=True arms and arm=False disarms (valuable given the default of true), but 'envelope_name: Envelope name' is a pure tautology and track_index is never mentioned despite being required.

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

Purpose4/5

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

The description states a specific verb pair ('Arm or disarm') and resource ('envelope for recording'), so the operation is unambiguous. It does not explicitly distinguish itself from the sibling arm_track, though the 'envelope' qualifier implicitly separates them.

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

Usage Guidelines2/5

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

There is no guidance on when to arm versus disarm, what state the track or envelope must be in, or how this relates to the sibling arm_track tool. The agent must infer usage entirely from the verb.

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

clear_all_peak_indicatorsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and idempotentHint=true, which are consistent with the description. The description adds behavioral context by explaining what gets reset ('held peak values that accumulate during playback') and confirms idempotence implicitly by describing a reset operation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, followed by usage context. Every sentence earns its place with no redundancy.

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

Completeness5/5

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

For a simple, parameterless mutation with clear annotations and no output schema, the description covers purpose, scope, and usage. Nothing critical is missing 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.

Parameters4/5

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

The tool has zero parameters, so parameter semantics are not applicable. Per the rubric, 0 params yields a baseline score of 4; the description does not need to compensate for any schema details.

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

Purpose5/5

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

The description states a specific verb and resource: 'Clear the peak hold indicators on all tracks (including master).' It clearly distinguishes from sibling tools like get_track_peak_hold (which reads) by specifying the clearing action and scope covering all tracks.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance: 'Use before a fresh playback pass when you want clean readings for gain staging.' It does not mention when-not-to-use or alternatives, but no direct alternative exists among siblings.

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

clear_envelopeC

Delete all points from an envelope.

Args: envelope_name: Envelope name.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes
envelope_nameYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It does convey that the operation is destructive ('delete all points'), but says nothing about irreversibility, whether the envelope itself is removed or just emptied, or permission/state requirements. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

Very short and front-loaded. The purpose sentence is efficient. The args list restates only one of two params, which is minimally useful structure rather than filler.

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

Completeness2/5

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

A destructive mutation tool with no annotations, no output schema, and 0% schema description coverage requires the description to explain scope, alternatives, and parameters. It omits the required track_index and gives no safety or reversibility context, leaving the agent under-informed.

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

Parameters2/5

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

Schema description coverage is 0% and the description documents only envelope_name, completely omitting the required track_index parameter. With two required parameters and zero schema descriptions, the description fails to compensate for the gap.

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

Purpose4/5

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

States a specific verb+resource: 'Delete all points from an envelope.' Clear and unambiguous. Does not explicitly differentiate from siblings like delete_envelope_point or clear_fx_envelope, but the 'all points' vs single-point distinction is reasonably implied.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives such as delete_envelope_point (for individual points) or clear_fx_envelope (for FX envelopes). The agent gets no routing help despite several closely related siblings.

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

clear_fx_envelopeB

Clear all automation points from an FX parameter envelope.

Returns: Object with deleted_count.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It clearly indicates a destructive bulk-clearing operation and documents the return field deleted_count, but it does not explain reversibility, undo behavior, permissions, or any constraints such as whether playback must be stopped.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action and resource, and closes with the return value. Every sentence adds useful information without waste.

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

Completeness3/5

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

For a simple, low-complexity operation with no annotations and no output schema, the description covers the action and return value. However, it leaves parameter semantics and behavioral safety details undocumented, so it is only minimally complete for reliable invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the three integer parameters. It implies that track_index, fx_index, and param_index identify an FX parameter envelope, but it does not define any parameter individually, their indexing scheme, or their valid ranges.

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

Purpose4/5

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

The description states a specific verb and resource: clearing all automation points from an FX parameter envelope. It is clearly an FX-envelope operation, which separates it from generic envelope tools, but it does not explicitly name the sibling alternative such as clear_envelope or 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.

Usage Guidelines2/5

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

The description provides no when-to-use guidance, prerequisites, or alternatives. An agent can infer that this is used to wipe an FX parameter envelope, but nothing tells it when to choose this over delete_fx_envelope_point or clear_envelope.

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

clear_midi_itemC

Delete all MIDI notes from an item.

Returns: Object with count of notes deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the return value (count of notes deleted), which is useful, but for a destructive mutation it says nothing about irreversibility, undo availability, or whether non-note item data is preserved.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and followed by the return detail. No wasted words, though the return-value clause could be folded in more tightly.

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

Completeness2/5

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

With no output schema, no annotations, and 0% parameter documentation, the description is too thin. It covers the action and return count but leaves the destructive semantics and parameter identification entirely to inference.

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

Parameters2/5

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

Schema description coverage is 0% and both parameters are required integers. The description mentions only 'an item' and does not explain that track_index plus item_index identify the target, nor indexing conventions or ranges.

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

Purpose4/5

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

States a specific verb and resource with scope: 'Delete all MIDI notes from an item.' The word 'all' implicitly distinguishes it from the sibling delete_midi_note (single note), but no sibling is named explicitly, so this sits just below the top band.

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

Usage Guidelines2/5

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 alternatives referenced. The agent must infer from the name alone that this bulk-clears notes versus delete_midi_note's single-note removal.

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

clear_time_selectionC

Clear the time selection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the action itself. It does not say whether the clear is undoable, whether it affects any pending edit or rendering state, or what happens if no selection exists.

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

Conciseness4/5

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

A single short sentence with no filler, and the action is front-loaded. It is efficient, though its brevity borders on under-specification rather than tight conciseness.

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

Completeness3/5

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

As a zero-parameter, no-output, low-complexity tool, the description is minimally sufficient to invoke it. It nonetheless leaves gaps about side effects and its relationship to the other time-selection tools, which would be cheap to add.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. There is no parameter information the description could add or omit.

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

Purpose3/5

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

The description states a clear verb ('Clear') and resource ('the time selection'), so an agent knows the basic action. However, it is essentially a restatement of the tool name in sentence form and offers no differentiation from siblings like set_time_selection or get_time_selection.

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

Usage Guidelines2/5

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

There is no guidance on when to clear the selection versus calling set_time_selection to change it or get_time_selection to inspect it. No preconditions, no context for when clearing is useful (e.g., before an edit operation) are given.

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

configure_reacomp_sidechainB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes
use_sidechainNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only states the mechanical effect and a return type. It omits whether a sidechain send must exist first, whether the change is reversible, and any state the toggle affects.

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

Conciseness4/5

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

Front-loaded with the core action and organized into Args/Returns sections; every line earns its place. The docstring framing is slightly heavier than necessary but not wasteful.

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

Completeness3/5

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

With no output schema, the description appropriately states the return value, and it covers all parameters. But for a state-mutating tool with zero annotation coverage, it lacks prerequisite and usage context needed to call it confidently.

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

Parameters4/5

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

Schema description coverage is 0%, so the description has to compensate, and it does: it documents all three parameters, noting 0-based indexing for track_index/fx_index and that use_sidechain=True maps to auxiliary input channels 3-4 while False uses the main input. This adds real meaning beyond the bare schema.

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

Purpose4/5

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

States a specific verb (configure) and resource (ReaComp sidechain input for detection), so the action is unambiguous. However, it does not distinguish this tool from closely related siblings such as setup_sidechain_compression or setup_sidechain_send, leaving the agent to infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no exclusions or alternatives offered. The description never explains how this differs from setup_sidechain_compression or setup_sidechain_send, so an agent cannot tell which sidechain tool to pick.

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

copy_selected_itemsB

Copy selected items to clipboard.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It says items go to the clipboard but not whether the source selection is preserved, whether the operation is undoable, whether it works across item types (MIDI/audio), or what happens when nothing is selected — all relevant for a clipboard mutation.

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

Conciseness4/5

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

A single four-word sentence with zero padding, and the verb is front-loaded. It is appropriately sized, though it is terse enough that it sacrifices useful detail.

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

Completeness3/5

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

For a zero-parameter tool with no annotations and no output schema, the description is minimally viable: it conveys the basic action but omits behavioral context (undo behavior, selection state, item-type scope) that would help an agent use it correctly alongside cut_selected_items and paste_items.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description adds no parameter-level content because none is needed.

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

Purpose4/5

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

The description states a specific verb ('Copy') and resource ('selected items') plus the destination ('clipboard'), which clearly differentiates it from get_selected_items and select_all_items. It does not explicitly contrast with cut_selected_items, which performs a similar copy but also removes the source, leaving sibling differentiation implicit.

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

Usage Guidelines2/5

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 cut_selected_items, paste_items, or duplicate_item, nor any prerequisite (e.g., a prior selection). The agent must infer usage entirely from the verb.

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

create_busB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
source_track_indicesYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that a bus is created, source tracks are routed, and returns bus_track_index plus routing info, but omits side effects like permissions, error behavior, or whether existing routing is altered.

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

Conciseness5/5

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

Two sentences plus brief Args and Returns sections, front-loaded with the core purpose. No wasted words.

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

Completeness3/5

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

With no annotations and no output schema, the description covers purpose, both parameters, and return shape. It lacks usage context and behavioral details such as prerequisites or failure modes, but is largely sufficient for a basic creation tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It describes both parameters: name as the bus track name and source_track_indices as tracks to route to this bus, adding meaning beyond bare schema types though it does not specify index origin or format.

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

Purpose4/5

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

The description states a specific verb 'Create' and resource 'submix/stem bus', plus the routing action of specified tracks. It does not explicitly differentiate from siblings like insert_track or create_send, but the action is clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as insert_track or create_send. It only describes the action, 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.

create_midi_itemC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthYes
positionYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the item is empty and that a return object includes item_index, but it omits side effects, track-existence requirements, selection behavior, and error conditions 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.

Conciseness5/5

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

The description is front-loaded with the core action, then lists arguments and return value efficiently. Every sentence is relevant and there is no wasted text.

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

Completeness2/5

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

For a creation tool with three required parameters, no annotations, no output schema, and 0% schema descriptions, the description is too thin. It covers the return value broadly but omits track_index semantics, side effects, and prerequisite conditions.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds useful units for two parameters (position and length in seconds), but it does not describe track_index at all, leaving one of three required parameters semantically undocumented.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create an empty MIDI item on a track.' This clearly distinguishes the tool from siblings like get_midi_item, clear_midi_item, and add_midi_note. It does not explicitly name a sibling alternative, so it falls short of the highest clarity tier.

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

Usage Guidelines2/5

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 about when to use it versus alternatives such as add_midi_note or insert_audio_file. There are no prerequisites, exclusions, or context cues to help an agent choose this operation.

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

create_projectA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the project cannot be named and that the removed `name` parameter never took effect, but it omits whether creating a project discards unsaved changes, what happens to the current project, and what the tool returns.

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

Conciseness5/5

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

Two sentences: the first states the action, the second gives a relevant caveat. It is front-loaded, efficient, and has no wasted text.

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

Completeness3/5

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

For a project-creation mutation with no annotations and no output schema, the description covers the naming limitation but leaves out key side-effect context, such as impact on the currently open project and whether unsaved changes are affected.

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

Parameters4/5

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

The schema has 0 parameters, so the baseline is 4. The description additionally explains why there is no `name` parameter, which prevents an agent from expecting one.

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

Purpose5/5

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

States a specific verb and resource: 'Create a new REAPER project.' This clearly distinguishes it from open_project, save_project, and other project-management siblings in the tool list.

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

Usage Guidelines3/5

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

Usage is implied by the name and the word 'new,' but there is no explicit guidance on when to use this versus open_project or save_project. No exclusions or prerequisites are stated.

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

create_sendB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
src_trackYes
dest_trackYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only discloses the return shape. It does not say whether the call fails when a send already exists, whether indices must be valid track positions, or what side effects occur on the routing matrix.

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

Conciseness4/5

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

Short and front-loaded: the action is stated first, then parameters and return value in labeled sections. The Args/Returns framing is slightly boilerplate but wastes nothing.

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

Completeness3/5

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

For a two-parameter state-mutating tool with no annotations and no output schema, the description covers the action, parameters, and return value, but omits error conditions and interaction with the existing routing/send list. Adequate but with clear gaps.

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

Parameters4/5

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

Schema coverage is 0%, so the description must supply meaning, and it does: it clarifies that src_track is the source and dest_track the destination and that both are 0-based indices. That is meaningful beyond the bare integer properties, though it omits bounds/validity behavior.

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

Purpose4/5

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

States a specific verb and resource ('Create a send from one track to another'), which is clear and separable from most siblings like delete_send and set_send_volume. It does not, however, contrast itself with related tools such as setup_sidechain_send, which also creates sends implicitly.

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

Usage Guidelines2/5

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, no prerequisites, and no mention of how it relates to setup_sidechain_send or get_track_num_sends. The agent must infer that this is the primitive send-creation call.

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

crop_to_active_takeB
Destructive

Crop a media item to its active take, discarding all other takes.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description earns extra credit by specifying exactly what is destroyed ('discarding all other takes'). It still omits prerequisites such as which take must be active and whether the action is reversible.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the destructive scope is stated immediately after the action.

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

Completeness3/5

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

For a destructive two-parameter tool with no output schema, the description communicates the effect but leaves both parameter meanings and any preconditions undocumented. Adequate but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden, yet it only refers vaguely to 'a media item' and never explains track_index vs item_index. An agent cannot infer from the description what these two required integers mean.

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

Purpose4/5

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

States a specific verb (Crop) and resource (a media item to its active take), which is meaningfully distinct from siblings like explode_takes, delete_take, and set_active_take. It does not name an alternative to route against, but the operation itself is unambiguous.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no comparison to related tools such as delete_take or explode_takes, which manipulate takes differently. The intended use is only weakly implied by the description's outcome.

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

cut_selected_itemsB

Cut selected items to clipboard.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state that the source items are removed from the timeline, whether the operation is undoable, whether it depends on a time selection, or whether the clipboard survives project changes. 'Cut' implies removal but this is convention, not disclosure.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the verb and the affected resource come first. Nothing in it is redundant or restating the tool name mechanically.

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

Completeness3/5

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

For a zero-parameter clipboard verb with no output schema and no annotations, a short description is largely sufficient. Still missing are the implicit-selection dependency and the removal side effect, which are the details an agent needs to chain this correctly with paste_items.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. It correctly signals that the target set is implicit (whatever is currently selected) rather than passed in.

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

Purpose4/5

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

States a specific verb (cut) and resource (selected items) with the destination (clipboard), so the action is unambiguous. It does not explicitly distinguish itself from near-neighbours like copy_selected_items or delete_selected_items, though 'cut' conventionally implies both copy and removal.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no stated alternative to copy_selected_items or delete_selected_items, and no prerequisite such as requiring a prior selection or routing to paste_items as the follow-up. The agent must infer all routing from the name.

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

delete_envelope_pointC

Delete an envelope point.

Args: envelope_name: Envelope name.

ParametersJSON Schema
NameRequiredDescriptionDefault
point_indexYes
track_indexYes
envelope_nameYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says 'delete' but does not disclose reversibility, undo availability, what happens to point indices after deletion, or required track state (armed/shown envelope). For a destructive mutation 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.

Conciseness3/5

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

Very short and front-loaded with the action, which is good, but the 'Args:' block restates only one parameter and the whole body is under-specified rather than efficient. Brevity here reflects a missing spec, not tight prose.

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

Completeness2/5

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

Destructive tool with no annotations, no output schema, no undo information, and 0% parameter coverage. An agent cannot safely determine preconditions, index validity, or side effects from this definition.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only documents one of three parameters (envelope_name), leaving track_index and point_index entirely unexplained. It must compensate for the coverage gap and does not.

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

Purpose3/5

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

States a specific verb+resource ('Delete an envelope point') but is nearly a tautology and offers no differentiation from sibling delete_fx_envelope_point, delete_midi_note, or delete_marker. An agent must already know envelope-specific semantics to use it.

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

Usage Guidelines2/5

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

No when-to-use context, no mention of alternatives like clear_envelope or delete_fx_envelope_point, and no prerequisites. The agent gets only the obvious fact that it deletes a point.

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

delete_fx_envelope_pointC

Delete an automation point from an FX parameter envelope.

Args: point_index: Point index (0-based) to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
point_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations, so the description carries the full burden. It says 'Delete' (implying mutation) but doesn't state reversibility (undo?), error behavior on invalid index, or effect on envelope point count. Minimal 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.

Conciseness4/5

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

Two sentences, front-loaded with purpose, followed by a concise param note. No waste, though the Args block format is minimal.

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

Completeness2/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the description is insufficient. It should clarify index semantics for all params, behavior on invalid input, and relationship to sibling tools.

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

Parameters2/5

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

Schema coverage is 0% and 4 required parameters exist. The description only documents 'point_index' with a brief note (0-based). The other three (track_index, fx_index, param_index) are undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb ("Delete") and resource ("automation point from an FX parameter envelope"). Distinguishable from sibling 'delete_envelope_point' (track envelope) and 'clear_fx_envelope' (bulk removal), though it doesn't explicitly name these.

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

Usage Guidelines2/5

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

No guidance on when to use this vs alternatives like 'clear_fx_envelope' or 'delete_envelope_point'. No prerequisites stated (e.g., envelope must exist, indices must be valid).

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

delete_itemC

Delete a media item.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'Delete' implies a mutation, but nothing is said about irreversibility, undo availability, error behavior when indices are out of range, or whether the item is removed from disk or just the project. For a destructive operation with zero annotation coverage this is a real gap.

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

Conciseness3/5

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

A single short sentence is front-loaded and wastes no words, but it is under-specified rather than genuinely concise. There is no structure beyond the bare statement of action.

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

Completeness2/5

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

A destructive, two-parameter tool with no annotations, no output schema, and no parameter documentation leaves the agent without enough to call it safely. At minimum, index semantics and undo/reversibility should be stated.

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

Parameters2/5

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

Schema description coverage is 0% for both required parameters. The description's phrase 'media item' faintly hints that item_index addresses an item, but it never explains track_index vs item_index, indexing base, or whether item_index is scoped to the track. It does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a media item'), so the agent knows it removes an item. However, it gives no differentiation from close siblings like delete_selected_items, delete_take, or delete_midi_note, which also remove content. Clear but undifferentiated, matching the 4 criteria.

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

Usage Guidelines2/5

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

No guidance on when to use this versus delete_selected_items or delete_take, and no prerequisites such as selection state or whether the item must be unselected first. The agent must infer usage entirely.

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

delete_markerC

Delete a marker by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
marker_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates deletion but does not mention irreversibility, required permissions, side effects on other markers or the timeline, or behavior on invalid index. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently states the action, resource, and identifier. It could be slightly more complete without becoming verbose, but its concision is appropriate for the core operation.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter description coverage, the description is too sparse. It omits return behavior, error conditions, index semantics, and confirmation of destructive action. An agent lacks enough context to invoke it safely and correctly in all cases.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It says 'by index' but does not clarify whether the index is zero-based, one-based, or an identifier, nor what range is valid. It adds only minimal meaning beyond the parameter name marker_index.

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

Purpose4/5

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

The description states a specific verb (Delete) and resource (marker) and adds the identifying mechanism (by index). It clearly distinguishes from sibling operations like add_marker and get_markers, but it does not explicitly contrast with delete_region or other delete_* tools. A 4 is appropriate for a clear, actionable purpose without sibling routing.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, prerequisites, or alternatives. It does not say whether to use this versus delete_region, or what happens if the marker is referenced elsewhere. Usage is only implied by the tool name and description, which is insufficient for a 3.

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

delete_midi_noteC

Delete a MIDI note from an item.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
note_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says 'delete' but discloses nothing about whether the deletion is undoable, whether the indices are 0- or 1-based, or whether remaining note indices shift after removal — critical for a destructive mutation whose parameters are index-based.

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

Conciseness3/5

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

A single short sentence with no waste, but it is under-specified rather than genuinely concise — the brevity comes at the cost of missing guidance and parameter context.

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

Completeness2/5

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

A destructive mutation tool with no annotations, no output schema, and three completely undocumented parameters needs substantially more description than one sentence. An agent cannot confirm whether it needs to call get_midi_notes first or what the index base is.

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

Parameters2/5

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

Schema description coverage is 0% across three required parameters. The description adds no meaning: it never explains what track_index/item_index/note_index refer to, whether they are zero-based, or whether note_index must reference an already fetched note. With a low-coverage schema, the description has to compensate and does not.

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

Purpose4/5

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

Clear specific verb+resource: deleting a MIDI note from an item. It is distinguishable from sibling delete tools (delete_take, delete_item, delete_envelope_point) by naming the MIDI-note resource, though it does not differentiate itself from set_midi_note or remove_overlapping_midi_notes beyond the verb.

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

Usage Guidelines2/5

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

The description offers no when-to-use context, no prerequisites (e.g., that the note must exist), and no comparison to alternatives such as clear_midi_item or remove_overlapping_midi_notes. It is purely a statement of effect.

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

delete_regionC

Delete a region by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
region_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It states the destructive action 'Delete,' but does not disclose irreversibility, undo behavior, permission requirements, side effects on markers or project state, or error behavior. It provides only minimal transparency 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.

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is concise and readable, though its brevity contributes to the gaps in usage and behavior details.

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

Completeness2/5

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

For a destructive one-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It does not explain the return value, error cases, or how to obtain a valid region index, leaving important context to inference.

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

Parameters2/5

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

Schema description coverage is 0%, and the single parameter is only documented by the phrase 'by index.' This adds that region_index is an ordinal identifier, but it does not explain where the index comes from (e.g., get_regions), whether it is zero-based, or what happens if it is invalid.

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

Purpose4/5

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

The description gives a specific verb and resource: deleting a region by index. This clearly separates it from sibling deletion tools such as delete_marker, delete_take, and delete_track. It does not explicitly name an alternative or clarify its role relative to get_regions/add_region, so it stops short of a 5.

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

Usage Guidelines2/5

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 delete_marker or delete_take. The agent must infer that it is for removing a region from the project, with no when-to-use or when-not-to-use context.

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

delete_selected_itemsB

Delete all selected items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It doesn't disclose whether deletion removes items from disk, whether it is undoable, what happens to an empty selection, or the scope of affected entities. It adds the key fact that the operation targets selected items (not a parameter).

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

Conciseness5/5

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

One short sentence, front-loaded with the verb and resource, no wasted words.

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

Completeness3/5

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

For a no-param mutation with no annotations and no output schema, the description is minimally adequate but leaves the agent without key context: prerequisite selection, reversibility, and differentiation from delete_item.

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

Parameters4/5

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

Zero parameters, so baseline 4 applies. The description correctly notes the input comes from the current selection rather than a parameter.

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

Purpose4/5

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

Clear verb+resource: deletes items that are currently selected. The dependence on prior selection distinguishes it from delete_item (which presumably targets a specified item), 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.

Usage Guidelines2/5

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

No guidance on when to use this versus delete_item, clear_midi_item, or other deletion siblings. The only implied context is that a selection must exist, which is not stated.

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

delete_sendA

Delete a send from a track.

Args: track_index: Source track index (0-based). send_index: Send index (0-based) to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
send_indexYes
track_indexYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, but it only implies a destructive mutation via the verb 'Delete'. It does not disclose whether the deletion is irreversible, what happens to remaining sends, or whether permissions or valid indices are required.

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

Conciseness5/5

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

The description is front-loaded with the purpose in a single clear sentence, followed by a compact Args block for the two parameters. Every element earns its place with no redundancy.

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

Completeness3/5

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

For a simple two-parameter mutation with no annotations or output schema, the description covers the purpose and both parameters adequately. However, it omits behavioral context such as irreversibility and index validity, which would be important for an agent invoking a deletion operation, so it is minimally sufficient rather than fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: track_index is explained as 'Source track index (0-based)' and send_index as 'Send index (0-based) to delete.' This adds meaning beyond the bare integer types in the schema, though it doesn't state valid ranges or how to obtain a valid send index.

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

Purpose5/5

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

The description states a specific verb (Delete) and resource (send from a track), clearly distinguishing it from the sibling create_send and other send-management tools. An agent can tell exactly what this tool does 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.

Usage Guidelines2/5

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, nor are any prerequisites or exclusions stated. The description only restates the operation, leaving context about valid track/send state to inference.

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

delete_takeB
Destructive

Delete a specific take from a media item.

Args: take_index: Take index to delete (0-based). The take is activated first, then removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
take_indexYes
track_indexYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, but the description adds a genuinely non-obvious side effect: the take is activated before being removed, so deleting has a state-changing consequence beyond removal. It still omits error behaviour for an out-of-range index and whether remaining takes are renumbered.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by a short Args block; nothing is padded. The Args block covering only one of three parameters is a structural weakness, but the text itself is tight.

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

Completeness3/5

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

No output schema or return-value detail is needed for a delete, and destructiveness is covered by annotations. However, for a three-index operation with 0% schema coverage, the definition is still missing the meaning of track_index/item_index and any post-delete state or failure behaviour.

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

Parameters2/5

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

Schema description coverage is 0% across three required parameters, so the description carries the full burden. It documents only take_index (0-based) and leaves track_index and item_index completely unexplained, compensating for roughly one third of the gap.

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

Purpose4/5

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

States a specific verb and resource ("Delete a specific take from a media item"), which an agent can distinguish from delete_track, delete_item and take_fx_delete. It does not name any sibling explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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 pointer to how to obtain a valid take_index (get_takes / get_active_take are the obvious siblings). The agent must infer everything about context from the purpose line alone.

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

delete_trackB

Delete a track.

Args: track_index: Track index to delete (0-based). Cannot delete master track (-1).

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It never states that this is destructive/irreversible, whether the action is undoable, what happens to the track's items, FX, and sends, or whether subsequent track indices shift. For a destructive mutation tool with zero annotation coverage, this is a substantial gap.

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

Conciseness4/5

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

Only two short lines, with the core action front-loaded before the argument note. There is no filler, though the 'Args:' block style is terse rather than maximally informative.

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

Completeness3/5

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

For a single-parameter destructive tool with no annotations and no output schema, the description covers the parameter and one important restriction (master track). It omits return/confirmation behavior and side effects on routed sends, items, or FX, leaving an agent without enough to predict consequences.

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

Parameters4/5

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

Schema description coverage is 0% (the schema only says 'integer'), so the description must compensate, and it does: it specifies the index is 0-based and that the master track (-1) is an invalid target. That adds real meaning beyond the bare schema, though it doesn't note whether indices shift after deletion.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a track'), which is unambiguous against siblings like delete_take, delete_send, or delete_item. It does not explicitly contrast itself with those siblings, but the resource name is distinct enough that an agent can select it correctly.

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

Usage Guidelines3/5

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

There is no explicit when-to-use guidance or named alternative, but the description does impose a meaningful scoping constraint: the target cannot be the master track (-1). That is a partial 'when-not' rule, though it stops short of saying when this tool should be preferred over other track-management operations.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses only the return shape ('Object with new item info') and says nothing about where the duplicate lands, whether the original is preserved, or any permissions/limits.

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

Conciseness4/5

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

Two short, front-loaded lines with no filler. The description is appropriately brief, though the 'Returns:' block is a slightly awkward way to convey that detail.

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

Completeness2/5

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

For a mutation tool with no annotations and two undocumented parameters, the definition is too thin. The only return info is a vague 'Object with new item info,' and there is no output schema to fill the gap.

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

Parameters2/5

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

Schema description coverage is 0% and the description gives no explanation of track_index or item_index. The parameter names are somewhat self-evident, but the description adds no meaning beyond them, failing to compensate for the documentation gap.

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

Purpose4/5

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

States a specific verb ('duplicate') and resource ('a media item'), so the core action is unambiguous. However, it does not distinguish this from siblings like copy_selected_items or split_item, so the agent gets no help telling them apart.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as copy_selected_items/paste_items, nor any stated prerequisites. The agent must infer all usage context 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.

explode_takesC
Destructive

Explode all takes of a media item in place (each take becomes its own overlapping item).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutating, destructive operation. The description adds that takes become overlapping items, which is useful context beyond annotations, but it doesn't explain what 'in place' means precisely, whether existing items are replaced, or what happens to the original media item. The added value is moderate given annotation coverage.

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

Conciseness5/5

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

Single sentence, front-loaded with the action and resource, no wasted words. It efficiently conveys the core operation.

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

Completeness2/5

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

With no annotations covering parameter semantics, no output schema, and 0% schema description coverage, the description should do more. It fails to explain parameters, side effects, or return values, making it incomplete for a destructive mutation tool with two required integer parameters.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for both parameters (item_index, track_index). Instead, it provides no information about parameter meaning, required values, indexing base, or how to locate the target item and track. This is a significant gap.

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

Purpose4/5

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

States a specific verb (explode) and resource (all takes of a media item) with the resulting behavior (each take becomes its own overlapping item). This distinguishes it from siblings like get_takes, set_active_take, and crop_to_active_take, which operate on takes but don't explode them. It is clearer than a vague purpose statement but not as precise as naming the exact Reaper action or differentiating further.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as duplicate_item, split_item, or crop_to_active_take. The description implies a transformation but does not state prerequisites, context, or exclusions. This leaves usage ambiguous for an agent.

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

find_eqB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instantiateNo
track_indexYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations, so the description must carry the burden. It discloses the return value (-1 if not found) and that instantiate adds the effect, which are useful behavioral details. But it doesn't cover auth or side effects beyond that.

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

Conciseness4/5

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

Front-loaded with the main purpose, then a concise Args/Returns section. No wasted words, though the Args/Returns format could be more integrated.

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

Completeness3/5

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

For a 2-param tool with no annotations and no output schema, the description covers the return value and instantiate behavior, but leaves track_index semantics and any error conditions unexplained. It's minimally adequate but incomplete for robust use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains instantiate (add if absent) but doesn't explain track_index at all beyond the name. Baseline would be 4 if no params, but with 2 params and 0% coverage, this is a gap.

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

Purpose4/5

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

States a clear verb (find) and resource (ReaEQ on a track), plus the optional instantiation behavior. It doesn't explicitly name the sibling it differs from, but the specific mention of ReaEQ distinguishes it from generic FX tools like 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.

Usage Guidelines3/5

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

The instantiate arg implies when to use it (if you want ReaEQ added when absent), but there's no explicit when-to-use vs alternatives, and no prerequisites like requiring a valid track_index.

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

get_active_takeA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema, so the description 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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_tracksB

Get information about all tracks in the project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read but never states whether the master track is included, what fields each track carries, ordering, or volume of results for large projects — meaningful gaps for a tool whose entire value is its returned list.

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

Conciseness4/5

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

A single efficient sentence with no waste. It is a touch thin given no supporting schema or annotations, but nothing is padded or buried.

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

Completeness2/5

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

With no output schema and no annotations, the description is the only source of information about what comes back, and it says nothing about the shape or contents of the track data. An agent cannot predict the response from this definition.

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

Parameters4/5

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

Zero parameters, so there is nothing to document and the baseline is 4. The description correctly implies no filtering or pagination options are needed.

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

Purpose4/5

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

States a clear verb ('Get information about') and resource ('all tracks in the project'). The word 'all' distinguishes it from the singular get_track and from get_track_count, though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. The agent must infer that this is for bulk listing versus get_track for a single track or get_track_count for a count.

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

get_cursor_positionA

Get the edit cursor position.

Returns: Object with cursor position in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape and that the value is in seconds, and 'Get' implies a read-only operation, but it does not explicitly state side-effect safety or error behavior if no cursor exists.

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

Conciseness5/5

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

Two short, front-loaded sentences with no wasted words. The purpose comes first, followed immediately by the return value.

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

Completeness4/5

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

For a simple zero-parameter getter with no output schema, the description is nearly complete: it covers what the tool does and what it returns, including units. Minor edge cases, such as behavior when no cursor is available, are omitted but not essential.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics to explain. Per the baseline for parameterless tools, this is adequately handled by the empty schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Get the edit cursor position'), and the 'edit' qualifier subtly separates it from playback cursor tools like get_play_position. However, it does not explicitly distinguish itself from siblings such as set_cursor_position or get_play_position.

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

Usage Guidelines3/5

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

The purpose implies the tool is called when you need the current edit cursor location, but there is no explicit when-to-use guidance. No alternatives (e.g., set_cursor_position to change cursor, get_play_position for playback cursor) are mentioned.

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

get_envelope_point_countC

Get the number of points in an envelope.

Args: envelope_name: Envelope name.

Returns: Object with point count.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes
envelope_nameYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses only that a point count is returned; it says nothing about error behavior for a missing envelope, required permissions, or whether it works on track vs FX envelopes. The 'Returns' line is the sole 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.

Conciseness4/5

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

Short, front-loaded, and the docstring-style Args/Returns layout is easy to scan. Nothing is wasted, though the terseness contributes to the gaps in the other dimensions.

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

Completeness3/5

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

With no output schema, the description does cover the return value (an object with a point count), which is genuinely useful. However, the undocumented track_index parameter and absent usage/precondition guidance leave it only minimally complete for a two-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0% and the description documents only one of the two parameters (envelope_name). track_index is completely undescribed in both schema and description, leaving half the input surface undocumented.

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

Purpose4/5

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

States a specific verb and resource: 'Get the number of points in an envelope.' An agent can distinguish it from sibling get_envelope_points (which returns the points themselves) by the count semantics, though the description never explicitly names that alternative.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites (e.g. whether the envelope must exist or be armed), and no routing to alternatives such as get_envelope_points or get_track_envelope. The reader must infer usage entirely from the name.

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

get_envelope_pointsC

Get all points from an envelope.

Args: envelope_name: Envelope name.

Returns: Object with list of points (time, value, shape).

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes
envelope_nameYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the return payload structure (time, value, shape), which is genuinely useful since there is no output schema, and 'Get' signals a read-only operation. It says nothing about ordering, empty-envelope behavior, permissions, or errors, which is a meaningful gap for a tool with zero annotation coverage.

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

Conciseness3/5

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

Front-loaded with the purpose and short overall, but the 'Args: envelope_name: Envelope name' block is pure boilerplate that restates the schema with zero added information and could be dropped without loss.

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

Completeness3/5

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

For a simple two-parameter read tool with no annotations and no output schema, the description does cover the return shape, which is the most important omission to fill. The unaddressed track_index parameter and lack of any sibling differentiation leave it only adequate.

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

Parameters2/5

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

Schema description coverage is 0% and there are two required parameters. The description only restates envelope_name ('Envelope name') without adding any format or semantics, and track_index — the parameter that actually identifies which track's envelope to read — is documented nowhere at all.

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

Purpose4/5

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

Specific verb+resource: 'Get all points from an envelope', which tells the agent this returns the full point set rather than a count or a single point. However, it never distinguishes itself from the near-identical sibling get_fx_envelope_points (FX envelope) or get_envelope_point_count, so the agent must infer the track-vs-FX distinction from the schema.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus get_envelope_point_count, get_track_envelope, or get_fx_envelope_points. Usage is only implied by the verb 'Get'. No prerequisites (e.g., that the envelope must exist) are given.

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

get_eq_band_enabledA

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bandidxNo
bandtypeYes
fx_indexYes
track_indexYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose the return shape ('Object with ret boolean, true=enabled') and implicitly indicates a non-mutating read via 'Check', but says nothing about permissions, error behavior when the FX index is invalid, or whether the track must be selected.

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

Conciseness4/5

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

Purpose is front-loaded in one sentence, followed by a clean Args/Returns structure with no redundant prose. Slightly verbose in header labels but every line carries information.

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

Completeness4/5

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

There is no output schema, so documenting the return object is the right call, and the bandtype enum is a valuable addition. The one gap is the undocumented track_index parameter, which an agent must infer.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does well for three of four params: it explains fx_index (0-based), bandidx (0=first), and critically supplies the full bandtype enum mapping (0=hipass ... 5=lopass) which the schema lacks entirely. It omits any description of track_index, keeping it short of a 5.

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

Purpose5/5

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

States a specific verb+resource: checking the enabled state of a ReaEQ band. This is clearly distinguishable from siblings like get_eq_bands (all bands) and set_eq_band_enabled (mutation), so an agent can select it 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.

Usage Guidelines2/5

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

The description explains the arguments but gives no guidance on when to prefer this over get_eq_bands or how it relates to set_eq_band_enabled. Usage context is left entirely to inference 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.

get_eq_bandsB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the return structure in detail (bands list with fields and gain_db), which is valuable, and the verb 'get' implies a read-only operation. It does not state permissions or error behavior, but for a getter that 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.

Conciseness4/5

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

The description is front-loaded with purpose, then uses clear Args and Returns sections. The return field list is lengthy but justified because there is no output schema.

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

Completeness2/5

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

The tool has no annotations, no output schema, and 0% schema description coverage, so the description must be self-sufficient. It partially compensates by describing return values, but it fails to document the required track_index parameter, leaving a critical gap for an agent trying to call it.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It explains fx_index (0-based) but completely omits track_index, which is a required parameter, leaving half the parameters undocumented.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Get all ReaEQ band settings.' It scopes the result ('all') and the format ('structured call'), making it distinct from set_eq_band and get_eq_band_enabled, though it does not name those siblings explicitly.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like get_eq_band_enabled or set_eq_band. Usage is only implied by the 'get all band settings' purpose.

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

get_fx_envelopeB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
track_indexYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden, and it does disclose a key trait: this is a get-or-create operation with a side effect (the envelope is created if it doesn't exist), plus the return shape. It omits error/permission behavior when indices are invalid, so the disclosure is helpful but incomplete.

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

Conciseness4/5

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

Purpose is front-loaded, and the Args/Returns structure is easy to scan. Minor redundancy: 'The envelope is created if it doesn't exist' restates the 'or create' in the opening line, but overall the text is tight.

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

Completeness3/5

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

For a tool with no annotations, no output schema, and 0% schema coverage, the description does compensate by spelling out the return object fields (envelope_name, param_name, point_count, indices). It still leaves the other two parameters and failure modes unexplained, so it is adequate but not complete.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate, but it only explains param_index (0-based, with a helper tool for valid values). track_index and fx_index receive no explanation at all, leaving two of three required parameters entirely undocumented.

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

Purpose4/5

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

States a specific verb+resource: 'Get or create an automation envelope for an FX parameter', with a concrete example (a flanger knob in Guitar Rig) that grounds the concept. It's clear the tool returns/creates the envelope object itself. It doesn't explicitly distinguish itself from the related envelope siblings (get_fx_envelope_points, add_fx_envelope_point, clear_fx_envelope), so it falls just short of a 5.

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

Usage Guidelines3/5

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

Provides useful operational guidance: use track_fx_get_num_params() to find valid parameter indices, and notes the envelope is auto-created if absent. However, it never explains when to reach for this tool versus get_fx_envelope_points, add_fx_envelope_point, or clear_fx_envelope, leaving the workflow position 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_fx_envelope_pointsC

Get all automation points from an FX parameter envelope.

Returns: Object with list of points (time, value, shape, tension, selected).

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return structure (list of points with time, value, shape, tension, selected), which is helpful since no output schema exists. However, it does not explicitly state that this is a read-only operation, nor does it describe any side effects, permissions, or error conditions. Behavioral transparency is partial.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and then return details. No wasted words. The structure is clear and efficient.

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

Completeness2/5

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

Given three required parameters with no schema descriptions and no annotations, the description is insufficient to correctly invoke the tool. While it covers the output shape, it omits any explanation of the input indices, leaving an agent unable to determine what track_index, fx_index, and param_index should be.

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

Parameters1/5

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

Three required integer parameters (track_index, fx_index, param_index) with 0% schema description coverage. The description does not explain what these indices represent, their valid ranges, or indexing base. It adds no meaning beyond the parameter names themselves.

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

Purpose4/5

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

States a specific verb 'Get' and resource 'automation points from an FX parameter envelope'. Differentiates from siblings like get_fx_envelope (returns the envelope object) and add/delete/clear point tools. However, it does not explicitly distinguish itself from similar point-listing tools such as get_envelope_points or get_envelope_point_count.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_fx_envelope, get_envelope_points, or get_envelope_point_count. No prerequisites, conditions, 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.

get_fx_presetB

Get the current preset name of an FX.

Returns: Object with current preset name.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. The verb 'Get' plus the stated return shape establishes this as a safe read that returns an object with the preset name, which is useful, but nothing is said about error behavior when the track/fx index is invalid or out of range.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action. The 'Returns:' line is slightly redundant with the first sentence but still compact and earns most of its space by disclosing the return shape.

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

Completeness3/5

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

With no output schema the Returns line usefully names the return value, but the definition leaves the FX scope (track vs take vs master) and index semantics unstated, and offers no annotations to cover safety or mutation behavior.

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

Parameters2/5

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

Schema description coverage is 0% and neither parameter is mentioned in the description. track_index and fx_index are bare integers with no stated base, range, or relationship, so the description does nothing to compensate for the undocumented schema.

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

Purpose4/5

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

States a specific verb and resource ('Get the current preset name of an FX') and is clearly distinguishable from set_fx_preset, save_fx_preset and get_fx_presets by the read-only singular-target framing. It does not say which FX scope (track vs take) the indices refer to, which matters given sibling families take_fx_* and track_fx_*.

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

Usage Guidelines2/5

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

No when-to-use guidance and no alternative named. The agent must infer on its own that get_fx_presets (plural) is the list variant and that set_fx_preset is the mutation counterpart.

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

get_fx_presetsB

Get list of presets available for an FX.

Returns: Object with list of preset names.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden, and it partially meets it by disclosing the return shape ('Object with list of preset names'), which compensates for the absent output schema. However, it never states this is a read-only, non-mutating call, nor how it behaves if track_index/fx_index are invalid.

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

Conciseness4/5

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

Extremely short and front-loaded, with the purpose in the first sentence and the return note in the second. Each line earns its place, though the 'Returns:' block formatting is slightly heavy for a single-field result.

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

Completeness3/5

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

For a simple two-parameter read tool the description is minimally viable: it explains the output (covering the missing output schema) but leaves parameter semantics and read-only/error behavior entirely to inference, with no annotations to fill the gap.

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

Parameters2/5

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

Schema description coverage is 0%, so both required integer parameters are undocumented. The phrase 'presets available for an FX' only loosely implies fx_index identifies the FX; track_index is never explained and neither parameter's indexing/zero- vs one-based convention or valid range is given.

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

Purpose4/5

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

States a clear verb and resource: list presets available for a given FX. It is naturally distinguished from get_fx_preset/set_fx_preset/save_fx_preset by the plural 'list' framing, but the description never names or contrasts those siblings explicitly.

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

Usage Guidelines2/5

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

No indication of when to use this versus get_fx_preset, set_fx_preset, or save_fx_preset, nor any prerequisites (e.g. the FX must already exist on the track). Usage must be inferred entirely from the name.

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

get_item_infoC

Get information about a media item.

Returns: Object with item properties (position, length, take info, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a non-mutating read, and it lists some returned properties, but it says nothing about permissions, error behavior when indexes are invalid, or whether indices are zero- or one-based.

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

Conciseness4/5

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

Two short, front-loaded sentences with no filler. The return summary is a separate line rather than padding the purpose statement.

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

Completeness2/5

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

No annotations and no output schema, so the description must carry more. It hints at returned fields but omits parameter meaning, indexing conventions, and failure modes, leaving real gaps for a tool whose only inputs are two unlabeled integers.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters, and the description never mentions track_index or item_index or their valid ranges/semantics. With two undocumented required params, the description 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.

Purpose4/5

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

States a specific verb (get) and resource (information about a media item), which is clear on its own. It does not explicitly distinguish itself from siblings like get_track_items or get_midi_item, but the 'media item properties' framing is reasonably specific.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as get_track_items, get_midi_item, get_active_take, or get_takes. The agent must infer 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.

get_markersB

Get all markers in the project.

Returns: Object with list of markers (position, name, index).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the return payload (position, name, index), which is genuinely useful, but says nothing about ordering, scope beyond 'the project', or whether it is a safe read — though the 'Get' verb implies read-only.

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

Conciseness4/5

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

Two short sentences, purpose first, return shape second — front-loaded with no filler. Slightly terse rather than wasteful, so 4.

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

Completeness4/5

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

No output schema exists, and the description compensates by describing the returned object and its fields. For a zero-arg getter this is close to complete; only ordering/scope detail is absent.

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

Parameters4/5

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

Zero parameters, so the schema has nothing to document and the baseline is 4. The description cannot add parameter meaning that does not exist.

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

Purpose4/5

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

Clear verb+resource: 'Get all markers in the project' tells the agent exactly what is retrieved. It does not differentiate itself from the near-neighbor get_regions, which shares the same read-list shape, so it stops short of 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_regions, go_to_marker, or add_marker/delete_marker. The agent must infer usage purely from the name.

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

get_master_trackC

Get information about the master track.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a safe read, but says nothing about what the master track info contains, whether it includes FX/sends/volume state, or the return shape.

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

Conciseness4/5

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

A single short sentence with no filler, and the key concept (master track) is front-loaded. It is efficient, though its brevity is partly a symptom of under-specification.

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

Completeness2/5

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

With no output schema, no annotations, and no parameters, the description is the only source of information — and it says nothing about what 'information' is returned. An agent cannot predict the response content or how it differs from get_track on the master track index.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose3/5

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

The description states a verb (get) and a resource (the master track), so the basic intent is identifiable. However, 'information' is vague about what is actually retrieved, and it does nothing to distinguish this from siblings like get_track, get_all_tracks, or get_track_master_send.

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

Usage Guidelines2/5

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 the many related track tools. No preconditions, no exclusions, no named alternative — the agent must infer everything 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.

get_midi_itemB

Get information about a MIDI item.

Returns: Object with item info including position, length, note count.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the shape of the return object (position, length, note count), which is genuinely useful, but says nothing about indexing conventions, error behavior for invalid indices, or whether the lookup is read-only/idempotent.

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

Conciseness4/5

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

Two short sentences with a clearly front-loaded purpose and a structured 'Returns:' block; nothing is wasted. It is arguably under-specified rather than bloated, but structurally it is clean and easy to parse.

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

Completeness3/5

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

For a simple two-parameter read tool the description is minimally sufficient, and it partially covers the return values in the absence of an output schema. It leaves the index parameters entirely unexplained and offers no routing against near-duplicate siblings, so gaps remain.

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

Parameters2/5

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

Both parameters (track_index, item_index) have 0% schema description coverage and the description adds no semantics for them — it never says whether indices are 0-based, whether they refer to the project or a folder, or what happens if they are out of range. With a coverage gap this large, the description should compensate and does not.

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

Purpose4/5

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

States a specific verb and resource ('Get information about a MIDI item') and even enumerates the returned fields (position, length, note count). However, with siblings like get_item_info and get_midi_notes in the same namespace, it does nothing to explain why an agent would pick this tool over those, so it falls short of the sibling-differentiating 5.

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

Usage Guidelines2/5

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 get_item_info, get_track_items, get_midi_notes, or get_selected_midi_notes, and no preconditions or exclusions are stated. The agent must infer usage purely from the name.

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

get_midi_notesC

Get all MIDI notes from an item.

Returns: Object with list of notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says it returns notes but doesn't indicate whether the item must exist, what happens if track_index/item_index are invalid, or the shape of note objects. The minimal 'Returns:' block is the only behavioral hint.

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

Conciseness4/5

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

The description is very short and front-loaded with the core action. The two-line 'Returns' block adds little, but there's no verbosity to trim.

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

Completeness2/5

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

For a read tool with no annotations, no output schema, and fully undocumented parameters, the description is far too thin. It should at least document the parameters and note constraints such as valid indices.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain track_index, item_index, or the fields parameter. Parameters are effectively undocumented, which is a serious gap for a 3-param tool.

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

Purpose4/5

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

States a specific verb (get) plus resource (MIDI notes from an item), which is clear enough to distinguish it from the many sibling mutators like add_midi_note or delete_midi_note. It doesn't explicitly differentiate from get_midi_item or get_selected_midi_notes, but the resource is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_midi_item or get_selected_midi_notes. The description gives no context about preconditions or selection state.

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

get_play_positionB

Get the current playback position.

Returns: Object with play position in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the return shape and unit (seconds). It omits whether the value is meaningful when playback is stopped or idle, or whether it reflects the edit cursor instead of the play cursor.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core purpose, and the return-value sentence is useful. No wasted text, though the returns clause is formatted as a pseudo-header rather than integrated prose.

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

Completeness4/5

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

For a trivial zero-parameter getter with no output schema, the description covers the purpose and the return value's shape and unit. The main missing piece is the distinction from adjacent position/state getters, which is minor at this complexity level.

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

Parameters4/5

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

The tool takes zero parameters with an empty schema, so the baseline is 4. The description correctly adds no parameter detail because none exists.

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

Purpose4/5

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

The description states a specific verb and resource ('Get the current playback position'), which is clear on its own. However, it does not differentiate itself from the closely related get_cursor_position or get_play_state siblings, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus get_cursor_position, get_play_state, or get_project_length. The description gives no context, prerequisites, or alternatives.

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

get_play_stateC

Get the current playback state.

Returns: Object with play state info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. 'Get' implies a safe read, but 'Object with play state info' is too vague to disclose what the state actually contains or whether it reflects live transport or a snapshot.

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

Conciseness3/5

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

The first sentence is tight and front-loaded, but the second sentence ('Returns: Object with play state info') is near-circular and adds almost nothing, so not every sentence earns its place.

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

Completeness2/5

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

With no output schema and no annotations, the description is the only source of return-shape information, and 'play state info' leaves the agent unable to know what fields or values to expect from a call.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate.

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

Purpose4/5

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

Clear verb+resource: 'Get the current playback state' tells the agent exactly what is retrieved. However, it does nothing to distinguish itself from siblings like get_play_position, get_repeat_state, or get_active_take, which also report transport/navigation state.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no alternatives are named. The agent must infer from the name alone that this is the transport-state read versus play/pause/stop or get_play_position.

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

get_project_lengthB

Get the length of the project (end of last item).

Returns: Object with project length in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return is an object with length in seconds, but doesn't state whether this is a read-only operation, whether it requires specific project states, or how it handles empty projects. For a getter with no annotations, 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.

Conciseness5/5

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

The description is extremely concise—one sentence plus a brief return note—with no wasted words. It front-loads the core purpose immediately.

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

Completeness3/5

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

For a parameterless getter with no output schema, the description is minimally adequate. It explains what is returned (length in seconds), but lacks behavioral context such as whether the project must be open, what happens with empty projects, or how this relates to other project-level tools. It's enough to call correctly but leaves gaps in understanding edge cases.

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

Parameters4/5

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

With zero parameters, the baseline is 4. The description adds no parameter information, which is appropriate since there are none to describe.

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

Purpose4/5

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

The description states a specific verb and resource ('Get the length of the project') and clarifies the scope with '(end of last item)'. This is clear and unambiguous, though it doesn't explicitly distinguish itself from sibling tools like get_project_summary, which might also return project length.

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

Usage Guidelines2/5

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_project_summary or get_project_path. The description merely states what it does, leaving the agent to infer appropriate usage contexts without any exclusions or referrals.

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

get_project_nameC

Get the project name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses nothing: not whether the operation is read-only (implied by "Get" but never stated), not what happens if no project is loaded, and not the return shape. A one-line getter has a low behavioral burden, but the description adds essentially zero context.

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

Conciseness4/5

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

A single short sentence with no padding and the key information front-loaded. It is appropriately sized, though at this length there is nothing to structure.

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

Completeness3/5

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

With no parameters, no annotations, and no output schema, the only thing an agent still needs is what comes back (a name string, possibly empty when no project is open). That is left unstated, so the definition is minimally viable rather than complete.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics for the description to clarify. Baseline of 4 applies with no compensating gap to fill.

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

Purpose3/5

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

"Get the project name" states a verb and a resource, so the intent is unambiguous, but it is close to a restatement of the tool name and offers no differentiation from closely related siblings such as get_project_path, get_project_summary, or get_project_length. An agent can infer the purpose but gets no help selecting among the project-level getters.

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

Usage Guidelines2/5

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 the neighboring project getters, and no preconditions (e.g. a project being open). It is implied usage only, with no alternatives named.

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

get_project_pathC

Get the project path.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden and fails to meet it: nothing is said about what the returned value is, whether it reflects the saved project or the current working session, or what happens if no project is open. For a zero-param read it is low-risk, but the disclosure is effectively absent.

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

Conciseness3/5

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

A single short sentence that is front-loaded and wastes nothing, but it is under-specified rather than concise — the brevity comes from omitting information rather than from efficient phrasing.

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

Completeness2/5

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

With no output schema, the description is the only place the return value could be explained, and it does not say what a 'project path' string looks like or how it differs from the project name. For a simple getter the complexity is low, but the key ambiguity is left unresolved.

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

Parameters4/5

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

The tool takes no parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline of 4 applies for a parameterless tool.

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

Purpose3/5

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

States a verb and a resource ('Get the project path'), so the basic intent is recoverable, but 'project path' is ambiguous — filesystem path, directory, or DAW-internal path — and the description does nothing to distinguish it from close siblings like get_project_name. It is identifiable but not precise.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites or session state, and no reference to any alternative such as get_project_name or get_project_summary that an agent might confuse it with. The agent is left to infer usage entirely from the name.

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

get_project_summaryA

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}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It transparently documents the complete return shape, which is the main behavioral information for a getter. It does not explicitly state read-only/no side effects, but 'Get' and the return-only documentation make the read-only nature clear.

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

Conciseness4/5

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

Front-loads the core purpose in the first sentence, then uses a well-structured Returns list. The length is justified because there is no output schema, though the phrase about giving useful mixing/production advice is slightly editorial rather than strictly necessary.

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

Completeness5/5

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

With no output schema, no annotations, and no input parameters, the description fully compensates by enumerating the returned object and all nested track, master, marker, and region fields. Nothing essential for calling or interpreting this summary tool is missing.

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

Parameters4/5

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

The tool has zero parameters, so schema semantics are not a concern. Baseline for zero parameters is 4, and the description appropriately does not invent or discuss parameters.

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

Purpose5/5

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

States a specific verb and resource ('Get a comprehensive summary of the current REAPER project') and distinguishes itself from sibling getters by being the single-call aggregate that returns project state. An agent can tell it is the high-level summary tool rather than one of the narrow getters like get_project_name or get_tempo.

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

Usage Guidelines4/5

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

Clearly indicates the context of use: it returns everything needed to understand project state and give mixing/production advice in a single call. It does not explicitly list when not to use it or name the individual alternatives, but the single-call framing implies preference over multiple narrow getters.

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

get_regionsB

Get all regions in the project.

Returns: Object with list of regions (start, end, name, index).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the return shape (start, end, name, index), which is useful behavioral context. However, it doesn't mention permissions, side effects (read-only is implied), rate limits, or whether this works only when a project is open.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose and followed by a concise return description. No wasted words, though the return formatting is a bit informal.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema and no annotations, the description should ideally clarify when to use it versus other region/marker tools. It covers the return structure but leaves usage context incomplete.

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

Parameters4/5

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

Parameter count is 0, so according to the rules the baseline is 4. The description does not need to document parameters, and it correctly focuses on the return value instead.

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

Purpose4/5

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

States a specific verb and resource: 'Get all regions in the project.' Distinguishes from get_markers and get_takes by naming the region concept. No explicit differentiation from sibling get_regions-like tools, but the 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.

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives like get_markers or go_to_region. The description implies a read operation but offers no context, prerequisites, or exclusions.

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

get_repeat_stateA

Get the current repeat state.

Returns: Object with repeat state (true/false).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a non-mutating read and the return shape (object with true/false) is disclosed, which is real value given there is no output schema. It says nothing about permissions, scope, or side effects, but for a trivial getter that is a modest gap.

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

Conciseness5/5

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

Two short lines, front-loaded with the action and followed immediately by the return shape. No filler, no redundancy.

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

Completeness4/5

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

For a zero-parameter getter with no output schema, the description supplies the missing piece — the return value — so an agent can interpret the result. It could be slightly richer about scope, but nothing essential is absent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to disambiguate beyond what the empty schema already conveys.

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

Purpose4/5

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

States a specific verb+resource: 'Get the current repeat state.' An agent knows it retrieves repeat/loop status, and the return line clarifies the value is a boolean. It does not, however, distinguish itself from the sibling toggle_repeat or say what scope of repeat state is meant (project/transport).

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

Usage Guidelines2/5

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

No when-to-use guidance at all. The sibling toggle_repeat is the obvious alternative for changing the state, but the description never mentions it or the condition under which this read should be preferred.

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

get_selected_itemsB

Get all selected media items.

Returns: Object with list of selected items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses only the return shape ('Object with list of selected items'), omitting behavior for empty selections, ordering, and whether selection is scoped to the current project or edit cursor context.

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

Conciseness4/5

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

Front-loaded verb+resource in one sentence, followed by a brief return note. No padding or redundancy, though the 'Returns:' line mostly restates the first sentence.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description should at least be clear about what a selection means and what happens when nothing is selected. It gives return shape but leaves these operational gaps.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so the baseline is 4. There is nothing parameter-level for the description to clarify or compensate for.

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

Purpose4/5

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

States a specific verb+resource ('Get all selected media items'), and the word 'media' differentiates it from siblings like get_selected_tracks and get_selected_midi_notes. It does not explicitly name those siblings, but the resource noun is specific enough to route correctly.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this versus get_selected_tracks, get_selected_midi_notes, or get_time_selection. There are no exclusions or context cues; the agent must infer routing from the resource name alone.

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

get_selected_midi_notesA

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:[].

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
item_indexYes
track_indexYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and mostly discharges it: it declares 'Read-only, no undo,' documents the return shape, explains that `index` is REAPER's absolute PPQ-sorted note index so a partial selection is non-contiguous, and defines the empty-selection case. It stops short of error/permission behavior, but for a pure read this is strong disclosure.

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

Conciseness5/5

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

Front-loaded with the core action in the first sentence, then usage guidance, then a compact Returns block. No filler; the return-shape detail earns its space because no output schema exists.

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

Completeness4/5

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

For a tool with no output schema, the description usefully specifies return structure and indexing semantics. The remaining gap is parameter documentation at 0% coverage, particularly `fields`, which an agent cannot resolve from either structured source.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions track_index, item_index, or fields by name; the only hint is 'for the active take' and 'item-relative start_beat/end_beat.' The `fields` projection parameter is left entirely unexplained in both schema and description, so the description does not compensate for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Read the MIDI notes currently SELECTED ... for the active take') with a clearly bounded scope. It is immediately distinguishable from the sibling get_midi_notes, which covers all notes rather than the selection.

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

Usage Guidelines5/5

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

Explicitly frames itself as the 'escape hatch for "operate on what I've selected"' and walks through the intended workflow: select by hand in REAPER, call this, then convert the result into an explicit value filter (pitch range / beat window / channel) for transform tools. That is exactly the when-to-use and how-to-follow-up guidance an agent needs.

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

get_selected_tracksB

Get indices of all selected tracks.

Returns: Object with list of selected track indices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the return shape (an object containing a list of indices), which is the main behavioral fact for a zero-argument query, but it omits what happens when nothing is selected (empty list vs error) and does not state that it is read-only/side-effect free.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and followed by the return contract. The 'Returns:' block is mildly redundant with the first sentence but is not wasted space since no output schema exists.

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

Completeness4/5

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

For a trivial zero-parameter read tool with no output schema, the description supplies the essential return contract, so nothing critical is missing. It could be more complete by noting the empty-selection behavior or that callers pair it with select_track/select_all_tracks.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. Schema coverage is 100% and the empty object schema is self-evident.

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

Purpose4/5

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

States a specific verb and resource ('Get indices of all selected tracks') and specifies the unit returned (indices), so an agent knows it is not returning track objects. It is distinguishable by name from selection mutators like select_all_tracks, but it never contrasts itself with get_selected_items or explains what an 'index' means here.

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

Usage Guidelines2/5

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

No statement of when to call this versus alternatives, and no prerequisites. Siblings such as get_selected_items, get_all_tracks, and select_all_tracks are plausible alternatives, but the description gives no routing guidance.

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

get_takesB
Read-only

List all takes of a media item.

Returns: Object with 'takes' array (each entry: index, name, is_active) and 'ret' = take count.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_tempoB

Get the project tempo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it adds essentially nothing beyond the name. It does not disclose the return type (a scalar BPM value), units, or whether it reflects per-project tempo vs any tempo map / automation. For a zero-annotation tool this is a real gap, though the operation is inherently low-risk.

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

Conciseness4/5

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

A single short sentence with the resource front-loaded after the verb; nothing superfluous. It is efficient, though so terse that it verges on under-specification rather than true conciseness.

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

Completeness3/5

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

There is no output schema, so the description should ideally state what is returned (e.g. tempo in BPM) to let an agent use the result. For an otherwise trivial zero-param getter, the definition is minimally adequate but leaves the return value unspecified.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. No parameter information is needed or expected in the description.

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

Purpose4/5

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

The description states a specific verb+resource ('Get the project tempo') that unambiguously identifies the operation. It does not explicitly differentiate from set_tempo, but the directional verb makes the read-vs-write distinction obvious from the name alone.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives such as set_tempo or get_time_signature, and no stated prerequisites or context. The implied read-only usage is inferable only from the verb 'Get'.

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

get_time_selectionB

Get the current time selection.

Returns: Object with start and end times.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It does disclose the return shape (an object with start and end times), which is useful since no output schema exists, but it omits the edge case of no active selection (empty/null values), time units/format, and whether this is a pure 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.

Conciseness4/5

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

Two short sentences, purpose front-loaded, followed by the return block. No filler. The Returns block is not redundant because no output schema is defined.

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

Completeness3/5

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

For a trivial no-param getter with no annotations, the description covers purpose and return type, which is close to adequate. It stops short of describing behavior when no selection exists, which is the one plausible ambiguity for a getter of this kind.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there is nothing for the description to clarify. Baseline for a parameterless tool.

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

Purpose4/5

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

States a specific verb (Get) and resource (current time selection), which is unambiguous and clearly distinct from the set_time_selection and clear_time_selection siblings. It does not explicitly name or differentiate against those siblings, but the purpose itself is crisp.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives. The description gives no hint that this is the read counterpart to set_time_selection/clear_time_selection, nor what a caller would use the result for (e.g., feeding zoom_to_selection). Usage is left entirely to inference from the name.

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

get_time_signatureB

Get the project time signature.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't disclose that this is a read-only operation or what the return format looks like (e.g., numerator/denominator). For a getter, the description should at least imply read-only, but it's minimal.

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

Conciseness4/5

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

The description is a single, efficient sentence that is front-loaded and contains no waste. 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.

Completeness2/5

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

With no annotations, no output schema, and no parameters, the description is extremely sparse. It doesn't explain what the time signature consists of (e.g., beats per measure, beat unit) or how it's returned. An agent would have to guess the output format. More context is needed for a complete definition.

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

Parameters4/5

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

The tool has no parameters, so there is no parameter semantics to describe. Baseline score for zero parameters is 4.

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

Purpose4/5

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

The description clearly states the action and target: get the project time signature. It distinguishes itself from sibling set_time_signature and get_tempo, but doesn't explicitly note the distinction. 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.

Usage Guidelines2/5

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. It doesn't mention that it returns the current time signature (e.g., 4/4) or that it's for reading, not setting. An agent might confuse it with set_time_signature or get_tempo.

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

get_trackB

Get information about a track.

Returns: Object with 'info': guid, name, volume, volume_db, pan, muted, soloed, has_midi, has_audio, fx_names, role.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It helpfully enumerates the returned fields (volume, muted, fx_names, role, etc.), but omits any disclosure about index conventions, error behavior for an invalid index, or whether the operation is a pure read. Some added value, but significant gaps remain.

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

Conciseness4/5

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

Front-loaded purpose followed by a compact field list with no wasted prose. Efficient and readable, though the Returns block could be framed more clearly.

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

Completeness3/5

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

Because there is no output schema, the description reasonably fills that role by listing returned fields. But with no annotations and an undocumented required parameter, an agent still lacks enough information to call the tool confidently (index basis and invalid-index behavior).

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

Parameters2/5

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

Schema description coverage is 0% and the single critical parameter (track_index) is completely undocumented. The most important semantic - whether it is 0-based, 1-based, or relative to selected tracks - is absent from both schema and description, so the description fails to compensate.

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

Purpose4/5

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

States a specific verb and resource ('Get information about a track'), which clearly separates it from get_all_tracks and get_master_track. However, it does not explicitly call out sibling differentiation (e.g. that it retrieves a single track by index), 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.

Usage Guidelines2/5

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 versus alternatives like get_all_tracks or get_master_track, and no prerequisites or index-range caveats. Usage is only implied by the tool name.

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

get_track_countA

Get the total number of tracks in the current REAPER project (excluding master track).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden, and it does add one real behavioral detail: the master track is excluded from the count. However, it never states that this is a read-only/non-mutating operation or whether the count reflects the project as loaded versus as saved.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the scope qualifier follows the core verb+resource immediately. Every clause earns its place.

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

Completeness4/5

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

For a zero-parameter query tool with no output schema, the description tells the agent what is returned (a total track count) and what is excluded (the master track). It stops short of clarifying whether the count includes hidden/folder-child tracks, but nothing critical is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. The description's scope note (current project, master excluded) is the only semantic content needed, and it is present.

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

Purpose4/5

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

States a specific verb and resource (get the total number of tracks) and adds a meaningful scope qualifier (in the current REAPER project, excluding master track). That exclusion implicitly distinguishes it from get_master_track and get_all_tracks, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives, despite siblings like get_all_tracks and get_master_track that overlap in scope. An agent must infer that this tool is the cheap count-only alternative to fetching the full track list.

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

get_track_envelopeC

Get a track envelope by name.

Args: envelope_name: Envelope name (e.g., "Volume", "Pan", "Mute").

Returns: Object with envelope info.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes
envelope_nameYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states only that an "Object with envelope info" is returned, without describing what that object contains, what happens if the envelope name is invalid, or whether the envelope must be armed/active first.

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

Conciseness4/5

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

Short and front-loaded with the core purpose in the first line. The Args/Returns scaffolding is somewhat boilerplate but not wasteful, and no sentence is redundant.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain the returned envelope structure, but it only says "Object with envelope info." Combined with the undocumented track_index parameter, an agent lacks enough to call this reliably beyond the simplest case.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It documents envelope_name with useful examples ("Volume", "Pan", "Mute") but completely omits track_index, one of the two required parameters, leaving half the input undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb and resource ("Get a track envelope") with a name-based lookup. However, it does not distinguish this from close siblings like get_fx_envelope or get_envelope_points, leaving the agent to infer which retrieval tool applies.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the many envelope-related siblings (get_fx_envelope, get_envelope_points, add_envelope_point). No prerequisites or exclusions are stated.

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

get_track_fx_chunkB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that this is a read of the full serialized plugin state and describes the response payload, but it says nothing about chunk size, binary vs. text encoding, permissions, or whether the returned chunk is safe/valid to restore.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and kept to a few short sentences. There is minor redundancy between 'includes preset/state data' and 'contains the full serialized state of the plugin', but no wasted structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since no output schema exists, it is appropriate that the description explains the return value ('chunk' string). It is nonetheless incomplete: with no annotations and zero parameter documentation, an agent lacks the indexing conventions and safety/behavioral context needed to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two required integer parameters, so the schema adds no meaning. The description never mentions track_index or fx_index, their indexing base, or how to resolve an FX index (e.g., via track_fx_get_list), leaving both parameters undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the raw state chunk from an FX plugin', which distinguishes it from param-level siblings like track_fx_get_param and preset-level ones like get_fx_preset. It does not explicitly name or contrast those alternatives, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one concrete use case ('reading VSTi state data like Toontrack EZkeys chord progressions'), which implies when it is useful. However, there is no statement of when not to use it, no prerequisites, and no routing to sibling tools such as get_fx_preset or set_fx_preset.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_itemsC

Get all media items on a track.

Returns: Object with list of items.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Get' implies read-only and the return shape ('Object with list of items') adds some context, but it omits error behavior, ordering, empty results, and permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose front-loaded and a brief return note. There is no padding, though the content is slightly under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema and no annotations, the description is incomplete. It does not explain what track_index represents or what the returned media items contain, leaving key details to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the only parameter, track_index, is undocumented in the schema. The phrase 'on a track' implies track_index selects a track, but no indexing convention, valid range, or format is provided to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all media items on a track'), which is distinct from sibling get_track or get_item_info. However, it does not explicitly differentiate itself from alternatives, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use guidance, no alternatives, and no prerequisites. The purpose implies usage, but there is no contextual routing for an agent choosing among the many track-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_master_sendA
Read-only

Get the master/parent send state of a track.

Returns: Object with 'ret' field (1 = enabled, 0 = disabled).

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_sendsC

Get the number of sends from a track.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It implies a read-only accessor but says nothing about error behavior for an invalid track_index, whether the count includes disabled/inactive sends, or what format the number takes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste. It is efficient, though its brevity is achieved partly by omitting information that would be useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented parameter, the description leaves key gaps: it does not explain the track_index, the semantics of the returned count, or failure modes. For a tool this terse, more was needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter track_index is undocumented in both schema and description. The description does not clarify whether the index is zero-based, refers to the track list position, or must correspond to an existing track.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('number of sends from a track'), so an agent knows it is a read accessor for send count. It is not tautological, but it does not distinguish itself from near siblings like get_track_count or create_send/delete_send beyond the obvious noun 'sends'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this rather than the related send tools (create_send, delete_send, set_send_volume) or how the returned count relates to them. Usage is only implied by the verb 'Get'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_peakB

Get the current peak level of a track.

Args: channel: Channel (0=left, 1=right).

Returns: Object with peak value in dB.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNo
track_indexYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the return is an object with a peak value in dB and that this is a getter, but it omits whether the tool requires playback, has side effects, or needs an active track.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then cleanly separates Args and Returns. Every line adds information, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with two parameters, no output schema, and no annotations, the description covers the return value and one parameter's meaning. However, it leaves track_index undocumented and does not describe behavior such as invalid track handling or measurement timing, so it is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It usefully documents channel as 0=left and 1=right, but it does not explain track_index at all, leaving one required parameter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the current peak level of a track.' This clearly describes the action, but it does not differentiate from sibling tools such as get_track_peak_hold or clear_all_peak_indicators, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus alternatives. The description implies usage by saying it gets the current peak level, but it provides no context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_peak_holdA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNo
track_indexYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_stateA

Get the current undo/redo state.

Returns: Object with undo and redo descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return shape ('object with undo and redo descriptions'), which is useful transparency about what the caller receives, but it says nothing about whether the tool mutates state, requires a loaded project, or how it behaves at the ends of the undo history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines, purpose front-loaded, and the return-shape note earns its place because no output schema exists. The formatting is slightly awkward with the dangling 'Returns:' block, but there is no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read getter with no annotations, the description covers what it does and roughly what it returns, which is close to enough. The only real gap is the absence of context about when the state is meaningful (e.g., project must be open).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema is trivially complete and there is nothing for the description to clarify. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('current undo/redo state'), which is unambiguous on its own. It implicitly distinguishes itself from the mutating siblings undo and redo, but never names them, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or mention of the sibling undo/redo tools. Usage is only implied by the name and the read-only verb - an agent can reasonably infer 'call this to inspect state before deciding to undo', but the description does not say so.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

go_to_markerC

Move the edit cursor to a marker.

ParametersJSON Schema
NameRequiredDescriptionDefault
marker_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It implies the cursor is mutated but says nothing about what happens with an invalid index, whether the view scrolls, or whether the change is undoable, so key behaviors are undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of the missing detail noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No annotations, no output schema, and 0% parameter coverage mean the description is the only information source, yet it omits the index convention and relation to get_markers. For a cursor-moving tool this is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter is undocumented. The description says 'to a marker' but never clarifies whether marker_index is 0- or 1-based or that it corresponds to the ordering returned by get_markers, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (move) and resource (edit cursor to a marker), so the action is unambiguous. However, it does nothing to distinguish itself from the sibling go_to_region or from set_cursor_position, leaving the agent to infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 go_to_region or set_cursor_position, nor any prerequisite such as needing an existing marker. An agent is left to infer all context 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.

go_to_regionB

Move the edit cursor to a region start.

ParametersJSON Schema
NameRequiredDescriptionDefault
region_indexYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose a meaningful behavioral fact: it moves the *edit* cursor rather than the play cursor. However, it says nothing about whether the region must exist, what happens on an out-of-range index, or any other side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient, front-loaded sentence with zero filler. Brevity here edges toward under-specification rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-param navigation tool the definition is minimally viable, but with 0% schema coverage and no output schema the unexplained region_index and lack of relation to get_regions leave a real gap an agent must close by trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and does not. The single parameter 'region_index' is never explained — no index origin (0- vs 1-based), no hint that it comes from get_regions. An agent must guess the valid range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Move the edit cursor to a region start.' An agent can distinguish it from navigation siblings like go_to_marker by the region target. It does not explicitly call out that distinction, but 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.

Usage Guidelines2/5

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 mention of the closely related go_to_marker alternative or get_regions for enumerating valid targets. Usage is only inferable from the verb.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
fieldsNo
timingNo
channelNo
end_beatNo
velocityNo
max_sigmaNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does so well: bell-curve offsets, preserved note lengths, untouched pitches, seeded reproducibility, velocity clamping to 1-127, out-of-bounds notes past item end kept and reported, and pre-start notes snapped to item start. It omits which notes are targeted (all vs. selection) and the return shape beyond the clamped/out_of_bounds counts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line summary followed by behavior, edge cases, and an Args block — logical and mostly earned. The middle paragraph on clamping vs. out_of_bounds is dense and slightly redundant, but appropriate for a tool with this much edge-case behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation tool with no output schema and no annotations, the description covers the core effect and edge cases but leaves the scope filters (fields, channel, pitch range, beat range) and return_notes undocumented. An agent cannot fully determine which notes will be modified or what to pass for half the parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 13 parameters, but the Args section documents only timing, velocity, seed, and max_sigma. Nine parameters (track_index, item_index, fields, channel, start_beat, end_beat, pitch_low, pitch_high, return_notes) get no explanation in either the schema or the description, so the low coverage is not compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Humanize MIDI: nudge timing and velocity") and specifies the mechanism (small random amounts, reproducibly). It explicitly positions itself relative to other tools with "Unlike the other timing tools," so an agent can distinguish it from nudge/quantize/strum siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose and the "Unlike the other timing tools" comparison, but there is no explicit when-to-use/when-not guidance or named alternative (e.g., use nudge_midi_notes for deterministic shifts, quantize for grid snap). The agent must infer the choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_audio_fileC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes
file_pathYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it only discloses the return shape. It says nothing about failure modes (missing file, invalid track), permission or project-state requirements, or whether the operation is undoable — meaningful gaps for a mutating insert operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns layout is well organized and front-loaded with the core purpose, and each line earns its place. Slightly terse but no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, describing the return object (track_index, item_index, position) is genuinely useful and partially compensates. But with no annotations and an undocumented required parameter, the definition is only minimally sufficient for a mutating tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It documents file_path ('Full path') and position ('in seconds', giving units), but omits track_index entirely even though it is a required parameter, leaving one of three inputs undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Insert an audio file onto a track'), so an agent immediately knows the operation. It does not, however, distinguish itself from adjacent siblings such as create_midi_item or duplicate_item, which a caller must infer from the audio-vs-MIDI distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 create_midi_item, duplicate_item, or paste_items, and no stated prerequisites such as the file needing to exist or the track needing to be valid. The caller must infer all of this.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
indexNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the optional index default and that a result about the created track is returned, but it does not describe side effects, permissions, undo behavior, or whether existing tracks are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and appropriately sized. The Args and Returns sections are justified because the input schema has no parameter descriptions and no output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with no annotations and no output schema, the description covers the core invocation needs: purpose, both parameters, default behavior, and a basic return indication. It omits deeper side-effect context, but otherwise is complete enough to call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that index is 0-based, defaults to appending at the end, and that name is optional. This adds meaningful semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Insert a new track at the specified index.' It clearly identifies a track-creation operation, distinguishing it from sibling tools like get_track, delete_track, create_bus, and insert_audio_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied for adding tracks, and the index default ('adds at end') gives some contextual guidance. However, there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives such as create_bus or insert_audio_file.

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:[...]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoconnect
voiceNochordal
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
length_beatsNo
return_notesNo
max_gap_beatsNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden. It specifies that only note ends move, that starts are never touched, that 'connect' never shortens and respects max_gap_beats with gaps_preserved, that the last note is left alone, and that out-of-bounds notes are kept and reported. This is thorough 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then structured into behavioral detail, Args, and Returns. It is generally efficient, though the mode definitions in the opening paragraph are repeated in the Args section, adding minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 13-parameter mutation tool with no annotations and no output schema, the description covers the main behavior and return shape but fails to explain most parameters, including how to target notes by channel, pitch, beat range, or fields. An agent would lack crucial information to invoke the tool correctly beyond the core mode settings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain all 13 parameters, but it documents only mode, voice, max_gap_beats, and length_beats. Key filtering and targeting parameters such as track_index, item_index, fields, channel, end_beat, pitch_low, pitch_high, start_beat, and return_notes remain unexplained, leaving significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: closing gaps in a MIDI line (legato) or setting every note to one length. It is clear and unique among siblings, but it does not explicitly differentiate itself from related MIDI editing tools like quantize_midi_notes or remove_overlapping_midi_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly explains when to use each mode: 'connect' for legato extension and 'fixed' for uniform lengths, including detailed behavioral conditions. However, it offers no guidance on when to choose this tool over sibling tools such as quantize_midi_notes or humanize_midi_notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nudge_midi_notesB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
amount_beatsYes
return_notesNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose real behavior: start/end move together (lengths preserved), edge notes clamp to item bounds, and an `out_of_bounds` vs `clamped` distinction is reported. However it omits the scope of the mutation — that only a filtered subset of notes (by channel, pitch range, beat range) is affected — and says nothing about reversibility/undo for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core operation, then the behavioral caveat, then a clean Args block; no filler sentences. The Args block containing only one of ten parameters is a structural oddity, but the prose itself is tight and well ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin: it explains the shift and clamping but never explains note selection (which notes get nudged) or the `return_notes` toggle, and it references `out_of_bounds`/`clamped` return fields that no output schema defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 10 parameters, so the description must compensate and largely does not. `amount_beats` is explained well (units, sign, 0.25 = a 16th, -1.0 = a beat, 0 = no-op), but the nine filtering/selection parameters (track_index, item_index, channel, pitch_low/high, start_beat, end_beat, fields, return_notes) are never mentioned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Shift MIDI notes in time by a number of beats') with a clear sign convention, and the length-preserving/clamping semantics implicitly separate it from quantize, stretch, or humanize. It never names an alternative sibling, so differentiation is left to inference rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the operation itself (relative time shift), and the clamping note hints at the edge case of notes near item boundaries. There is no explicit when-to-use, when-not-to-use, or comparison against quantize_midi_notes/stretch_midi_notes, which all touch note timing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_projectB

Open a REAPER project file.

Args: path: Full path to the .rpp file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether opening a project discards the currently loaded project, what happens to unsaved changes, or whether it errors on a missing/invalid file path — all material for a state-replacing load operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines, front-loaded with the action, and the Args block is justified by the added path detail. Minor formatting overhead from the 'Args:' scaffold, but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter open operation with no output schema, the description covers what it does and the parameter. However, with zero annotation coverage it omits the key side-effect question (what happens to the currently open project), which an agent needs before invoking a destructive-by-replacement load.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: 'Full path to the .rpp file' clarifies both the required absolute-path form and the expected file type, meaningfully more than the bare 'string' in the schema. It stops short of format/existence details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Open a REAPER project file'), which clearly distinguishes it from siblings like create_project, save_project, and get_project_path. It stops short of explicitly naming those siblings or contrasting scope, so it lands at a solid 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: nothing says this must precede other project operations, nor how it relates to create_project or save_project. Usage is only implied by the tool name.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It doesn't disclose what happens to existing items at the cursor, whether the pasted items are selected afterward, undo behavior, or any permissions/side effects. Only the basic action is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence with no waste, front-loading the verb and resource. Appropriate size for a parameterless action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no annotations or output schema, the description is minimal. It omits behavioral details like selection state after paste or undo implications, leaving gaps an agent might need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline 4 applies. The description's reference to the edit cursor provides implicit context about the target position.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Paste) and resource (items from clipboard), with a precise target location (edit cursor). This is clearly distinguishable from sibling tools like copy_selected_items and cut_selected_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the clipboard operation and edit cursor mention, but the description does not explicitly state when to use this versus alternatives or any prerequisites (e.g., clipboard must contain items).

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It doesn't say whether pause retains the cursor position, whether it toggles, or how it differs behaviorally from stop. For a no-parameter transport mutation this leaves the agent guessing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no waste, front-loaded with the verb and target.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial transport action with no parameters, no annotations, and no output schema, the description is minimally adequate but omits any statement of return state or how it relates to get_play_state and stop.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so no parameter documentation is required; the baseline for a 0-param tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('pause') and resource ('playback') in a named host ('REAPER'). It is clearly distinct from sibling transport tools like play and stop, though it doesn't explicitly contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or mention of alternatives such as stop or play. For a simple transport control the invocation context is largely implied, but the description does nothing to clarify when pause is preferred over stop.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing beyond the action itself: no note on behavior when playback is already active, whether playback starts from the cursor, or whether state changes are reversible. For a transport command this is a modest but real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single six-word sentence that front-loads the action and the resource with zero filler. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, side-effect-only transport command with no output schema and no annotations, the description is essentially sufficient to invoke it correctly. It could add a word on interaction with get_play_state or the record/pause siblings, but nothing needed to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify, and it introduces no misleading parameter hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Start') and resource ('playback in REAPER'), so an agent immediately knows this triggers transport playback. It does not, however, explicitly distinguish itself from the closely related siblings stop, pause, and record, which is the remaining gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the verb 'start playback' suggests calling this when playback should begin. There is no statement of when not to use it (e.g. when already playing) and no routing to alternatives such as pause, stop, or record.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gridNo
swingNo
fieldsNo
channelNo
end_beatNo
strengthNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and delivers unusually well: it discloses that onsets snap to the project grid, that note lengths are preserved (start/end move together), and the out-of-bounds policy with `clamped` staying 0. It stops short of saying whether edits are in-place/destructive or what the returned payload contains beyond `out_of_bounds`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the operation, then the behavioral contract, then a clean Args block. Every sentence adds information; the grid-reference warning is appropriately prominent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, unannotated, no-output-schema mutation tool, the description explains the musical core but omits note selection scope (fields, channel, pitch range, beat range) and return behavior. An agent could invoke it but might not understand how to restrict which notes are affected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 12 parameters, so the description must compensate and does so only partially: grid, strength, and swing get excellent units, ranges, and interpolation semantics. The other nine parameters (track_index, item_index, fields, channel, pitch_low/high, start_beat, end_beat, return_notes) are entirely undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Quantize MIDI note onsets onto the grid') plus the two musical intents (tighten timing, add swing). It is clearly distinct from siblings like nudge_midi_notes, humanize_midi_notes, and stretch_midi_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage via 'tighten sloppy timing, add swing' and clarifies the grid reference (project bar/beat grid, not item offset), which is the key disambiguation for correct use. However, it never explicitly says when to prefer this over humanize/nudge/stretch siblings, or what prerequisites exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ramp_midi_note_velocitiesC

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
end_velocityYes
return_notesNo
start_velocityYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the interpolation rule (by onset, linear), chord handling, and clamping behavior. However, it does not state that this is a mutation of existing MIDI notes, does not explain the filtering scope that determines which notes are affected, and does not mention the return_notes parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core operation in the first sentence, followed by precise interpolation semantics and an Args section. It contains no filler. The only structural weakness is that the Args section covers just two of eleven parameters, but the prose itself is efficiently written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no annotations and no output schema, the description is incomplete. It never explains how the target set of notes is selected (track, item, pitch range, beat range, channel, fields), nor what the tool returns or whether it modifies the project in place. An agent would need the schema alone to call it correctly, which is exactly the gap the description was supposed to fill.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 11 parameters, so the description must compensate. It explains only start_velocity and end_velocity (2 of 11) and adds meaningful detail about clamping and onset interpretation. It leaves track_index, item_index, fields, channel, start_beat, end_beat, pitch_low, pitch_high, and return_notes entirely undocumented, including the filters that define the 'filtered set' referenced in the text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Apply a linear velocity ramp (crescendo / decrescendo) across MIDI notes.' An agent can immediately tell this is a velocity-shaping operation. It does not explicitly contrast itself with sibling velocity tools like scale_midi_note_velocities or humanize_midi_notes, so it falls short of the full sibling-differentiation bar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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_midi_note_velocity, scale_midi_note_velocities, or humanize_midi_notes. The description explains the algorithm but never states the context or precondition that should select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recordB

Start recording in REAPER.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the entire burden, and it discloses only that recording starts. It does not say the session continues until 'stop' is called, what happens if no track is armed, whether this toggles or latches, or what error/return behavior occurs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is appropriately sized, though its brevity comes partly from under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-changing transport action with no annotations and no output schema, the description omits critical context: required preconditions (armed track), interaction with 'stop', and effect on project state. An agent cannot safely invoke it without that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document; the baseline of 4 applies. The description correctly introduces no parameter discussion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Start recording') and a clear target environment (REAPER), so the action is unambiguous. However, it does not distinguish itself from siblings like 'stop', 'pause', 'play', or 'arm_track', which an agent needs when picking among transport controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No mention of when to use this versus 'play'/'pause'/'stop', nor any prerequisite such as an armed track, an input assigned via 'set_track_input', or an active project. The agent must infer all triggering conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redoB

Redo the last undone action in REAPER.

Returns: Object with redo description.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape ('Object with redo description') but omits the important edge case of what happens when there is nothing to redo, and says nothing about scope (whether redo affects the whole project or a specific track/item context).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the return note. Nothing is padded, though the return line is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description must cover behavior and return values, and it only partially does so. It gives the return shape but leaves failure modes and the interaction with 'undo' unaddressed, which matters for a history-mutating operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description correctly implies an implicit 'last undone action' target rather than a caller-supplied one, which is the only semantic worth conveying.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (redo) and the exact resource/scope ('the last undone action in REAPER'), which is unambiguous. It does not reference the sibling 'undo' tool by name, so there is no explicit sibling differentiation, but the inverse pairing is self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus its counterpart ('undo'), nor any precondition such as requiring a prior undone action. Usage is only inferable 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.

remove_overlapping_midi_notesA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNotrim
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo
min_length_beatsNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description adds substantial context: what gets removed, how 'trim' vs 'delete' resolve conflicts, how exact-onset stacks collapse, and how short trims are handled. It also discloses the return structure and edge-case behavior, far exceeding what annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and conflict rules, then systematically covers modes, edge cases, arguments, and returns. Despite its length, every sentence carries useful information for a complex 11-parameter tool, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description compensates for the lack of an output schema by describing the return object and covers behavioral nuances well. However, it leaves several parameters undocumented, including required track_index and item_index, so the definition is not fully self-contained for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and 11 parameters exist, but the description documents only mode, min_length_beats, pitch_low, and pitch_high. Required parameters track_index and item_index are never explained, nor are channel, start_beat, end_beat, fields, or return_notes, leaving significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Clean up overlapping MIDI notes.' It clearly conveys that this tool resolves same-pitch note collisions, which is distinct from general MIDI editing siblings. However, it does not name or contrast with any sibling tool, so it lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description defines the condition under which notes conflict (same pitch, channel, and time overlap), which implies when the tool is applicable. It does not state when to use this tool instead of manually editing notes or using sibling tools, nor does it provide explicit exclusions beyond the conflict definition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_projectA
Destructive

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_timeNo
overwriteNo
start_timeNo
output_pathYes
tail_secondsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, and the description adds substantial context beyond that: format is inherited from REAPER's last render settings, a .wav extension forces WAV, and overwrite=True deletes the existing file first. This is exactly the extra detail annotations 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and the error/overwrite behavior follows logically. The middle rationale paragraph is slightly long and partially restates the overwrite parameter, but every element remains useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still summarizes the return ('render status and REAPER's computed output target(s)'), covers the overwrite hazard, and documents every parameter. Nothing needed to call this destructive render correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the whole burden and does so well, documenting all five parameters including non-obvious semantics: extension-driven format selection, None defaults mapping to project start/end, and tail_seconds for reverb tails.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Render the project's master mix to an audio file') with a clear scope that separates it from region-based rendering. An agent can identify the operation immediately 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the critical precondition for use: an existing target file raises an error unless overwrite=True, and it justifies why (unattended rendering, REAPER's prompt behavior). It does not name render_region as the alternative for non-master-mix rendering, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_regionA

NOT IMPLEMENTED. Use render_project with the region's start/end from get_regions.

Args: output_path: Full path for output file.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathYes
region_indexYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description discloses the critical behavioral trait that the tool is not implemented, preventing wasted calls. It doesn't elaborate on the error response, but the key limitation is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: the most important information ('NOT IMPLEMENTED') is front-loaded, and every sentence serves a purpose. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-implemented tool with no output schema, the description provides enough context: it declares unavailability and points to an alternative. The only gap is the lack of detail on region_index, but that is less critical given the tool's status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It describes output_path ('Full path for output file') but does not define region_index. The redirect to get_regions implies region_index relates to regions but does not state its format or meaning explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'NOT IMPLEMENTED' and redirects to render_project. While it doesn't explicitly say 'renders a region', the name plus the redirect make the tool's (non-)purpose clear. It distinguishes itself from siblings by naming render_project as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says not to use this tool and instead use render_project with the region's start/end from get_regions. This gives clear when-not-to-use and how-to-get-parameters guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_actionB

Run a REAPER action by command ID.

Args: action_id: REAPER action/command ID number.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_idYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says what the tool does but does not disclose that arbitrary REAPER actions may mutate project state, can be destructive, require a valid command ID, or affect undo history. Behavioral context is largely absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two brief sentences with a terse Args note. It front-loads the main action and then defines the parameter without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic action executor with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It omits return behavior, side effects, and safe-usage context needed for invoking an arbitrary REAPER action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the schema only types action_id as an integer. The description adds 'REAPER action/command ID number', clarifying meaning beyond the raw type, but it does not explain how to obtain the ID, valid ranges, or format. It provides some compensation but remains incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Run') and resource ('REAPER action') and adds the scope 'by command ID', which distinguishes it from sibling run_action_by_name. An agent can identify the tool's function 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by command ID' implies the alternative is run_action_by_name, but the description does not explicitly say when to use this tool versus that one or any prerequisites. Usage is implied rather than directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_action_by_nameA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_nameYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the NamedCommandLookup resolution step, that numeric strings bypass lookup, and the failure return shape ({ok:False, error:...}) without firing. It doesn't cover permissions, side effects, or whether the action is undoable, but for an action dispatcher the disclosed failure mode and resolution behaviour are substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by resolution rules, Args and Returns sections. Slight redundancy between the prose paragraph and the Args line, but overall tight and well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required string parameter, no output schema, and no annotations, the description supplies the key missing context: parameter format, resolution behaviour, and failure response. An explicit mutation/undo note would make it complete, but nothing essential is missing for a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the schema only names the parameter. The description compensates by explaining the two acceptable formats (named '_RS12345' / '_SWS_...' vs numeric '40297') and the resolution path for each - meaning well beyond the bare string schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Run a REAPER action by its named command id') and explicitly distinguishes itself from its sibling 'run_action(action_id)' for built-in numeric ids. The agent can tell the two apart 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to prefer run_action(action_id) for built-ins and describes the resolution behaviour for named vs numeric strings. This is a clear when-to-use / when-to-prefer-alternative rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_fx_presetC

Save the current FX settings as a preset.

Args: preset_name: Name for the new preset.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
preset_nameYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It does not say whether saving under an existing preset_name overwrites it (a destructive outcome), whether it fails or creates duplicates, or what the tool returns; for a write operation this is a significant omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core action stated first. The Args block adds little, but there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-parameter mutation tool with no annotations and no output schema, the description should at least explain the track/FX addressing and overwrite semantics. Neither is present, leaving the agent unable to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and two of the three required parameters (track_index, fx_index) are never mentioned in the description. The only documented parameter, preset_name, is restated tautologically ("Name for the new preset"), adding nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Save the current FX settings as a preset" gives a clear verb+resource and scope (current settings of an FX). It does not, however, differentiate itself from the sibling set_fx_preset/get_fx_presets, so an agent must infer the save-vs-apply split from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus set_fx_preset (apply a stored preset) or get_fx_presets, nor any prerequisites such as the FX needing to exist on the referenced track. The agent must guess at context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_projectB

Save the current REAPER project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description must carry full behavioral burden. 'Save' implies a write operation, but the description does not disclose whether it overwrites, prompts for a new path, requires an existing file, or what happens if unsaved changes exist. For a mutation tool with no annotations, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, short sentence that is front-loaded and contains no unnecessary information. It is appropriately sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should ideally mention what 'save' entails in terms of file operations or state changes. It is minimal but leaves important behavioral aspects unspecified, making it adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description correctly implies no parameters are needed, and the schema confirms an empty object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (save) and resource (the current REAPER project). It's clearly distinct from sibling tools like create_project, open_project, and render_project, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as create_project or open_project. The context of 'save the current project' is implied but no conditions or alternatives are provided.

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:[...]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNomultiply
pivotNo
ratioNo
valueNo
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses clamping to 1-127, the edge-case behavior of ratio 0.0 vs 1.0 in compress, the -1 sentinel meaning 'mean of matched notes', and reports back clamped/skipped/out_of_bounds/pivot_used. It stops short of stating side effects such as in-place mutation, undo implications, or selection requirements, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line summary followed by a structured Args/Returns block; each line carries information and there is no filler. The Args block is dense but every entry earns its place, so it stays on the efficient side of verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation tool with no annotations and no output schema, the description usefully inlines the return shape and the key mode semantics. The significant omission is the filtering parameters that determine which notes are matched, without which an agent cannot fully predict scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it documents the four semantically loaded parameters (mode, ratio, value, pivot) with ranges and formulas. It leaves the 9 remaining parameters (fields, channel, start_beat, end_beat, pitch_low, pitch_high, track_index, item_index, return_notes) entirely unexplained, so the filtering/scope semantics an agent needs are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (scale MIDI note velocities) and enumerates the three distinct strategies (multiply, set, compress), which cleanly distinguishes it from siblings like set_midi_note_velocity and ramp_midi_note_velocities. An agent can tell what this does 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The per-mode semantics implicitly route the agent (use 'set' for a fixed value, 'compress' to pull toward a pivot), which is real guidance for the mode parameter. However, it never states when to pick this tool over the adjacent siblings set_midi_note_velocity or ramp_midi_note_velocities, so alternative selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_all_itemsC

Select all media items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it delivers none. It does not say whether this replaces or extends the current selection, what scope 'all' covers, whether it is undoable, or what happens to previously selected tracks. For a state-mutating selection tool this is a serious gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no waste and the operation front-loaded. It is efficient, though its brevity is also the source of the missing scope detail rather than a model of well-structured specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should compensate, but it omits the one thing an agent needs: the scope of 'all' (entire project vs. active track/context) and the effect on the existing selection. Given the dense sibling set of selection tools, this leaves too much to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a parameterless tool is 4. The description correctly implies no arguments are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Select all') and resource ('media items'), so the basic operation is understandable. However, it gives no scope qualification and does not distinguish itself from closely related siblings such as select_all_tracks, unselect_all_items, or get_selected_items. It is adequate but leaves the agent guessing what 'all' spans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 select_all_tracks or set_time_selection, and no mention of prerequisites or selection-state conditions. Usage is only implied by the name and one-line description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_all_tracksC

Select all tracks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full behavioral burden. It does not disclose whether the selection replaces or adds to current selection, what gets selected (all tracks including master?), or any state changes. It only restates the obvious action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is front-loaded with the action, though extremely brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is too sparse for a selection tool. It fails to convey the effect on existing selections, whether all track types are included, or any subsequent actions needed. Basic context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter semantics are not applicable. Per the rubric, 0 params gives a baseline of 4; the description adds nothing but nothing is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Select all tracks' states a verb and resource, distinguishing it from unselect_all_tracks and select_track. However, it lacks any context about scope or effect, and with a title of null it provides only a minimum viable statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus select_track or unselect_all_tracks. The agent must infer that this is for bulk selection, but no explicit when/when-not 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.

select_comp_laneA
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
lane_indexYes
track_indexYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=true, and the description adds useful behavioral context: fixed-lane mode requirement and explicit error behavior. It does not fully explain the effect on other lanes or undo semantics, so it is not maximally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and well-structured: purpose first, prerequisite/error behavior second, and the lane_index argument last. Every sentence adds useful information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating lane-selection tool with annotations and no output schema, the definition covers the key operational prerequisite and error behavior. However, it omits the required track_index parameter meaning and does not describe the effect on other lanes beyond the word 'exclusively'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two required parameters, so the description must compensate. It documents lane_index well (0-based, fixed lane index) but omits track_index entirely, leaving half the parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: making a fixed lane play exclusively on a track in REAPER 7 lane-based comping. It clearly distinguishes this lane-level operation from take-level sibling tools such as set_active_take and crop_to_active_take.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear prerequisite: the track must be in fixed-lane mode, and it states the error behavior when that condition or the lane index is invalid. It does not name alternative tools or give broader when-not guidance, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_trackC

Select a track.

Args: exclusive: If True, deselect other tracks first.

ParametersJSON Schema
NameRequiredDescriptionDefault
exclusiveNo
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It does disclose that exclusive=True deselects other tracks first, which is useful, but says nothing about what selection state means, behavior on an invalid index, or whether multi-selection is otherwise possible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines with no waste, and the core action is front-loaded. The docstring-style 'Args:' block is slightly awkward but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain more about the selection semantics, return value, and error behavior. It covers only the exclusive flag, leaving significant gaps for a state-mutating selection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and track_index is left entirely unexplained in both schema and description. The description does add meaning to the exclusive flag beyond its type/default ('deselect other tracks first'), partially compensating, but the required parameter remains undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Select a track'), so an agent knows the operation. However it offers no differentiation from siblings like select_all_tracks or select_comp_lane, so the agent must infer that this acts on a single track.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus select_all_tracks, unselect_all_tracks, or the comp-lane selection tools. The only context given is the exclusive flag, not the scenario that calls for it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_active_takeC
Idempotent

Set the active take of a media item (which take plays).

Args:

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
take_indexYes
track_indexYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and idempotentHint=true, so the agent knows this is a repeatable mutation. The description adds only a brief gloss of 'active take' and does not disclose permissions, side effects, or what happens to inactive takes, adding minimal behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise, but the trailing 'Args:' is a structural defect that signals missing content and wastes tokens. The purpose is front-loaded, but the dangling marker undermines the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 undocumented parameters and no output schema, the description is far too thin. It states the core operation but omits parameter semantics and operational context needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three required integer parameters (track_index, item_index, take_index). The description ends with a dangling 'Args:' and provides no parameter meaning or indexing 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Set the active take of a media item (which take plays).' This distinguishes it from read-oriented siblings like get_active_take and get_takes, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_active_take or other take-management tools. No prerequisites or context are provided, leaving usage entirely inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_cursor_positionB

Set the edit cursor position.

Args: position: Position in seconds from project start.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions the operation and parameter unit but does not state side effects, whether it affects playback, permissions required, or return behavior. This is a significant gap for a mutating setter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: two short lines covering the operation and the sole parameter. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter setter with no output schema and no annotations, the description covers the operation and parameter unit adequately. However, it omits behavioral context such as side effects or interaction with playback, which the missing annotations would otherwise have to cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description compensates by defining the position parameter as 'Position in seconds from project start.' This adds necessary unit and origin semantics beyond the bare schema. It could be slightly richer with constraints or valid ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the edit cursor position.' This clearly identifies a mutation operation, but it does not explicitly differentiate itself from the sibling tool get_cursor_position, relying instead on the reader to infer the inverse relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, prerequisites, or context. It only states the operation and parameter meaning, leaving usage entirely implied.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
bandidxYes
bandtypeYes
fx_indexYes
paramtypeYes
track_indexYes
is_normalizedNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses important behavioral traits: gain is internally converted to ReaEQ's normalized curve while freq and Q are sent raw, and is_normalized=True writes a raw 0-1 value. It also notes that paramtype and bandidx are ignored for master gain. It does not cover error conditions or side effects, but the disclosure is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, followed by a short usage note and a structured Args list. It is appropriately sized for a 7-parameter tool and avoids fluff. There is minor redundancy between the default-value sentence and the value parameter entry, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, 6 required, no schema descriptions, no annotations, no output schema), the description covers most necessary information but misses track_index entirely. It also does not explain how to obtain valid fx_index or band indices, nor does it mention any error handling. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It describes six of seven parameters in detail, including enum-like values for bandtype and paramtype, but completely omits track_index, a required parameter. This leaves a significant gap despite otherwise helpful parameter-level information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Set a ReaEQ band parameter.' This clearly identifies the tool's function and distinguishes it from generic parameter setters. However, it does not explicitly differentiate from close siblings like set_eq_band_enabled or track_fx_set_param, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical guidance on how to pass values (real units by default, conversion behavior) but lacks any explicit when-to-use or when-not-to-use guidance relative to alternatives. It implies usage context through 'ReaEQ band parameter' but does not name alternative tools or conditions for choosing them.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandidxNo
enabledNo
bandtypeYes
fx_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It signals a mutation but omits permissions, side effects, return behavior, and required track context, leaving significant gaps for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with purpose and then a compact Args list; no sentence is wasted. However, the Args list is incomplete because track_index is missing, which slightly weakens the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with no annotations and no output schema, the definition is incomplete. It lacks prerequisites, return or side-effect details, alternative-tool guidance, and documentation for required track_index.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It usefully documents fx_index as 0-based, bandtype mappings, bandidx, and enabled, but completely omits required track_index, leaving one of five parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (enable or disable) and resource (ReaEQ band), distinguishing it from read-only get_eq_band_enabled and broader set_eq_band by focusing only on the enabled state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when/when-not guidance or alternative routing is provided; usage is only implied by the tool name. It does not mention prerequisites such as needing an existing ReaEQ instance or how it relates to set_eq_band and get_eq_band_enabled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_fx_presetD

Set the preset of an FX.

Args: preset_name: Preset name.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
preset_nameYes
track_indexYes

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether the write is reversible, whether the preset must already be saved, whether it overwrites current settings, or whether it requires an armed/enabled FX. For a mutation tool with zero annotation coverage this is a significant failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the 'Args: preset_name: Preset name.' block is pure tautology that consumes half the text without adding information. Front-loading is fine, yet no sentence earns its place beyond the opening clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A three-parameter mutation tool with no annotations, no output schema, and 0% parameter coverage requires a description that explains state changes, prerequisites, and indexing. This description supplies none of that, leaving the agent unable to call it correctly without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three required parameters, so the description must compensate and does not. The only documented parameter is preset_name, described tautologically as 'Preset name', while track_index and fx_index are left completely unexplained (indexing base, master-track conventions, FX slot ordering).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the preset of an FX'), so the core action is clear. However, it never disambiguates whether the FX belongs to a track, a take, or the master, and the sibling list contains both track_fx_* and take_fx_* families. An agent must guess the scope, which is the main thing a preset-setter description should nail down.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no routing to relatives such as get_fx_presets, get_fx_preset, or save_fx_preset. The agent gets no signal about prerequisites (does the preset have to exist? which track/FX indexes are valid?) or about the read/inspect alternatives that would normally precede this call.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It confirms a mutation of fade-in length but says nothing about overwriting an existing fade, interaction with crossfades, required edit state, undo/reversibility, or whether the item must be identified by index. This is a significant gap for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the Args block is terse with no filler. It is efficient, though the Args line merely restates the schema's 'length' property.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation tool with no annotations and no output schema, the definition leaves too much uncovered: two parameters unexplained and no behavioral notes on scope, overwrite semantics, or failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three required parameters. The description documents only 'length' (seconds), leaving track_index and item_index undefined — an agent cannot tell whether they are 0- or 1-based, or what entity they address. Only one third of the parameters receive any explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the fade-in length of a media item'), which clearly distinguishes it from sibling mutators like set_item_volume or set_item_mute. It does not, however, name or contrast with its obvious counterpart set_item_fade_out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus set_item_fade_out, set_item_length, or volume/mute setters, and no prerequisites such as whether the item must exist or be selected. The agent must infer usage entirely from the name.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not state whether the operation requires item selection/valid indices, whether it overwrites an existing fade, whether length is clamped to the item duration, or whether it is undoable. Only the units of one parameter are given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded, with the core action in the first sentence. The 'Args:' block is minimal, though it wastes a line documenting only one of three parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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, undocumented parameters, zero annotations, and no output schema, this description is far too thin. It omits targeting semantics, unit constraints, and any behavioral or failure context an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across three required parameters, and the description only annotates one of them ('length: Fade-out length in seconds'). The two index parameters (track_index, item_index) — the ones an agent is most likely to get wrong — are left completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the fade-out length of a media item'), which is unambiguous and implicitly distinguished from the sibling set_item_fade_in. It does not, however, note anything about which item is targeted or how that differs from related item-mutation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no alternatives named, and no prerequisites stated. An agent cannot tell from this text whether the target item must first be selected or whether the fade must fit inside the item's length.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_item_lengthC

Set the length of a media item.

Args: length: New length in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this affects playback length by stretching or by trimming, whether the item's source is preserved, whether it requires the item to be selected, or whether the operation is reversible (undoable). For a mutation tool with zero annotation coverage this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: the purpose sentence comes first, followed by one parameter note. No verbosity or repetition, though the docstring-style 'Args:' formatting is mildly noisy given only one parameter is described.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-parameter mutation tool with no annotations and no output schema, the description leaves too much unspecified: two of three parameters are unexplained, the mutation semantics (trim vs stretch) are absent, and there is no guidance on when to use this over sibling item tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema documents none of the three parameters. The description documents only 'length: New length in seconds' and says nothing about track_index or item_index, which the agent cannot infer are required track/item addressing identifiers. With 0% coverage it fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Set the length of a media item.' This distinguishes it from siblings like set_item_position, set_item_volume, set_item_fade_in/out. It does not explicitly differentiate from those siblings in the description, but the resource-plus-property naming makes the distinction reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no exclusions. The description never says whether the item must be a take, whether the length is capped by source media, or which is preferable versus split_item or set_item_position when trimming. The agent gets no routing help among the many set_item_* siblings.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
muteYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden but only discloses the mute/unmute direction for the 'mute' parameter. It does not describe side effects, reversibility, persistence, permissions, or any error behavior. While it clarifies the boolean toggle, this is minimal for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loads the core purpose in a single sentence. The 'Args:' section adds minimal, non-redundant detail for the mute parameter. It is efficient with no wasted words, though the formatting is slightly bare.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, no output schema, and 0% schema description coverage for three required parameters, the description is notably incomplete. It omits any explanation of 'track_index' and 'item_index' and does not address return values or side effects. An agent would need to infer much from context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains only the 'mute' parameter's meaning (True to mute, False to unmute), but provides no semantics for 'track_index' and 'item_index' beyond their names. The description partially fills the gap for one of three parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Mute or unmute' and the target resource 'a media item'. It implicitly distinguishes from the sibling 'set_track_mute' by specifying item-level scope, though it does not explicitly name or contrast with that sibling. The core 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.

Usage Guidelines2/5

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, nor any prerequisites or context about conditions. It simply states the action and parameter meaning, leaving the agent to infer usage entirely 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.

set_item_positionC

Set the position of a media item.

Args: position: New position in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says nothing about how the item is identified (track_index/item_index), whether position is absolute in the project timeline or relative, or what happens to overlapping items at the new location.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus an Args block; the core statement is front-loaded and there is no filler. The 'Args:' boilerplate is slightly redundant given a structured schema, but the entry is tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with zero annotations, no output schema, and two undocumented required parameters, the description is too thin. It lacks enough detail for an agent to invoke it correctly beyond the single 'position' argument.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three required parameters. The description documents only 'position' (in seconds) and leaves track_index and item_index completely unexplained, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb + resource: 'Set the position of a media item.' An agent can tell it moves an item's timeline placement, distinct from set_item_length or set_item_volume. However, it does not name or differentiate itself against those nearby siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as set_item_length, duplicate_item, or split_item, nor any prerequisites (e.g. which track/item must be selected). Usage is only implied by the name.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
volume_dbYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not whether volume_db is clamped to a range, whether it requires the item to be selected, whether it replaces or offsets existing automation/envelope volume, or whether changes are undoable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded with the operation, though the 'Args:' block restates the schema property name rather than adding information, which is mildly wasteful but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-parameter mutation tool with no annotations, no output schema, and 0% parameter coverage, the description is far too thin. It omits how the item is identified, valid dB ranges, and what the operation returns or affects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 3 required parameters. The description only clarifies units for one of them ('Volume in dB'), leaving track_index and item_index completely undefined as to how the target item is addressed, so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Set the volume of a media item.' An agent can tell it operates on an item rather than a track or a send, though the description never explicitly contrasts itself with set_track_volume or set_send_volume in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as set_track_volume or set_send_volume. The agent must infer from the name alone which sibling applies.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pitchNo
fieldsNo
channelNo
item_indexYes
note_indexYes
start_beatNo
track_indexYes
length_beatsNo
return_notesNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the whole burden and does so: it discloses in-place mutation semantics, the unstable PPQ-sorted index and the need to re-read after editing, clamping behavior for starts before the item start (counted in out_of_bounds rather than silently clamped), and that a bad index, empty edit, or out-of-range value writes nothing. That is a complete safety and outcome profile 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then the index-stability caveat, then per-argument and return details. Every sentence earns its place and there is no redundant restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, and the description compensates by enumerating the return shape ({ok, notes_changed, clamped, skipped, out_of_bounds, notes}) and the failure shape. It falls just short of complete because the 'fields' argument is undocumented and the tool has nine parameters at 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it adds real meaning: ranges (pitch 0-127, channel 0-15), length must be > 0 and resizes from the current start, start_beat is measured in beats from item start with length preserved, and note_index is REAPER's unstable PPQ-sorted index. However, the 'fields' parameter is never mentioned and track_index/item_index are left implicit, so one of nine parameters remains entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Edit one existing MIDI note in place') and enumerates the editable fields (pitch, start, length, channel). It explicitly delineates itself from set_midi_note_velocity, so an agent can separate this from sibling note-mutation tools without reading a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the partial-update contract ('Only the fields you pass change, and at least one is required') and routes the excluded concern, velocity, to set_midi_note_velocity. It does not contrast with other note editors such as transpose_midi_notes, nudge_midi_notes, or quantize_midi_notes, so an agent choosing between bulk and single-note edits gets partial guidance.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
velocityYes
item_indexYes
note_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the valid velocity range (1-127), which is genuinely useful, but says nothing about whether the target note must already exist, whether the change is undoable, or what happens on out-of-range input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and front-loads the purpose, but the 'Args:' block documents only one of four required parameters, so the brevity reflects under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-required-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description leaves the addressing scheme (track/item/note indices) entirely unexplained and gives no return or error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and three of the four parameters (track_index, item_index, note_index) are undocumented in both the schema and the description. The description compensates only for velocity by adding the 1-127 range, which the bare 'integer' schema type does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the velocity of a MIDI note'), so the core action is unambiguous. It does not differentiate from adjacent siblings such as set_midi_note, ramp_midi_note_velocities, or scale_midi_note_velocities, which all operate on the same note data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 set_midi_note (which likely also sets velocity) or the ramp/scale velocity tools. 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.

set_send_dest_channelsB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_chanYes
send_indexYes
track_indexYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure and largely does not meet it. It says nothing about whether this requires an existing send (create_send), what happens to previously assigned destination channels, whether the change is undoable, or what errors occur on an invalid channel pair or send index.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in a single sentence and the Args block is tight, with the sidechain example earning its place. The formatting is slightly redundant in restating parameter names, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutating tool with no annotations and no output schema, the description covers the sidechain use case and the dest_chan encoding but omits send_index semantics, preconditions (send must exist), and failure/undo behavior. Adequate for the primary path, incomplete for edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does well for two of three required parameters: track_index is clarified as 0-based source track and dest_chan gets a full mapping (0=1-2 main, 2=3-4 sidechain, 4=5-6). However, the required send_index is never explained in either the schema or the description, leaving a genuine gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Set the destination channels for a send') and a concrete domain context ('used for sidechain routing'), so the agent knows exactly what is mutated. It never names the closely related siblings set_send_source_channels or setup_sidechain_send, so sibling differentiation is left implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the parenthetical 'used for sidechain routing' plus 'For sidechain compression, use 2' tells the agent one scenario where this applies, but there is no explicit when/when-not guidance and no routing to the higher-level alternatives (setup_sidechain_send, setup_sidechain_compression, configure_reacomp_sidechain) that also appear in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_send_source_channelsC

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
src_chanYes
send_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this mutates project state, what permissions are required, whether the change is reversible, or what happens to existing send routing, leaving significant behavioral gaps for a setter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and structured with an Args section. It avoids unnecessary wording, though the Args list is incomplete because send_index is missing, which slightly weakens the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a setter tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It omits send_index entirely and provides no usage context, side-effect information, or return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description must compensate. It gives useful detail for track_index (0-based) and src_chan (-1=none, 0=stereo 1-2, 1024+n=mono from channel n), but it completely omits send_index, leaving one of three required parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it sets the source channels for a send. This is clear, but it does not explicitly distinguish itself from sibling tools such as set_send_dest_channels or setup_sidechain_send, so sibling differentiation is left to the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 set_send_dest_channels, create_send, or setup_sidechain_send. The description only defines the operation, not its context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_send_volumeC

Set the volume of a track send.

Args: track_index: Source track index (0-based). volume_db: Send volume in dB.

ParametersJSON Schema
NameRequiredDescriptionDefault
volume_dbYes
send_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It confirms a mutation occurs but says nothing about whether the change is undoable, what happens if send_index is out of range, valid dB ranges, or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the action, and the Args block is a clean per-parameter list with no filler. Its brevity is efficient rather than padded, though it under-delivers on content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with zero annotations, no output schema, and 0% schema description coverage, the description is not complete enough: the required send_index parameter is undocumented and no behavioral context is given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents track_index (0-based) and volume_db (in dB) but omits send_index entirely even though it is a required parameter, leaving the most ambiguous argument completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the volume of a track send'), which distinguishes it from the sibling set_track_volume and from create_send/delete_send. It does not, however, explicitly name the alternative tools or clarify how it relates to set_send_dest_channels/set_send_source_channels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g. that a send must already exist on the source track), and no mention of the sibling tools it competes with. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_tempoB

Set the project tempo.

Args: bpm: Tempo in beats per minute.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpmYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It says only that it sets the project tempo and accepts a BPM value, without disclosing side effects, valid ranges, whether the change is undoable, or how it interacts with playback or existing audio. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded: purpose first, then the parameter explanation. Every sentence earns its place. The 'Args:' block is slightly schema-redundant but provides unit clarification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter setter with no annotations and no output schema, the description gives just enough to invoke the tool correctly. It does not explain return values or side effects, but those are minimal for a straightforward tempo setter. Adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema gives only the parameter name 'bpm' and type number. The description adds meaning by clarifying that bpm is 'Tempo in beats per minute,' which is useful beyond the schema. However, it does not specify acceptable ranges, precision, or constraints, leaving some semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the project tempo.' This clearly distinguishes it from the sibling get_tempo, which retrieves rather than sets the tempo. No ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor any prerequisites or conditions. The usage is implied by the verb 'set', but the description does not state when to prefer this over get_tempo or other tempo-related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_time_selectionC

Set the time selection.

Args: start: Start time in seconds. end: End time in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether an existing selection is overwritten, whether loop points or regions are affected, or whether the selection is clamped to project bounds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Brief and front-loaded, with the action in the first line and parameter documentation following. The docstring-style 'Args:' block is functional, though slightly format-heavy for a two-sentence payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with no output schema, the essentials are present, but an agent still lacks the side effects (overwrite semantics, interaction with loop/region state) needed to invoke it reliably in a DAW context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does supply units for both parameters ('time in seconds'), which the schema lacks. However, it gives no reference point for those seconds (project timeline, absolute vs. relative) and no constraints or ordering rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the time selection') that an agent can distinguish from siblings like get_time_selection and clear_time_selection. It does not explicitly differentiate itself from those siblings, but the name plus description is unambiguous about the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to call this versus clear_time_selection or get_time_selection, and no preconditions (e.g., whether a project/edit cursor context is required). The agent must infer usage entirely from the name.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
numeratorYes
denominatorYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it only restates the parameters. It does not say whether the change is project-wide, how it affects existing MIDI items or audio, whether it is reversible/undoable, or whether it requires a stopped transport.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one sentence, followed by two tight parameter lines. The examples are short and earn their place; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and only two fully documented parameters, the definition covers the mechanical call adequately but leaves the agent without any picture of side effects or return behavior. Adequate but with clear gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains numerator as 'Beats per measure' and denominator as 'Beat unit', each with a concrete 4/4 example. That adds real meaning beyond the bare integer types, though it omits valid ranges or edge cases.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the project time signature.' This is unambiguous and implicitly distinguished from the read counterpart get_time_signature in the sibling list, though the description never names or contrasts 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.

Usage Guidelines2/5

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_tempo or get_time_signature, nor any mention of prerequisites (e.g., transport state or scope of effect). Usage is only inferable from the verb 'Set'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_as_folderC

Set a track as a folder parent or child.

Args: folder_depth: 0=normal, 1=folder parent, -1=end of folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes
folder_depthYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the meaning of the folder_depth values, which is the core behavioral contract for this mutation, but it omits side effects such as how track ordering/nesting is restructured, whether adjacent tracks must already be contiguous, and whether other tracks are affected. Useful but incomplete for a hierarchy-mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: purpose first, then the parameter meaning. No filler sentences. The 'Args:' block is a slightly awkward format but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no annotations and no output schema, one of two required parameters completely undocumented, and an unresolved ambiguity between 'child' and the listed -1/'end of folder' value. An agent cannot reliably call this without guessing at track_index semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document both required params. It explains folder_depth (0/1/-1) but says nothing about track_index — not its indexing base, whether it's zero-based, or how it is resolved. Only half the parameters are covered, so it fails to fully compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: setting a track's folder role. However, the phrasing 'folder parent or child' is not cleanly matched by the enum-like values given (0=normal, 1=folder parent, -1=end of folder) – 'child' and 'normal' aren't obviously the same thing, so the intended semantics are slightly muddled. It is still far more informative than a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus alternatives, no prerequisites, and no mention of what happens to the surrounding track order. The only guidance is implied by the folder_depth values themselves.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_automation_modeC

Set the automation mode for a track.

Args: mode: 0=trim/read, 1=read, 2=touch, 3=write, 4=latch.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says this is a setting operation and lists mode values, but does not explain side effects, required track state (e.g., armed), reversibility, or permissions. This is minimal behavioral context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loads the core action in one sentence, followed by a compact parameter list. There is no wasted text, though the 'Args' formatting is raw and could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter setter with no output schema and no annotations, the description gives enough to call the tool correctly (mode values and the obvious track_index). However, it omits when to use the tool and what automation mode changes actually do, leaving contextual gaps that annotations would normally fill.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully documents the 'mode' parameter with an enum mapping (0=trim/read, 1=read, 2=touch, 3=write, 4=latch), which is very helpful. However, the 'track_index' parameter is left undocumented, so coverage is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the automation mode for a track.' This is clear and unambiguous. It does not explicitly differentiate from siblings, but no sibling tool overlaps with this automation-mode operation, so confusion is unlikely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor any prerequisites or context. It only lists parameter values, leaving the agent to infer usage 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_colorC

Set the color of a track.

Args: r: Red component (0-255). g: Green component (0-255). b: Blue component (0-255).

ParametersJSON Schema
NameRequiredDescriptionDefault
bYes
gYes
rYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a mutation ('Set') but does not disclose permissions, reversibility, what happens to existing color settings, or error behavior for an invalid track_index. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose and then briefly lists the RGB parameters. There is no wasted text; each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with zero annotation coverage and zero schema description coverage, the description should be more complete. It omits the required track_index parameter and provides no behavioral details such as return value, side effects, or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents the r, g, and b parameters with ranges (0-255), which is helpful. However, the required track_index parameter is not mentioned or explained anywhere, leaving one of four parameters without semantic meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the color of a track.' It distinguishes itself from sibling setters like set_track_name and set_track_volume by naming color. However, it does not explicitly differentiate itself from those siblings or mention the track_index parameter, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 exclusions. The only usage context is implied by the operation name and description.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
input_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and largely fails to. It does not say whether the track must exist or be armed, whether the change is immediate or persisted, what happens on an invalid index, or that this is a mutating operation. Only the index encoding 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines, front-loaded with the action and followed only by the one piece of non-obvious parameter detail. Nothing is padded, though the raw 'Args:' block is slightly less readable than inline prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the definition is minimally adequate: the action and the tricky parameter are covered, but prerequisites, error behavior, and the effect on the track's existing input routing are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate — and it does for the non-obvious parameter, spelling out the full index encoding (-1 = no input, 0+ = hardware, 4096+ = virtual MIDI), which an agent could not infer from an untyped integer. track_index is left undocumented, but its meaning is self-evident from the name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Set the record input for a track.' That is unambiguous and distinguishable from neighbors like set_track_volume or set_track_monitor. It does not, however, name or contrast with any sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The only implied usage cue is the input_index encoding, which hints at the hardware/virtual-MIDI distinction but never states the condition under which an agent should call this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_master_sendA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
track_indexYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and idempotentHint=true, confirming this is a safe, repeatable mutation. The description adds routing behavior (audio routes to parent folder or master when enabled) which is valuable context beyond annotations, though it doesn't cover error conditions or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose, then provides routing context and a usage example, followed by parameter explanation. It is efficient with no redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter mutation tool with no output schema, the description covers purpose, routing behavior, usage guidance, and parameter meaning. It lacks details on track_index format or potential errors, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by explaining the 'enabled' parameter: 'True to enable, False to disable.' For the 2-parameter tool, this covers the key semantic, though 'track_index' remains undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (enable/disable) and resource (master/parent send on a track) with clear scope. It distinguishes itself from siblings like create_send and set_send_volume by focusing on the track's master/parent send toggle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to disable the send: 'when a track should only output through its sends (e.g., routed exclusively to a bus).' This is clear usage context, though it doesn't name specific alternative tools.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
monitorYes
track_indexYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It implies a mutation but discloses nothing about required permissions, whether the change is reversible, whether it applies live during playback/recording, or what happens on an invalid track index.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines, front-loaded with the action and immediately followed by the mode mapping. Minor waste from the raw docstring 'Args:' formatting, but no verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no annotations and no output schema, the mode semantics are adequately covered, but the description omits what track_index addresses (index vs. selected track), error behavior, and any note on applying it during playback.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the monitor parameter has no enum in the schema, so the description's value mapping (0=off, 1=normal, 2=not when playing) is essential and cannot be obtained anywhere else. track_index is left unexplained, but its name makes the intent self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the monitor mode for a track'), so an agent can tell it apart from neighboring track setters like set_track_volume or set_track_mute by the resource it mutates. It does not explicitly name or contrast any sibling, but 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use context, prerequisites, or alternatives are given. The description never says when a track needs monitoring set, or how this interacts with record/arm or playback state, leaving the agent to infer usage entirely.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
muteYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It confirms this is a mutating toggle, but says nothing about idempotency, permission requirements, error behavior on an invalid track index, or return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action front-loaded, followed by the argument semantics. Minimal waste, though the 'Args:' block is boilerplate-style formatting rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It omits track_index meaning, error conditions, and any statement of effect on state beyond the obvious toggle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does clarify the semantic of 'mute' (True mutes, False unmutes), which the bare boolean schema does not, but 'track_index' is left entirely unexplained (origin, ordering, validity) in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Set the mute state of a track'), which is clearly distinguishable from the sibling set_item_mute (item rather than track) and from set_track_solo. It does not explicitly name siblings, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus set_item_mute, set_track_solo, or track_fx_set_enabled-style toggles. No preconditions (track must exist, track must be valid index) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_nameC

Set the name of a track.

Args: name: New name for the track.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states this is a mutation ('set') but omits any behavioral context: whether it requires track selection, whether the change is undoable, how to identify the track, or what happens on invalid index. Significant gaps for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, only two sentences. Well front-loaded with the main purpose. The Args section is minimal but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It should explain how track_index is used and any prerequisites, but provides nothing beyond the basic purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The description names 'name' but provides no semantics for 'track_index' (e.g., 0-based vs 1-based, what it refers to). It does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'Set the name of a track.' Distinguishes itself from sibling set_track_* tools by stating the specific attribute (name) being modified, though it does not explicitly reference siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., get_track to verify, or other set_track_* tools). The description provides only what the tool does, not when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_panC

Set the pan position of a track.

Args: pan: Pan position from -1.0 (full left) to 1.0 (full right). 0 = center.

ParametersJSON Schema
NameRequiredDescriptionDefault
panYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the valid input range, but says nothing about whether the change is persistent, whether it is undoable, whether the track must be selected or armed first, or what happens on out-of-range values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded: the operation comes first, then the argument semantics. The Args block is slightly formulaic but wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter setter with no annotations and no output schema, the description is adequate on pan but incomplete on track_index and silent on side effects. It is minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully documents the pan parameter's range and center value, which is genuinely useful, but leaves track_index entirely unexplained, including whether indexing is 0- or 1-based, which is a real ambiguity for a positional setter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Set) and resource (pan position of a track), which is clear and unambiguous. It does not name or contrast itself with siblings like set_track_volume or set_track_phase, but the operation itself is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., that track_index must refer to an existing track), and no statement about required permissions or context. Usage has to be inferred entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_phaseC

Set the phase inversion of a track.

Args: invert: True to invert phase, False for normal.

ParametersJSON Schema
NameRequiredDescriptionDefault
invertYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, and it only explains the boolean flag. It does not say whether the change is undoable, whether the track must exist or be selected, what happens on an out-of-range track index, or whether phase inversion is destructive to audio (it is non-destructive in most DAWs, but that is never stated).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines with the action stated first and the argument documented immediately after; there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, an agent needs at least a hint about undo behavior, indexing convention, and error conditions. The description is only complete enough to guess the call signature, not to use the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain 'invert' clearly (True inverts phase, False for normal), which is the more obscure parameter, but 'track_index' is left entirely undefined — no indication of whether it is 0-based or 1-based or relative to selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Set the phase inversion of a track'), which is unambiguous and easily separated from sibling setters like set_track_volume, set_track_pan and set_track_mute. It only lacks an explicit note that no other tool covers phase inversion, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use context, no prerequisites, and no mention of alternatives or related tools (e.g., envelope/automation based polarity changes). The agent must infer everything about the appropriate situation 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_soloC

Set the solo state of a track.

Args: solo: True to solo, False to unsolo.

ParametersJSON Schema
NameRequiredDescriptionDefault
soloYes
track_indexYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It identifies a mutation but does not disclose side effects, solo exclusivity behavior, undo implications, permissions, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and free of filler. Every sentence serves the immediate purpose of stating the operation and clarifying the boolean argument.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation mutation tool with no output schema and 0% schema description coverage, the definition is incomplete. It does not explain track_index semantics or give any behavioral context needed to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and both parameters are required. The description explains the boolean solo parameter but omits track_index entirely, leaving half of the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: set the solo state of a track. It is clear enough to distinguish from most siblings, though it does not explicitly differentiate itself from adjacent track-state tools such as set_track_mute.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or related tools. The usage is only implied by the tool name and 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_volumeB

Set the volume of a track in decibels.

Args: volume_db: Volume in dB (0 = unity gain, -inf to +12 typical range).

ParametersJSON Schema
NameRequiredDescriptionDefault
volume_dbYes
track_indexYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the unit scale and practical range (0 = unity gain, -inf to +12), which is real behavioral context, but says nothing about whether this overwrites automation, whether it is undoable, or what it returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded single sentence followed by a short Args note; no filler. The 'Args:' scaffolding is slightly redundant for a two-parameter tool but harmless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations are absent and there is no output schema, so the bar is higher, but for a simple two-param setter the description plus schema is nearly sufficient. The main gap is the unexplained track_index and any statement of side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents volume_db well (unit, unity point, range) but leaves track_index entirely unexplained, covering only half the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: setting a track's volume in decibels. The phrase 'of a track' implicitly separates it from siblings like set_send_volume and set_item_volume, though no sibling is named outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus set_send_volume, set_item_volume, or envelope-based automation. Use is inferable from the name only; the description offers no context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_widthC

Set the stereo width of a track.

Args: width: Width value (0=mono, 1=stereo, 2=200% width).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It discloses the width value mapping but omits any mention of permissions, side effects, undo behavior, or what happens if track_index is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose. The Args section is terse but functional, though it could integrate parameter explanations more naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter setter with no output schema or annotations, the description covers the core action and width semantics but fails to explain track_index, leaving a gap that the schema cannot fill due to zero description coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It richly explains the width parameter (0=mono, 1=stereo, 2=200% width) but gives no meaning for track_index beyond the implicit name, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set the stereo width of a track.' It clearly distinguishes from siblings like set_track_volume and set_track_pan, though it does not explicitly name alternatives or exclusions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, prerequisites, or alternative tools are mentioned. The description only states what the tool does, leaving the agent to infer context from the tool name and siblings.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
target_trackYes
trigger_trackYes
send_volume_dbNo
compressor_fx_indexYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the two mutations performed (creating a send and configuring ReaComp) plus the volume default, but says nothing about idempotency, reversibility, failure modes if no ReaComp exists at the given index, or what the returned 'complete setup info' actually contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line capability statement, then Args/Returns/Example. The Returns line ('Object with complete setup info') is vague filler, but the rest earns its space by documenting otherwise-undescribed parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with no annotations and no output schema, the description covers purpose, parameter meaning, and a worked example well. It is only thin on failure/edge behavior and return shape, which are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema carries no descriptions, so the description must compensate — and it does, explaining the role of each of the four parameters (trigger vs. target track, ReaComp FX index, send volume in dB with default) and grounding them in the example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('creates send and configures compressor') and explicitly positions itself as the 'all-in-one function' for sidechain compression, which cleanly distinguishes it from the granular siblings create_send, set_send_volume, setup_sidechain_send, and 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'all-in-one' framing and the concrete kick-triggered-bass example convey when this composite tool is the right pick over the atomic siblings. It does not, however, explicitly say when *not* to use it or name the alternatives it replaces.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
src_trackYes
volume_dbNo
dest_trackYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the non-obvious routing behavior (channels 3-4) and the return shape (send_index + routing info), but omits idempotency, whether an existing send is modified, error conditions for invalid track indices, and whether the destination FX must be present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, followed by routing detail and a well-formatted Args/Returns block. No redundant sentences and each part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param mutation tool with no annotations and no output schema, the description covers purpose, routing semantics, parameter meaning, and return shape. It lacks only edge-case/error behavior and sibling differentiation, which leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents all three parameters with semantic meaning (src_track as trigger, dest_track as compressor host, volume_db as dB with default 0dB) and gives concrete examples, which is meaningful added value; but it doesn't clarify units beyond dB, valid ranges, or the track index basis.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a sidechain send from one track to another track's FX sidechain input') and explains the routing consequence (channels 3-4). It stands apart from generic siblings like create_send by naming the sidechain target, though it doesn't explicitly distinguish itself from configure_reacomp_sidechain or 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('standard sidechain input for compressors like ReaComp') and the Args examples hint at the typical kick-to-bass scenario, but there is no explicit when-to-use versus create_send/configure_reacomp_sidechain guidance or any stated prerequisite that the destination FX must exist.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNomajor
rootYes
fieldsNo
channelNo
end_beatNo
directionNonearest
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well for the core transform: in-scale notes untouched, off-scale notes move to nearest in-scale pitch, tie-breaking toward the middle, and skipped notes staying put and being counted. It omits scope/permission details (how track_index/item_index bound the edit, whether the operation is undoable), which keeps 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose statement, then behavior, then a labeled Args section, then Returns. Every sentence is load-bearing and there is no filler despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with zero annotation coverage and no output schema, the description should explain the selection/scope parameters it depends on. It instead documents only root, mode, and direction, leaving the majority of the surface unexplained, so it is adequate for the musical semantics but incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it richly documents root (0-11 mapping), mode (named scales, aliases, and custom interval-list format), and direction ('nearest'/'up'/'down' with fallback semantics). But nine parameters -- including the required track_index and item_index, plus fields, channel, pitch_low/high, start_beat/end_beat, and return_notes -- are entirely undescribed in both schema and description, leaving critical invocation details to guesswork.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource+scope: snapping off-key MIDI notes onto a scale, with parenthetical use cases. It is clearly distinguishable from siblings like transpose_midi_notes, quantize_midi_notes, and humanize_midi_notes, which change timing or pitch independent of a key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Two motivating scenarios are given ('fix a wrong note', 'force a part into a key'), which implies when to reach for it. However, it never contrasts the tool with adjacent options such as transpose_midi_notes or quantize_midi_notes, and states no prerequisites, so the agent must infer the choice.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes
item_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It notes a return object with info about both resulting items, but omits whether the operation is undoable, what happens to the original item, required permissions, or failure conditions for an inherently mutating edit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is short and front-loaded, with the core operation stated first and parameter/return notes following. The Args/Returns formatting is efficient, though the brevity contributes to the documentation gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description is too thin. Since no output schema exists, it need not detail the return, but it should at least define the item-targeting parameters and state the effect on the source item.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains only 'position' (seconds, absolute project time); track_index and item_index are left completely undocumented in both the schema and the description, leaving two of three parameters semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Split') and resource ('a media item') at a given position, which is unambiguous. No sibling tool performs a split, so differentiation is implicit, but it does not explicitly position itself against related item tools like 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.

Usage Guidelines2/5

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 alternatives, nor any prerequisites. It never clarifies that track_index and item_index identify the target item, so an agent must infer the usage context entirely from the 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose state after stopping (e.g., playhead remains, project state) or contrast with pausing, which is critical for a playback control tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence, front-loaded, no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, output schema, or annotations, the description is minimal. It lacks behavioral context such as whether stopping resets play position or how it differs from 'pause', leaving the agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. No parameter semantics to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Stop') and resource ('playback in REAPER'), distinguishing it from siblings like 'pause' and 'play'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when playback should be stopped, but does not explicitly compare with alternatives like 'pause' or specify 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
factorYes
fieldsNo
channelNo
end_beatNo
pitch_lowNo
item_indexYes
pitch_highNo
pivot_beatNo
start_beatNo
track_indexYes
return_notesNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers rich behavioral detail: the rigid-unit scaling mechanic, pivot behavior, edge-case handling for notes past the item end and before the item start, and the out_of_bounds/clamped counting semantics. This is exactly the kind of non-obvious behavior an agent needs to invoke correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and examples, then a dense but purposeful paragraph on mechanics, then the Args section. Slightly verbose in the edge-case explanation but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the critical non-obvious behavior (pivot mechanics, boundary handling, counting). It falls short only on the un-narrated upper/mid note-selection parameters, but the core contract is complete enough to call safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does for the two most semantically loaded params: factor (ratio direction and magnitude) and pivot_beat (definition, negative allowed, None default). The other nine parameters (track_index, item_index, fields, channel, start_beat, end_beat, pitch_low, pitch_high, return_notes) are left entirely undocumented, which is a real gap but the hardest ones are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (stretch/compress) and resource (MIDI timing) with concrete examples (half-time, double-time, any ratio). Clearly distinct from siblings like nudge_midi_notes or quantize_midi_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (changing MIDI timing) but does not name alternatives such as nudge_midi_notes or set_tempo, nor does it say when NOT to use it. Usage is only inferable from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strum_midi_notesB

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
channelNo
end_beatNo
directionNoup
pitch_lowNo
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo
spread_beatsYes
chord_window_beatsNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does disclose one important behavioral trait: only onsets move while note lengths are preserved. It omits whether this mutates in place, whether it operates on selected notes or all notes in the indexed item, whether it is undoable, and what return_notes (default true) yields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose statement, then the key behavioral constraint, then a compact Args block. Every sentence earns its place and there is no repetition of the name or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with zero annotation coverage, no output schema and no schema descriptions, the description leaves major gaps: the meaning of track_index/item_index and the beat/pitch selectors is never stated, and there is no indication of scope (selection vs. whole item) or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 12 parameters, so the description is the only source of parameter meaning. It documents three well (spread_beats range, direction values that the schema does not enumerate, chord_window grouping tolerance) but leaves nine parameters — track_index, item_index, start_beat/end_beat, pitch_low/pitch_high, channel, fields, return_notes — completely unexplained, so an agent cannot tell which item or note set is targeted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: stagger onsets of simultaneous notes so chords roll out. This is unambiguous and clearly distinct in effect from siblings like quantize_midi_notes or humanize_midi_notes, though it never explicitly says how it differs from them. An agent knows what it does but must infer when it beats the alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mechanics imply usage (0 spread_beats = no-op, chord_window controls grouping), and the direction values are explained, which helps an agent configure it. But there is no explicit when-to-use / when-not-to-use guidance and no reference to the closely related humanize/quantize/stretch siblings that also reshape note timing.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_nameYes
item_indexYes
take_indexYes
track_indexYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds useful behavior beyond that: it documents the return index and the -1 failure case, plus the exact-name requirement, but it does not describe permissions, undo behavior, or side effects on the take.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and uses structured Args/Returns sections. The content is useful and mostly tight, though the multi-line formatting is slightly heavy for a short tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four required parameters, no schema descriptions, and no output schema, the description should explain how to target the take. It omits the meaning of track_index, item_index, and take_index, and provides no usage exclusions, though it does document the return and failure value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It documents fx_name with examples and exact-name guidance, but track_index, item_index, and take_index are not explained at all, leaving three of four required parameters semantically empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: add an FX plugin to a take by name. The take-scoped wording distinguishes it from the sibling track_fx_add_by_name, so an agent can tell the target level 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it by naming the operation and target, but it gives no explicit when-to-use guidance versus track_fx_add_by_name or other FX insertion tools. The only usage instruction is about the fx_name format.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_fx_deleteC
Destructive

Remove an FX plugin from a take.

Args:

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates and destroys. The description adds nothing beyond that: it does not say whether the removal is undoable, whether indices shift for subsequent plugins after removal, or whether the take must be active. For a destructive operation this is thin even against the lower annotation-backed bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is tight and front-loaded, which is good. However, the trailing 'Args:' line with no content is dead weight and signals an incomplete definition, costing structure points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 must carry the burden, and it does not: for a destructive four-index operation with zero schema descriptions and no return-value or side-effect information, an agent cannot confidently construct the call or predict the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides no parameter information at all – it ends at a dangling 'Args:' header with nothing after it. The four index parameters (track_index, item_index, take_index, fx_index) are not explained: their hierarchy, whether indices are zero-based, or whether take_index is relative to the item, all remain unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (remove) and resource (FX plugin) with scope qualifier 'from a take', which implicitly distinguishes it from the sibling track_fx_delete that operates at track level. It stops short of naming that sibling or making the distinction explicit, but an agent can identify the operation 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g. does the take need to be the active take?), and no reference to alternatives such as track_fx_delete or take_fx_get_list for enumerating existing plugins. The agent must infer all routing decisions 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.

take_fx_get_countB
Read-only

Get the number of FX plugins on a take.

Returns: Object with 'ret' field containing the FX count.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
take_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description 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.

Purpose4/5

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.

Usage Guidelines2/5

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_enabledB
Read-only

Get the enabled (not bypassed) state of an FX plugin on a take.

Args:

Returns: Object with 'ret' field (boolean).

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_listB
Read-only

Get a list of all FX plugins on a take.

Returns: Object with 'fx' array, each entry having index, name, and enabled state.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_indexYes
take_indexYes
track_indexYes

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_nameC
Read-only

Get the name of an FX plugin on a take.

Args:

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
track_indexYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_paramsC
Read-only

Get the number of parameters for an FX plugin on a take.

Args:

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
track_indexYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_paramC
Read-only

Get a parameter value on a take's FX plugin.

Args:

Returns: Object with 'value', 'min', and 'max' for the parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
param_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_nameC
Read-only

Get the name of a parameter on a take's FX plugin.

Args:

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
item_indexYes
take_indexYes
param_indexYes
track_indexYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_enabledC
Idempotent

Enable or bypass an FX plugin on a take.

Args: enabled: True to enable, False to bypass.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
fx_indexYes
item_indexYes
take_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=true, so the safety and idempotency profile is covered. The description adds that the boolean parameter enables or bypasses the plugin, which clarifies the mutation behavior, but does not disclose side effects, permissions, or what happens to unrelated plugin state. With annotations carrying much of the burden, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the main purpose in the first sentence. The 'Args:' block is minimal and directly relevant. It is appropriately concise for the provided text, though the overall brevity could be seen as under-specification elsewhere rather than a structural fault here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 required parameters, 0% schema description coverage, no output schema, and annotations covering only safety/idempotency, the description is incomplete. It omits what the four index parameters refer to and does not describe indexing context or return behavior. An agent would need to infer how to locate the take and FX plugin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all parameters. It documents only the 'enabled' parameter ('True to enable, False to bypass'), leaving track_index, item_index, take_index, and fx_index entirely undocumented in both schema and description. This is a significant gap for a 5-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Enable or bypass an FX plugin on a take.' This distinguishes it from track_fx_set_enabled by specifying 'on a take,' and from take_fx_get_enabled by specifying the set action. However, it does not explicitly name or differentiate from sibling alternatives, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use guidance, prerequisites, or alternatives. It does not mention when to use this instead of take_fx_get_enabled, track_fx_set_enabled, or other take FX tools. Usage is only implied by the function name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_fx_set_paramB
Idempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
fx_indexYes
item_indexYes
take_indexYes
param_indexYes
track_indexYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=true, so the write-but-repeatable nature is covered structurally. The description adds genuinely new context beyond that: the value is typically normalized 0–1 and range checks belong to take_fx_get_param. It does not say what happens on out-of-range values or whether indices are 0- or 1-based.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines, action first, parameter note second – front-loaded and free of filler. The Args block formatting is slightly informal but costs nothing in clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema and only two annotation hints, this is thin. It omits index conventions, expected failure modes (missing FX/param), and the effect of the change, leaving an agent to guess at everything except the value semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 required parameters, so the description carries the full burden. It explains only 'value' (normalized 0–1, min/max via the getter); the five index parameters (track/item/take/fx/param_index) are entirely unexplained, including indexing base and valid ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Set a parameter value on a take's FX plugin.' The phrase 'take's FX plugin' distinguishes it from the many track_fx_* siblings without naming them explicitly. Clear, but no 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use vs when-not guidance, but the description does route the agent to a prerequisite: 'check min/max via take_fx_get_param', which is a useful implied workflow. That is the only usage context offered, so it sits at 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.

toggle_repeatA

Toggle repeat/loop mode.

Returns: Object with new repeat state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses the return value (new repeat state), which matters since no output schema exists, but it does not cover permissions, scope (global vs project), or reversibility beyond the inherent nature of a toggle.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines with the action front-loaded and the return value noted. Nothing is padded or redundant for such a simple operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter toggle with no output schema, the description supplies both the action and the return shape, which is the essential information needed to invoke and interpret it. The sibling getter covers the read counterpart.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema confirms an empty object, so there is nothing for the description to clarify. Baseline 4 applies when there are no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (toggle) and resource (repeat/loop mode), so an agent immediately knows the operation. However, it does not differentiate from the sibling get_repeat_state, which handles the read side of the same state, leaving the agent to infer the distinction from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the 'toggle' verb — an agent can infer this flips the state rather than setting an explicit value. But there is no explicit guidance on when to use this versus get_repeat_state for reading, nor any prerequisites or conditions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_nameYes
positionNo
track_indexYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose return content (added FX plus its index) and the insertion-position default, which is real behavioral context. It is silent, though, on error behavior when the name does not match, undo/state effects, and whether the track must exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a single-sentence summary, then clearly separated Args and Returns blocks. The Args/Returns scaffolding is slightly heavier than needed for three parameters, but nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does cover the return shape, so that need is met. With no annotations and an undocumented track_index, however, an agent still lacks confirmation on failure modes and track targeting, leaving the definition adequate but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does for two of three params: fx_name gets concrete examples and an exact-match rule, and position gets 0-based indexing, the -1 default, and boundary semantics (0 = beginning). track_index is left undocumented in both schema and description, which is the only gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add an FX plugin to a track') and the 'by name' qualifier signals the identification method. The 'track' scope implicitly distinguishes it from the sibling take_fx_add_by_name, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers an in-context tip ('use the exact plugin name as it appears in REAPER's FX browser'), which is genuinely useful for invocation. However, it gives no guidance on when to prefer this over higher-level siblings like add_eq, add_compressor, or add_limiter, and no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_deleteC

Remove an FX plugin from a track.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Remove' implies a destructive mutation, but nothing states whether it is undoable, whether an invalid index errors or no-ops, or whether remaining FX indices shift after removal—a critical behavior for a tool keyed by fx_index.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the action and target are stated immediately. It is efficient, though efficiency here partially reflects under-specification rather than disciplined compression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, index-addressed mutation with no annotations, no output schema, and 0% parameter documentation, the description is too thin. It should at minimum address undoability and index-shifting behavior to let an agent call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about either parameter. It does not clarify 0- vs 1-based indexing, whether fx_index refers to the position in the plugin chain, or how deletion affects subsequent indices—all of which the schema leaves undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Remove an FX plugin') with the scope qualifier 'from a track', which cleanly separates it from the sibling take_fx_delete (which operates on takes rather than tracks). It does not name an alternative tool, but the resource scope alone lets an agent disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no preconditions, and no mention of alternatives such as track_fx_get_list to find the right fx_index first. The agent must infer all usage context from the name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_get_countB

Get the number of FX plugins on a track.

Returns: Object with 'ret' field containing count.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It correctly implies a safe read via 'Get' and discloses the return shape ('ret' field with the count), which is useful. However, it says nothing about error behavior for invalid track indices or how track_index relates to the project's track ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the return contract. No filler; the only minor cost is the labeled 'Returns:' block for a one-field result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial read-only getter with no output schema, the description covers the essential outcome. It is not fully complete because the lone required parameter's semantics and the failure mode for a bad index are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter track_index has no type-level description. The description adds nothing about whether the index is 0-based, which track list it indexes into, or what a valid range is, so the sole parameter is effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get the number of FX plugins on a track'), which is clearly distinct from siblings like track_fx_get_list (list contents) and get_track_count (track count). It stops short of naming those siblings to route the agent explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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_list, track_fx_get_num_params, or take_fx_get_count. The agent must infer usage purely 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_enabledC

Get the enabled state of an FX plugin.

Returns: Object with 'ret' field (boolean).

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden. It discloses the return shape ('ret' boolean), which is useful, but says nothing about read-only semantics beyond the implicit 'Get', out-of-range index behavior, or error conditions for a tool whose sole behavior is state inspection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded, with the return contract stated compactly. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with no output schema it does provide the return type, which covers part of the gap. But with no annotations and zero parameter documentation, it should at minimum clarify track-vs-take FX scope and index conventions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so both track_index and fx_index are documented nowhere. The description adds no meaning: no indication of 0-based vs 1-based indexing, valid ranges, or whether indices refer to visible or full plugin chains. It does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the enabled state of an FX plugin.' An agent can identify this as a read of FX bypass/enable state. However, it never says 'track' FX, and the sibling take_fx_get_enabled exists, so the description does not disambiguate which FX domain this operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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_set_enabled (the setter) or take_fx_get_enabled/take_fx_set_enabled. No prerequisites or context are given, only a statement of the return value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_get_listA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_indexYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and does reasonably well: it defines the return shape (fx array with index/name/enabled/offline plus fx_count), clarifies that 'enabled' is False when bypassed, and scopes the chain it reads. It does not state ordering guarantees or behavior on an invalid index, keeping it out of the top tier.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in one sentence, followed by a compact Returns block that earns its place because no output schema exists. No filler, though the return detail is slightly dense in a single run-on sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema and no annotations, the description must supply the return contract and safety profile; it does describe the returned fields and scoping well. The only real gap is the undocumented track_index parameter and lack of any error/edge-case note.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter (track_index) is never described in the description. The phrase 'on a track' hints that track_index selects the target track, but no format, indexing base, or error behavior is given, so the description only marginally compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get list of all FX plugins on a track') and adds a scope qualifier distinguishing it from input/record and master monitoring FX. It does not name the obvious sibling (take_fx_get_list) or otherwise explicitly differentiate beyond the scope note, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: the scoping note ('Normal FX chain only') tells the agent what this covers, which implicitly excludes record/input FX. But there is no explicit when-to-use guidance, no mention of track_fx_get_count or take_fx_get_list as alternatives, and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_get_nameC

Get the name of an FX plugin.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. 'Get' implies a read operation, but the description says nothing about permissions, error behavior, valid index ranges, or what happens with invalid indices. The disclosure 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or redundancy. Every word contributes to the stated purpose, and there is no structural issue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter getter with no output schema and no annotations, the description is too sparse. It does not explain the required indices, the return value (presumably a name string), or how this tool relates to the many sibling FX tools, making it incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and both required parameters (track_index and fx_index) are undocumented in the schema. The description does not mention either parameter or explain their meaning, indexing base, or relationship, leaving the agent with no semantic guidance beyond the parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb and resource: 'Get the name of an FX plugin.' However, it does not distinguish between track FX and take FX, despite the sibling tool take_fx_get_name. An agent must rely on the tool name to infer 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.

Usage Guidelines2/5

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 track_fx_get_list, track_fx_get_param_name, or take_fx_get_name. No prerequisites, exclusions, or contextual triggers are provided.

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_paramsC

Get the number of parameters for an FX plugin.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It does not state that the operation is read-only, does not mention any permissions, side effects, or return format, and provides no behavioral traits beyond the basic action. This is a minimal disclosure for a getter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous text. It is appropriately concise, though it could have included a brief parameter hint without becoming verbose, so it is not perfectly sized for the tool's needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It does not explain what the return value looks like, what track_index and fx_index refer to, or how it differs from take_fx_get_num_params. An agent would need substantial external knowledge to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for two required parameters (track_index and fx_index), and the description provides no explanation of what these parameters mean or how to supply them. An agent must infer everything from parameter names alone, which is inadequate given the complete lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('number of parameters for an FX plugin'), which clearly conveys the tool's purpose. However, it does not explicitly distinguish itself from the sibling take_fx_get_num_params or clarify that this is for track FX rather than take FX, so it falls short of the 5-level sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 take_fx_get_num_params or other track_fx_* tools. The description simply states what it does, leaving context and prerequisites entirely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_get_paramB

Get a specific parameter value of an FX plugin.

Returns: Object with value, min, max for the parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
track_indexYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It does add genuinely useful behavior not available elsewhere by stating the return shape (value, min, max), which compensates for the missing output schema, but it omits index validity/error behavior and any confirmation that this is a pure read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the return shape; nothing is wasted. It is arguably under-specified rather than padded, but as written it is tight and well ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with no output schema, the description supplies the one thing structured fields don't - the return object shape. However it leaves unresolved the track-vs-take FX distinction, index semantics, and the typical call sequence (get count, get name, then get param), so it is only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and all three required parameters (track_index, fx_index, param_index) are bare integers with no descriptions. The description only implies that 'param_index' selects 'a specific parameter' and says nothing about index bases, zero- vs one-based indexing, or the meaning of track_index/fx_index, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Get a specific parameter value of an FX plugin') and the tool name confirms scope. It is clear what it does, but it never distinguishes itself from the near-identical sibling take_fx_get_param (take vs track FX) or from track_fx_get_param_name/num_params, so an agent must infer the routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g. a valid track/fx must exist), and no pointer to alternatives such as track_fx_get_num_params to iterate, track_fx_get_param_name to identify a parameter, or take_fx_get_param for take-level FX. The agent gets no help choosing among ~150 siblings.

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_nameC

Get the name of an FX parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
param_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a safe read, but nothing is said about out-of-range index handling, error behavior, or the return type (a string name). For a zero-annotation tool this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is efficient, though its brevity contributes to the under-specification noted elsewhere rather than being ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and three undocumented parameters, the description is too thin for an agent to call the tool confidently. It should at least clarify index conventions and the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 3 parameters have 0% schema description coverage, and the description says nothing to compensate. Track/fx/param index semantics (0-based? bounds?) must be guessed entirely from parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Get) and resource (the name of an FX parameter), making the operation clear. It implicitly distinguishes itself from track_fx_get_param (which returns a value) and take_fx_get_param_name (take scope) via its name, but does not explicitly articulate those distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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_get_param or take_fx_get_param_name, nor any prerequisites. The agent must 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.

track_fx_moveB
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fx_indexYes
track_indexYes
new_positionYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and idempotentHint=true. The description adds real behavioral context beyond them: the move is constrained to a single track's chain, indices are 0-based, and position 0 means the beginning. It does not say what happens to intervening plugins or out-of-range indices, so it is additive but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the Args block is short and readable. Listing fx_index/new_position in prose is mildly redundant with the schema keys but justified by the 0% coverage, so the text largely earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations about returns, the description covers the core semantics well enough to call the tool, but omits track_index and says nothing about error/out-of-range behavior or return value. Adequate for a simple move, but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It usefully documents fx_index (current, 0-based) and new_position (0-based, 0 = beginning of chain), but track_index is a required parameter that is never mentioned anywhere, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Move an FX plugin') with the scope narrowed to 'within the same track's FX chain', which distinguishes it from chain-mutating siblings like track_fx_add_by_name and track_fx_delete. It does not name a sibling explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no reference to alternatives such as track_fx_delete plus re-add for cross-track moves. The scope note ('same track's FX chain') implicitly rules out cross-track reordering, but that is inference, not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_fx_set_enabledC

Enable or disable an FX plugin.

Args: enabled: True to enable, False to bypass.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
fx_indexYes
track_indexYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It clarifies that False means bypass rather than remove, which is a useful nuance, but says nothing about permissions, reversibility, or interaction with other FX state. For a state-mutating tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely tight: one sentence for the action plus one clarifying line for the boolean flag. Front-loaded and no wasted words, though the Args block only covers one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three required params, 0% schema coverage, no annotations and no output schema, the description should explain the index parameters and any state implications. It covers only the boolean, so an agent still lacks enough context to call it reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all three undocumented parameters. It explains only 'enabled' (True enable / False bypass) and gives no meaning for track_index or fx_index, leaving two of three parameters opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('enable or disable an FX plugin'), which is clear enough to understand the operation. However, it does not distinguish this from the sibling 'take_fx_set_enabled' or 'track_fx_get_enabled' — it never states that the FX is on a track (as the name implies) rather than a take, leaving scope ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the closely named siblings (take_fx_set_enabled, track_fx_get_enabled) and no prerequisites such as needing a valid track/fx index. Usage must be inferred entirely from the name.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
fx_indexYes
param_indexYes
track_indexYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose permissions, persistence, undo behavior, or side effects of changing a plugin parameter. The only behavioral hint is that the value is typically normalized and min/max should be checked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose. The 'Args' section is compact and relevant, though it could be slightly clearer about which parameters it covers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool requiring four parameters with no schema descriptions, no annotations, and no output schema, the description is significantly incomplete. It omits documentation for three required parameters and gives no usage context or return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and four parameters are required. The description only explains the 'value' parameter (new value, often normalized 0-1, check min/max). The roles of track_index, fx_index, and param_index are completely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set a parameter value on an FX plugin.' This is clear, but it could also describe the sibling take_fx_set_param, so there is no explicit differentiation between track FX and take FX.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings such as track_fx_get_param or take_fx_set_param. It only hints at checking min/max for the value, which is a parameter constraint rather than usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transpose_midi_notesC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
channelNo
end_beatNo
pitch_lowNo
semitonesYes
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that out-of-bounds notes keep their original pitch and are counted in `skipped`, and it names the return fields. But it says nothing about required track/item context, permissions, undo behavior, or what `clamped` and `out_of_bounds` mean in relation to `skipped`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: purpose first, then a key edge case, then Args and Returns. It is not bloated, though the Args section is so sparse that it reads as incomplete rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation-style tool with no annotations and no output schema, the description is substantially incomplete. It covers the main parameter and return shape but omits most of the parameters an agent needs to call it correctly, including required track_index and item_index.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains only `semitones` (signed shift, 0 = no-op) and leaves nine parameters—track_index, item_index, channel, pitch_low, pitch_high, start_beat, end_beat, fields, return_notes—without any semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Transpose') and resource ('MIDI notes') and clarifies the unit of shift (semitones, 12 = octave). It does not name or differentiate itself from sibling MIDI-note tools such as snap_midi_notes_to_scale or nudge_midi_notes, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives like set_midi_note, nudge_midi_notes, or snap_midi_notes_to_scale. The description only defines the transform, not the context or prerequisites for invoking it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undoB

Undo the last action in REAPER.

Returns: Object with undo description.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says a return object exists but doesn't state whether undo is itself reversible (i.e., that 'redo' can reverse it), whether it fails or no-ops on empty history, or whether it is project-scoped. For a mutation tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: the action is stated in the first sentence, with the return shape in a compact second block. The 'Returns' line is slightly redundant given it just restates that an object is returned, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool this is close to adequate, but with no annotations and no output schema the description should at minimum say what the 'undo description' field contains and how the tool behaves when there is nothing to undo. It is minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies for a no-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and scope ('Undo the last action') plus the host application (REAPER). An agent can tell it apart from redo by name, but the description does not explicitly distinguish itself from the sibling 'redo' or 'get_undo_state'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus 'redo' or 'get_undo_state', and no mention of what happens when the undo history is empty. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unselect_all_itemsB

Unselect all media items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and falls short. It does not disclose scope (all tracks vs. active track, audio vs. MIDI items), whether the operation is reversible, whether it affects the time selection, or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and free of filler. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is degenerate (no params, no output schema), so minimal text is defensible, but the meaning of 'media items' and the scope of 'all' are ambiguous in a project with both audio and MIDI items and multiple tracks, leaving a genuine gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing for the schema or description to clarify. Baseline 4 applies; no parameter detail could be added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Unselect all media items'), which an agent can distinguish from the sibling select_all_items by polarity alone. It is clear, though it does not explicitly name its opposite/sibling to reinforce the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance whatsoever. The description never mentions alternatives such as select_all_items or: unselect_all_tracks, nor does it state any precondition for clearing a selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unselect_all_tracksC

Unselect all tracks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden and discloses nothing: it does not say that this only clears selection state (not deleting anything), whether it affects items or notes, or what happens afterward. For a state-mutating operation with zero annotation coverage, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the action is front-loaded. It is efficiently structured, though the brevity borders on under-specification rather than genuine economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is trivially simple (no parameters, no output schema), so the description covers the essential action. It nonetheless omits any clarification of the resulting state or how it relates to item-level selection, leaving an agent to infer the effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to document. Baseline 4 applies since the description cannot be faulted for omitting parameter detail that does not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The sentence names a clear verb ('Unselect') and resource ('all tracks'), so the operation is unambiguous. However, it is essentially the tool name restated verbatim and provides no additional scope or differentiation from siblings such as select_all_tracks or unselect_all_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no stated context for when to use this tool, no prerequisites (e.g., that a selection must exist first), and no mention of alternatives like unselect_all_items or select_track. The agent must infer all usage conditions 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.

zoom_to_projectA

Zoom the arrange view to show the entire project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a view-only change of the 'arrange view', which is useful context, but says nothing about whether it affects data, undo state, or has any side effects. For such a trivial view 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero waste, and the key scope qualifier ('entire project') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, zero-output view action, the description covers what an agent needs to select and call it. Only marginal value, such as confirming it is non-destructive or affecting only the view state, is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema baseline is 4. There is nothing to document and the description does not need to compensate for any parameter gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (zoom) and resource (arrange view) with an explicit scope (entire project). This inherently distinguishes it from the sibling zoom_to_selection, which targets a selection rather than the whole project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance, though the single-purpose nature and 'entire project' scope imply its usage. The obvious alternative, zoom_to_selection, is never named as such.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses almost nothing behavioral beyond the affected view. It does not say whether this mutates project data (it does not), what happens when no time selection exists, or whether the zoom is undoable — all relevant for a viewport operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler and no redundancy. The scope ('arrange view') is stated before the trigger ('time selection'), which is the right ordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema viewport tool the description covers the essentials of the call itself. The only meaningful gap is the unstated dependency on an existing time selection, which matters more here than for most tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No parameter-level information is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (zoom) and the exact target scope (the arrange view, to the time selection). An agent immediately knows what the tool does, but the description never acknowledges the obvious sibling zoom_to_project, so disambiguation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: nothing tells the agent to prefer this over zoom_to_project, nor what precondition must hold (a time selection existing) for this to do anything useful. The agent must infer the routing 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 176 tool updatesv1.7.3
    • First observedadd_compressor
    • First observedadd_envelope_point
    • First observedadd_eq
    • First observedadd_fx_envelope_point
    • First observedadd_limiter
    • First observedadd_marker
    • First observedadd_mastering_chain
    • First observedadd_midi_note
    • First observedadd_midi_notes_batch
    • First observedadd_parallel_compression
    • First observedadd_region
    • First observedarm_track
    • First observedarm_track_envelope
    • First observedclear_all_peak_indicators
    • First observedclear_envelope
    • First observedclear_fx_envelope
    • First observedclear_midi_item
    • First observedclear_time_selection
    • First observedconfigure_reacomp_sidechain
    • First observedcopy_selected_items
    • First observedcreate_bus
    • First observedcreate_midi_item
    • First observedcreate_project
    • First observedcreate_send
    • First observedcrop_to_active_take
    • First observedcut_selected_items
    • First observeddelete_envelope_point
    • First observeddelete_fx_envelope_point
    • First observeddelete_item
    • First observeddelete_marker
    • First observeddelete_midi_note
    • First observeddelete_region
    • First observeddelete_selected_items
    • First observeddelete_send
    • First observeddelete_take
    • First observeddelete_track
    • First observedduplicate_item
    • First observedexplode_takes
    • First observedfind_eq
    • First observedget_active_take
    • First observedget_all_tracks
    • First observedget_cursor_position
    • First observedget_envelope_point_count
    • First observedget_envelope_points
    • First observedget_eq_band_enabled
    • First observedget_eq_bands
    • First observedget_fx_envelope
    • First observedget_fx_envelope_points
    • First observedget_fx_preset
    • First observedget_fx_presets
    • First observedget_item_info
    • First observedget_markers
    • First observedget_master_track
    • First observedget_midi_item
    • First observedget_midi_notes
    • First observedget_play_position
    • First observedget_play_state
    • First observedget_project_length
    • First observedget_project_name
    • First observedget_project_path
    • First observedget_project_summary
    • First observedget_regions
    • First observedget_repeat_state
    • First observedget_selected_items
    • First observedget_selected_midi_notes
    • First observedget_selected_tracks
    • First observedget_takes
    • First observedget_tempo
    • First observedget_time_selection
    • First observedget_time_signature
    • First observedget_track
    • First observedget_track_count
    • First observedget_track_envelope
    • First observedget_track_fx_chunk
    • First observedget_track_items
    • First observedget_track_master_send
    • First observedget_track_num_sends
    • First observedget_track_peak
    • First observedget_track_peak_hold
    • First observedget_undo_state
    • First observedgo_to_marker
    • First observedgo_to_region
    • First observedhumanize_midi_notes
    • First observedinsert_audio_file
    • First observedinsert_track
    • First observedlegato_midi_notes
    • First observednudge_midi_notes
    • First observedopen_project
    • First observedpaste_items
    • First observedpause
    • First observedplay
    • First observedquantize_midi_notes
    • First observedramp_midi_note_velocities
    • First observedrecord
    • First observedredo
    • First observedremove_overlapping_midi_notes
    • First observedrender_project
    • First observedrender_region
    • First observedrun_action
    • First observedrun_action_by_name
    • First observedsave_fx_preset
    • First observedsave_project
    • First observedscale_midi_note_velocities
    • First observedselect_all_items
    • First observedselect_all_tracks
    • First observedselect_comp_lane
    • First observedselect_track
    • First observedset_active_take
    • First observedset_cursor_position
    • First observedset_eq_band
    • First observedset_eq_band_enabled
    • First observedset_fx_preset
    • First observedset_item_fade_in
    • First observedset_item_fade_out
    • First observedset_item_length
    • First observedset_item_mute
    • First observedset_item_position
    • First observedset_item_volume
    • First observedset_midi_note
    • First observedset_midi_note_velocity
    • First observedset_send_dest_channels
    • First observedset_send_source_channels
    • First observedset_send_volume
    • First observedset_tempo
    • First observedset_time_selection
    • First observedset_time_signature
    • First observedset_track_as_folder
    • First observedset_track_automation_mode
    • First observedset_track_color
    • First observedset_track_input
    • First observedset_track_master_send
    • First observedset_track_monitor
    • First observedset_track_mute
    • First observedset_track_name
    • First observedset_track_pan
    • First observedset_track_phase
    • First observedset_track_solo
    • First observedset_track_volume
    • First observedset_track_width
    • First observedsetup_sidechain_compression
    • First observedsetup_sidechain_send
    • First observedsnap_midi_notes_to_scale
    • First observedsplit_item
    • First observedstop
    • First observedstretch_midi_notes
    • First observedstrum_midi_notes
    • First observedtake_fx_add_by_name
    • First observedtake_fx_delete
    • First observedtake_fx_get_count
    • First observedtake_fx_get_enabled
    • First observedtake_fx_get_list
    • First observedtake_fx_get_name
    • First observedtake_fx_get_num_params
    • First observedtake_fx_get_param
    • First observedtake_fx_get_param_name
    • First observedtake_fx_set_enabled
    • First observedtake_fx_set_param
    • First observedtoggle_repeat
    • First observedtrack_fx_add_by_name
    • First observedtrack_fx_delete
    • First observedtrack_fx_get_count
    • First observedtrack_fx_get_enabled
    • First observedtrack_fx_get_list
    • First observedtrack_fx_get_name
    • First observedtrack_fx_get_num_params
    • First observedtrack_fx_get_param
    • First observedtrack_fx_get_param_name
    • First observedtrack_fx_move
    • First observedtrack_fx_set_enabled
    • First observedtrack_fx_set_param
    • First observedtranspose_midi_notes
    • First observedundo
    • First observedunselect_all_items
    • First observedunselect_all_tracks
    • First observedzoom_to_project
    • First observedzoom_to_selection

TDQS

C2.7/5.0

Scored across 176 tools

Disambiguation3/5

Most tools target distinct actions/resources, but overlapping convenience wrappers (add_eq vs track_fx_add_by_name, setup_sidechain_send vs setup_sidechain_compression) and a dead render_region tool create confusion. With 176 tools, high misselection risk exists even though descriptions are detailed.

Naming Consistency4/5

Almost all names use snake_case and a verb_noun/resource_verb pattern, with consistent families (track_fx_*, take_fx_*, midi_*). Minor deviations like get_track_num_sends vs track_fx_get_count and get_track_count keep it from perfect consistency.

Tool Count1/5

176 tools is an extreme over-expansion for any MCP server; each tool may be useful but the set is far beyond a well-scoped 3-15 tool surface.

Completeness4/5

The surface covers tracks, items, MIDI, FX, sends, automation, envelopes, project lifecycle, markers/regions, and rendering extensively. However, render_region is explicitly unimplemented and project save-as/close operations are absent, leaving minor dead ends.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Connects AI assistants to REAPER for music production, enabling full control over tracks, MIDI, mixing, mastering, and audio analysis through 153 tools across 24 modules.
    173
    66
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    This 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.
    40
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that enables AI assistants to control Ableton Live, providing 104 tools for music production including track, clip, device, and mixer control.
    156
    533 PyPI
    12
    MIT