creaper
creaper
Let Claude compose, arrange, mix and master in REAPER, with your own plugins, from a chat panel docked right inside it.
creaper connects Claude to your open REAPER project. You ask in plain language; Claude writes full-length songs in 264 genres, programs your synths, builds FX chains and routing, adds vocals, mixes and masters, and exports finished music and game sound effects. Claude can't hear, so creaper measures the actual audio (loudness, tuning, clarity, the spectrum) and checks its own work before calling it done.
"Make a 6-minute piano house track at 124 BPM with a proper DJ intro and outro."
"Reharmonize my chorus with tritone subs and tell me what each change does."
"Add a robot vocal singing the hook: 'we were never here'."
"The chorus feels muddy. Measure the mix from bar 33 to 49 and tell me why."
"Mix every track, then master it for streaming."
"Make 3:00 of tense laboratory music for my game in 7/8, ending so it crossfades cleanly into the next track."
"Design five variations of a hockey slap shot and export each as a trimmed, mono 24-bit WAV for my game."
Every change is a named undo step (creaper: add ReaComp to Vocal), so Ctrl+Z undoes
anything Claude did.
It works with Claude Desktop, Claude Code, and any other app that supports the Model Context Protocol. Each user signs in with their own Claude account; no API key needed.
What Claude can do
Area | Tools |
Read the project | Overview (tempo, time signature, markers, regions, tracks, selection), track details (items, FX, sends), FX parameters, installed plugins |
Compose | Create tracks with instruments, MIDI items and notes; chord parts from symbols ( |
Music theory | Scales and modes spelled correctly, chord naming, Roman-numeral and harmony analysis (of symbols or your MIDI), key detection, cadences, progression suggestions, reharmonization, four-part voice leading and a rule checker, modulation routes, rhythms (clave, Euclidean, polyrhythms) |
Plugins | Browse installed plugins by kind, category and developer; load instruments and effects by loose name; read and set parameters by value or by label, several at once; list and load presets; split multi-output instruments onto tracks |
Sound library | Save any plugin's current sound with a name and tags, browse, and recall it on any track in any project |
Edit MIDI | Quantize (grid, strength, swing), humanize, transpose, snap to a scale, set or ramp velocities, strum chords, legato, and motif development (diatonic transposition, inversion, retrograde, augmentation, harmony lines, sequences, negative harmony); on all notes, a pitch/time range, or what's selected in the MIDI editor |
Automate | Volume, pan and any plugin parameter: points, ramps (a filter sweep over the build) or LFOs (wobbles, tremolo), in real units; read and clear envelopes |
Edit clips | Move, trim, split, duplicate, fade, re-pitch, time-stretch and delete audio or MIDI items; import audio files |
Vocals | Uses the best source on your machine: chops real vocal samples into rhythmic, in-key chops; hands a melody and lyrics to singing synths (Synthesizer V, ACE Studio, VOCALOID, OpenUtau) as MIDI with the words on the notes; or sings lyrics itself as a talk box or vocoder from your computer's own voices |
Record | Audio interface inputs and MIDI devices; arm, monitor and set the record mode (input, resample the track's output, MIDI overdub/replace); record a bar range that stops by itself; pick, compare or explode takes. Claude warns you before REAPER asks which new files to keep, and waits while you answer |
Save & deliver | Save, save as, and snapshot copies; export the mix (or a region or bar range) to WAV/FLAC/MP3/OGG (Vorbis quality of your choice) with loudness and true peak checked and no clipping; stems for every track, lined up; a check that the ending suits its use (no fade or silence for tracks a game or playlist crossfades, a real ending for a finale, a tight stinger). Exports and mastering refuse a mix that clips, never changes level or is piercing, and say why (you can still ask for it anyway) |
Themes across songs | Save a motif (a game's or album's signature theme) and place it in any later song, in that song's key and mode, slower, faster or in another octave |
Arrange | Tempo changes, ramps and time-signature changes over the song; markers and regions (add, rename, move, resize, recolor, delete); time selection, loop points and repeat; track templates; freeze and unfreeze heavy tracks |
Samples & loops | Search your sample folders by name, role, tempo and key, with each result checked by ear; place loops stretched to the project tempo and moved into key; build drum kits from any samples in REAPER's sampler |
Routing | A map of folders, sends, sidechains and outputs; folders; sends; master-send on/off |
Mix | A whole first mix in one call (auto_mix): every track measured and given a role, then levels for the genre, high-pass and mud cuts, compression, panning, reverb, sidechain, headroom, and robot vocals kept clear of the parts covering them. Plus add, remove, bypass FX; volume, pan, mute, solo, color; sends; side-chain ducking (calibrated to a depth), submix buses, parallel compression, a starting vocal chain, mastering to a loudness target |
Genres | 265 genre profiles, from house and drill to bebop, flamenco, amapiano and Baroque: how each is composed, played, arranged and mixed, and a check of your mix against one |
Remember | Notes Claude keeps between sessions: your taste, plugin quirks, mix lessons |
Check by measuring | Claude can't hear, so it measures what a listener would notice: whether the song develops or just loops (bars that copy other bars, sections that copy earlier ones, the energy arc across sections, the length against the genre's form); whether a part plays like a performance or a machine (timing, accents, swing, fills); each track's level in every section against its role, and each drum's level on a one-track kit; how understandable a vocal's words are, alone and in the mix (STOI); whether each part is in tune; and a spectrogram picture of the song it can look at |
Analyze | Render the mix or one track and measure integrated/short-term loudness (LUFS), loudness range, true peak, clipping, crest factor, stereo correlation (including the low end), frequency balance by band and octave, harshness, sibilance and mud over time and narrow resonances, with a loudness timeline in bars |
Control | Play a range of bars, stop, move the cursor, undo, run any REAPER action |
In Claude Desktop and Claude Code, creaper also adds five commands: Compose in a genre, Critique the mix, Mix the song, Master the song and Design a sound.
Related MCP server: flstudio-mcp
Music theory and genres
creaper gives Claude a composer's toolkit, so it works from theory instead of guessing:
Keys and spelling. About 60 scales and modes (church modes, melodic and harmonic minor modes, bebop, pentatonic and symmetric scales, and 12-tone versions of maqam, raga and Japanese scales), with notes spelled as a musician writes them: E# in F# major, Bbb in a C dim7.
Analysis. Roman numerals with inversions, secondary dominants, borrowed chords, tritone substitutes, the Neapolitan and augmented sixths; cadences; key detection; famous progressions recognised by name.
analyze_harmonyreads a MIDI item in your project and explains it, including a melody's passing tones, suspensions and appoggiaturas.Writing. Progressions by genre or mood (a library of about 50 named ones plus new ones from functional harmony), 15 reharmonization techniques, voicings from close position to rootless and quartal, four-part writing that follows the common-practice voice-leading rules, basslines (walking, 808, tumbao, one-drop...), comping (stabs, skank, bossa, montuno, strum, arpeggios...), and melodies built from a motif developed over phrases.
265 genres in 20 families. Each profile has the style's era and touchstones, tempo, feel and swing, modes, typical progressions and harmonic rhythm, voicing, comping, bass and melody habits, a drum groove, song form with bar counts, instruments, sound design, production habits and mix targets.
sketch_songturns a profile into drums, bass, chords and melody on new tracks in one call.
These are rules of thumb drawn from the records that define each style, not laws.
Works with your plugins
creaper uses whatever is installed: VST, VST3, CLAP, AU and JS, instruments and effects.
Learns what your plugins do by testing them.
scan_pluginsloads each plugin on a hidden temporary track, plays notes into instruments and a test signal through effects, and measures the result: pitched synth or drum kit, range and character; reverb or delay tail, compression or gating, EQ curve, saturation, modulation, pitch shift, stereo width, latency. The findings go into a catalog (get_plugin_catalog, and alongside each plugin inlist_installed_fx), so Claude picks plugins by what they do, not by their names.Knows your library. Claude can browse plugins by kind, category ("what reverbs do I have?") and developer. A plugin installed in several formats shows up once and loads as CLAP or VST3 first. Loose names work: "FET-76" finds Comp FET-76. Ambiguous names come back with the candidates instead of a guess.
Speaks each plugin's language. Parameters are set in the plugin's own units and labels:
-18dB,2500Hz, or text for switches and menus ("Saw", "Low Pass", "16'"). Several settings can change in one undo step. The thousands of placeholder "MIDI CC" parameters that many VST3 plugins expose are hidden.Presets. Factory programs and presets saved in REAPER can be listed and loaded. Plugins that keep presets in their own browser (Arturia, for example) are detected, and Claude offers to open the plugin window instead.
Arturia's library, searchable. With Arturia instruments installed,
find_arturia_presetssearches their factory presets (read-only, from Arturia's own preset database) by type (Bass, Pad, Lead...), subtype (Sub Bass, Evolving Pad...), character (warm, dark, wide...) and genre tags, for the plugins you have. Claude then tells you which preset to pick in the plugin's browser.Your own sound library. Pick a sound in any plugin's own browser and tell Claude "save this as Dark Pad". creaper captures the plugin's complete state with tags and a description, and Claude can recall it on any track, in any project ("use a warm pad from my library"). Plugins that don't share their state are saved as parameter values instead. The library lives in
<REAPER resource path>/creaper/sounds/.Kits mapped by ear.
map_drum_kitplays every key of a drum instrument offline, identifies each sound (kick, snare, clap, hats, cymbals, toms, rim, percussion) and saves the layout. It compares sounds within the kit and checks for the General MIDI layout most commercial kits use; on held-out real-sample kits it gets about 84% of lanes right for General MIDI layouts and about half for custom ones, and says which case it's in.audition_instrumentreports what a patch does: range, pitch tracking, envelope, tone.Drums on any kit. Drum patterns follow the instrument's own note names when it reports them ("Kick", "HH Closed"…). Otherwise creaper uses a drum map you've saved for that instrument (which can also put each drum on its own MIDI channel), then General MIDI. Every pattern reports which note each lane used, so a wrong guess is easy to spot and fix.
Multi-output instruments. Drum machines, Elektron Overbridge, multitimbral synths:
split_instrument_outputsgives each output its own track, named after the plugin's outputs (e.g. Rytm - BD 1, Rytm - SD 2).Hardware plugins. Plugins REAPER marks as real-time only (e.g. Overbridge) can't be rendered offline. Analysis warns when they'd be missing from a measurement.
Drum maps are saved in <REAPER resource path>/creaper/drum_maps.json. Some
instruments are known out of the box (currently SILA: each lane on its own MIDI
channel); a map you save under the same name overrides the built-in one. Claude
prefers a real drum instrument over REAPER's basic ReaSynDr, and skips hardware-only
plugins unless you say the device is connected.
Mixing jobs, measured
The one-call jobs were checked against real renders, not just set up:
Side-chain ducking measures the trigger (e.g. the kick) and sets its level and the compressor's threshold so it ducks by about the depth asked for (light ~2 dB, medium ~4-5 dB, heavy ~10 dB with ReaComp). Instrument tracks are ducked on a small bus right after them, because an instrument lets a trigger arriving on channels 3/4 through to its output. Sidechain-capable plugins (e.g. compressors with an "SC Source: External" switch) are switched over automatically.
Mastering builds EQ → glue compressor → limiter on the master. A glue compressor creaper knows is set up and calibrated by measurement until it takes about 1.5 dB off the loud moments (how much the gap between loud and quiet moments shrinks, which make-up gain can't fake). Then the limiter and master level are adjusted until the integrated loudness is within 0.5 LU of the target, the true peak is checked against the ceiling (tightened if needed), and it warns when peaks and loudness are less than 7 dB apart (squashed). Before changing anything it checks the mix, and refuses a mix that clips, plays every section at one level, or is piercing for its genre. Tested with Arturia's Bus FORCE, Comp VCA-65, FET-76 and TUBE-STA and REAPER's ReaComp.
Plugin profiles describe how specific plugins work, e.g. Bus FORCE's parallel dry/compressor/saturation paths (its compressor path is muted by default), or that FET-76 compresses more as its input goes up. Built in for REAPER's ReaComp and Arturia's Bus FORCE, Comp VCA-65/FET-76/TUBE-STA, EQ SITRAL-295 and Pre 1973/TridA/V76.
Plugin plumbing is off-limits. Parameters that browse or save presets, drive hardware controllers or undo inside the plugin are hidden and refused.
The jobs take your own plugins (
compressor=,eq=,glue_compressor=,fx=); creaper configures REAPER's stock plugins itself and tells Claude what to set on others.
Notes are kept in <REAPER resource path>/creaper/knowledge.json; you can read, edit or
delete them.
Install
You need REAPER 7 (opened at least once) and a Claude account.
Windows: one command
Open PowerShell (Start menu → type powershell → Enter; not Run as administrator,
so creaper installs for your own account), paste this whole line and press Enter:
irm https://raw.githubusercontent.com/nickcapron/creaper/main/install.ps1 | iexCopy it in one piece: irm on its own asks for a Uri:, and without | iex at the end
PowerShell only prints the installer instead of running it. When it's running you'll
see creaper installer, then Installing creaper…, then a few questions.
It installs Python if needed, puts creaper in its own folder (%LOCALAPPDATA%\creaper),
offers to install Claude Code with Anthropic's official installer, then runs
creaper setup, which:
installs ReaImGui (for the chat panel) from its official GitHub release, if you don't have it;
installs creaper's scripts in REAPER and starts them with REAPER;
offers to connect creaper to Claude Desktop and to Claude Code.
It also adds a creaper command (creaper doctor, creaper install-bridge …) for new
terminals. Then sign in to Claude Code once (run claude in a new terminal) and restart
REAPER: the creaper panel opens by itself. Run the same command again to update.
The installer never asks for a Claude password or key; signing in happens in Claude's own apps. To see what it does first, read install.ps1.
macOS, Linux, or by hand
You need Python 3.10 or newer.
pip install https://github.com/nickcapron/creaper/archive/refs/heads/main.zip
creaper setupcreaper setup --dry-run shows what it would do without changing anything. The
individual steps are below if you'd rather do them yourself.
Optional extras (never installed unless you ask for them):
creaper[ml]: a music model (LAION's CLAP, Apache-2.0) that adds a "how it comes across" line tocheck_song(realistic or synthetic, modern or dated) and a sounds-alike score tocompare_to_reference. About 1 GB with the model, which downloads the first time it's used.creaper[analysis]: librosa's beat tracker, for finding the bars of reference tracks.
pip install "creaper[ml] @ https://github.com/nickcapron/creaper/archive/refs/heads/main.zip"1. Install creaper (manual steps)
pip install https://github.com/nickcapron/creaper/archive/refs/heads/main.zip2. Install the bridge script into REAPER
creaper install-bridgeThis copies creaper's scripts into REAPER's Scripts/creaper folder and sets REAPER
to start creaper whenever it launches: the bridge runs quietly in the background, and
the chat panel opens (once ReaImGui is installed; see Chat inside REAPER). It does
this with one clearly marked block in Scripts/__startup.lua, leaving anything else
in that file alone. Options:
--no-chat: start only the bridge, not the panel.--no-autostart: don't start anything at launch (and remove creaper's block if it's there). Then runScripts/creaper/creaper_bridge.luayourself from the action list (New action → Load ReaScript); running it again stops it.
3. Restart REAPER.
4. Check the connection
creaper doctor5. Connect Claude
Claude Desktop: open Settings → Developer → Edit Config and add creaper to
claude_desktop_config.json, then restart Claude Desktop:
{
"mcpServers": {
"creaper": {
"command": "python",
"args": ["-m", "creaper"]
}
}
}If python isn't on your PATH, use the full path to the Python you installed creaper
with (on Windows, something like C:\\Users\\you\\AppData\\Local\\Programs\\Python\\Python312\\python.exe).
Claude Code:
claude mcp add creaper -- python -m creaperThen ask Claude something like "What's in my REAPER project?"
Chat inside REAPER
Prefer not to switch windows? creaper includes a chat panel you can dock inside REAPER, like the mixer. It runs your own installed Claude Code, signed in with your own account, and that Claude can only use the creaper tools: it can work in your REAPER project and nothing else on your computer.
Which account pays: the panel never handles logins or keys. It uses whatever Claude
Code is signed in with. Normally that's your Claude plan, and the panel shows how much
of your plan's limits you've used. If ANTHROPIC_API_KEY is set, Claude Code uses that
key instead and bills it per use. You're responsible for using your account within
Anthropic's terms; the
API key route is the one Anthropic
documents for third-party tools.
You need: Claude Code, signed in once (run
claude in a terminal), and the free ReaImGui extension: install
ReaPack, then in REAPER Extensions → ReaPack → Browse packages,
search for ReaImGui, install it and restart REAPER.
Then:
Run
creaper install-bridgeagain, so the panel knows where Python and Claude Code are.Restart REAPER: the panel opens by itself. (Closed it? Run Script: creaper_chat.lua from the action list, or put it on a toolbar or a shortcut.)
Click Dock to dock it. Type a message and press Enter (Ctrl+Enter adds a line).
The panel shows what Claude is doing as it works (each tool it runs) and how much of
your plan's 5-hour limit you've used. Stop interrupts a turn, and New chat
starts over. Conversations continue across REAPER restarts. Start a message with
/compose, /mix, /master or /critique (e.g. /compose deep house in F minor,
/master -14) to run the same step-by-step jobs Claude Desktop offers as commands.
Claude doesn't ask before routine edits in the panel (they're all undoable), but it shows Allow / Deny before anything riskier: running an arbitrary REAPER action (some can't be undone, like saving or deleting media) or deleting a track.
Security notes
creaper opens no network ports. The MCP server talks to its app over stdio, and the bridge exchanges files in your own REAPER resource folder.
It never handles logins or API keys.
The bridge runs only its own fixed commands, never code sent to it.
The chat panel's Claude has no shell, file or web tools, only creaper's.
Projects can come from other people, and names inside them (tracks, markers, presets) reach Claude as text. Claude is told to treat them as data, never as instructions, and the riskier tools need your confirmation in the panel. In Claude Desktop, keep per-tool approval on for
run_actionanddelete_track.
Conventions Claude uses
Tracks are named by number (1 = top), by name, or
master.Bars and beats are 1-based, like REAPER's ruler.
Inside a MIDI item, positions and lengths are in quarter notes:
1= quarter,0.5= eighth,0.25= sixteenth,4= one bar of 4/4.Middle C is
C4= 60.Drum lanes are step strings:
xhit,Xaccent,oghost,1–9velocity,.rest. Lane names are General MIDI drums (kick,snare,closed hat…) or note numbers for other kits.
How it works
Claude app ⇄ creaper MCP server (Python) ⇄ files ⇄ creaper_bridge.lua (inside REAPER)REAPER's Lua has no networking, so the two halves talk through small JSON files in
REAPER's resource folder (<resource path>/creaper/). The bridge checks for a request
about 30 times a second, runs it with the ReaScript API, and writes the answer back. A
round trip takes about 40 ms.
For analysis, the bridge renders the requested range to a temporary 32-bit float WAV (so overs above 0 dBFS aren't hidden). It saves your render settings first and restores them afterwards. The server measures the file in Python, then deletes it.
Better robot voices with Piper (optional)
Robot vocals use your computer's own speech voices. For clearer, more natural ones, install Piper, a free offline voice engine (GPL-3.0, so it's a separate install), into creaper's Python environment:
python -m pip install piper-ttsThen put voices (an .onnx file and its .onnx.json, from
rhasspy/piper-voices) in
<REAPER resource folder>/creaper/voices/piper/. creaper lists them first and shows each
voice's license: for music you'll release, pick public domain or CC0 voices such as
Norman, John, Bryce, Joe, Kristin, LJSpeech or Cori. Some popular voices (Lessac, Ryan,
HFC) are for non-commercial use only.
Good to know
Undo. Each tool call is one undo step. Claude can also call
undoitself.Your render settings are saved and restored around every analysis render, and rendered files are deleted afterwards (set
CREAPER_KEEP_RENDERS=1to keep them in<resource path>/creaper/renders).Portable REAPER installs: set
CREAPER_REAPER_RESOURCE_PATHto the portable folder for bothcreaper install-bridge --reaper-resource-path ...and the MCP server's environment.Updating: on Windows, run the installer command again. Otherwise
pip install --upgrade https://github.com/nickcapron/creaper/archive/refs/heads/main.zip, thencreaper install-bridgeagain and restart the bridge. A newly started bridge takes over from a running one, so you don't need to restart REAPER.
Troubleshooting
Problem | Fix |
"REAPER isn't answering" | Is REAPER open and the bridge running? Run |
| Set |
"REAPER didn't answer within N seconds" | Close any open dialog in REAPER; modal windows can pause scripts. |
A plugin parameter won't take a | It may show text instead; use |
Drums land on the wrong sounds | The kit doesn't follow General MIDI or report note names. Tell Claude which note each drum is on; it saves a drum map for that instrument. |
The chat panel says it needs ReaImGui | Install ReaImGui through ReaPack (see Chat inside REAPER) and restart REAPER. |
| Open a new PowerShell window (PATH changes only reach new ones). Still not found? Run the installer again: it adds both to your PATH. |
The chat panel says Claude Code wasn't found | Install Claude Code, run |
An analysis of a hardware/Overbridge track is silent | Real-time-only plugins can't render offline. Record their output to an audio track first. |
Development
git clone https://github.com/nickcapron/creaper
cd creaper
python -m venv .venv
.venv/bin/pip install -e ".[dev]" # Windows: .venv\Scripts\pip install -e ".[dev]"
.venv/bin/pytestsrc/creaper/reaper/creaper_bridge.lua: the REAPER side (pluscreaper_json.lua)src/creaper/reaper/creaper_chat.lua: the dockable chat panel (ReaImGui)src/creaper/chat.py: runs one panel turn on Claude Code, limited to creaper's toolssrc/creaper/server.py: the MCP toolssrc/creaper/bridge.py: the file-based clientsrc/creaper/theory.py: note names, chord symbols, drum patterns and MIDI editssrc/creaper/scales.py,harmony.py: scales and modes, spelling, Roman numerals, chord naming, key detection, cadences, modulationsrc/creaper/composer.py: progressions, reharmonization, voicings and voice leading, bass, comping, melody, rhythm, MIDI harmony analysissrc/creaper/genres/: the genre library, one module per family (genres/__init__.pyhas the schema and validator)src/creaper/music_tools.py: the theory, genre, composition and listening toolssrc/creaper/listen.py: per-note audio features, drum classification and kit mappingsrc/creaper/pluginscan.py,scan_tools.py: testing plugins and the plugin catalogsrc/creaper/project_tools.py: tempo map, program changes and controllers, routingsrc/creaper/samplelib.py,sample_tools.py: the sample library, loop tempo/key analysis, sampler kitssrc/creaper/export_tools.py: saving the project, exporting the mix and stemssrc/creaper/record_tools.py: recording and takes, time selection, markers, track templates, freezingsrc/creaper/vocal_tools.py,speech.py,talkbox.py: vocals (chops, singing-synth MIDI, text-to-speech, talk box and vocoder)src/creaper/perception.py,ear_tools.py: measuring what a listener would notice (clarity, tuning, spectrograms, structure, groove, per-section balance)src/creaper/structure.py: bar fingerprints, repetition and the energy arc (measure_structure)src/creaper/arturia.py: read-only search of Arturia's preset databasesrc/creaper/mix_tools.py: auto_mixsrc/creaper/motif_tools.py: motifs reused across songssrc/creaper/installer.py,install.ps1:creaper setupand the one-command Windows installerassets/make_brand.py: regenerates the logo, banner and thumbnail inassets/brand/src/creaper/drums.py: saved drum mapssrc/creaper/analysis.py: loudness (ITU-R BS.1770-4 / EBU R128), true peak, spectrum, stereo
Issues and pull requests are welcome.
License
MIT
Available Tools
125 toolsadd_chord_progressionC
Writes a chord part from chord symbols or Roman numerals (with a key), in any voicing and comping rhythm, with smooth voice leading. Returns the notes chosen.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| seed | No | ||
| start | No | Where the first chord starts, in QN from the item start | |
| chords | Yes | Chords with lengths, or one string like 'Am7 D7 Gmaj7' / 'ii7-V7-Imaj7' (each lasting chord_length). | |
| octave | No | Register; 4 is around middle C | |
| rhythm | No | How the chords are played: sustain, stabs, offbeat, skank, strum, bossa, montuno, charleston, arpeggio_up, alberti, pulse_16... | sustain |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| replace | No | ||
| voicing | No | close (triads/7ths, smooth inversions), open/drop2/drop3 (spread jazz/pop voicings), shell (root-3-7), rootless (Bill Evans A/B forms), quartal (stacked 4ths), spread (piano/orchestral), power (1-5-8), cluster (with added 9ths), satb (four-part chorale by the voice-leading rules) | close |
| arp_rate | No | Note length for arpeggio patterns in QN (0.25 = 16ths) | |
| velocity | No | ||
| bass_octave | No | Also add the root (or slash bass) in this octave, e.g. 2 | |
| chord_length | No | QN per chord when chords is a string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that it 'returns the notes chosen' and that voice leading is applied, but for a mutation tool it omits critical behavior: whether existing notes are overwritten, what the 'replace' flag does, whether it requires a selected/existing MIDI item, and what happens on failure. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and inputs, and the return behavior is appended efficiently. Every clause earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations and no output schema, two sentences are too thin. It should cover the replace/add semantics, the 'selected' item_id convention, and interaction with existing item content; as written an agent cannot confidently predict the side effects of calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 77%, so the schema already documents most parameters (key, voicing, rhythm, bass_octave, chord_length). The description restates the chord-symbol/Roman-numeral input and voicing/rhythm concepts but adds no syntax or constraint detail beyond the schema, which matches the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Writes a chord part') plus the accepted input forms ('chord symbols or Roman numerals with a key') and the two axes it controls (voicing, comping rhythm). This is clearly more than a restated name, but it never distinguishes itself from adjacent writers like write_bassline, write_melody, or harmonize_melody, so it stops short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. An agent must infer that this is the tool for chords versus write_melody or harmonize_melody entirely on its own, and nothing tells it about prerequisites such as needing an existing MIDI item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_drum_patternC
Programs drums step-sequencer style on whatever drum instrument the track has. The result's 'lanes' shows which note each lane landed on and why.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | Length of one step in QN: 0.25 = 16ths, 0.5 = 8ths, 1/3 = 8th triplets | |
| start | No | Start in QN from the item start | |
| swing | No | 50 = straight, ~58 = light swing, ~66 = triplet shuffle | |
| channel | No | MIDI channel; GM drums use 10 | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| pattern | Yes | Lane name -> steps. Name lanes by drum (kick, snare, clap, closed hat, open hat, pedal hat, ride, crash, low/mid/high tom, rim, shaker...); they're matched to the instrument's own note names, then a saved drum map, then General MIDI. Note names/numbers (C1, 36) also work. Steps: x hit, X accent, o ghost, 1-9 velocity level, . rest; spaces and | are ignored. Example: {'kick': 'x...x...x...x...', 'snare': '....x.......x...'} | |
| repeats | No | How many times to play the pattern back to back | |
| replace | No | ||
| humanize | No | Random velocity variation, 0-1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals one useful trait, that the result's 'lanes' explains where each lane landed, but omits whether existing notes are overwritten (the 'replace' flag is only defaulted in schema, not explained), whether the item_id must exist first, or how unmatched lane names are resolved beyond the schema's brief hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and the second sentence adds non-redundant return-value context. No filler, though the second sentence is a touch cryptic ('and why') without much elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object mutation tool with no annotations and no output schema, the description covers the action and hints at the output ('lanes'), which is helpful. But it leaves gaps around side effects (replace behavior, whether an existing MIDI item is required) that an agent would need before invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents nearly every parameter (step, start, swing, channel, patching/velocity syntax in 'pattern', humanize). The description adds no parameter detail beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (programs) and resource (drums, step-sequencer style) on the track's drum instrument. It is distinguishable from siblings like add_midi_notes or write_bassline, though it never names the closest alternatives such as add_genre_groove or map_drum_kit to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for step-sequencer-style drum programming but gives no explicit when-to-use, prerequisites (e.g. the item must already exist and be on a drum instrument), or when a sibling like add_midi_notes or add_genre_groove would be the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fxB
Adds a plugin to a track's FX chain (use 'master' for the master bus). For plugins creaper knows, the result includes how they work.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | Open the plugin's window | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| fx_name | Yes | Plugin name, e.g. 'Comp FET-76', 'Pro-Q 3', 'ReaEQ'; loose names work if they're unambiguous | |
| position | No | Chain position (1 = first); default: end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one genuine trait beyond the schema: the result includes plugin behavior info for plugins creaper recognizes (relevant since there is no output schema). It omits failure modes, permission/install prerequisites, and side effects on the existing chain, which is a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with no filler. The trailing clause about 'how they work' is slightly vague but still earns its place by hinting at return content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description is thin: it never addresses what happens on a failed/ambiguous plugin name or how it interacts with the existing FX chain. Full schema coverage offsets some of this, making it minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents track, fx_name, position, and show in detail, including the 'master' value. The description's 'use master for the master bus' merely restates the track parameter's schema text, adding no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Adds a plugin to a track's FX chain') that clearly separates it from siblings like remove_fx, update_fx, and set_fx_parameter. It does not name those siblings explicitly, so an agent must infer the boundary rather than being told it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical tells the agent how to target the master bus, which is a useful targeting cue, but there is no when-to-use guidance relative to add_vocal_chain, add_parallel_compression, or apply_track_template, and no when-not or prerequisite statement (e.g., that the plugin must be installed). 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.
add_genre_grooveC
Programs a genre's signature drum groove (from its profile) on the track's drum instrument, with the genre's swing.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | Yes | ||
| start | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| repeats | No | Times to play the groove (it's 1, 2 or 4 bars) | |
| replace | No | ||
| humanize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never discloses that this is a mutation that writes MIDI notes onto a track, whether it overwrites existing content (the 'replace' param exists but is unexplained), permission requirements, or what happens on repeat. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the verb and resource. Nothing is wasted, though its brevity comes at the cost of the missing usage and parameter detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations, no output schema, and only 33% schema coverage, the description is too thin. It omits what replace, humanize, start, and repeats do, and does not explain the return or side effects, leaving an agent with real gaps before invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (item_id and repeats documented in the schema). The description mentions no parameters at all, leaving genre, start, replace, and humanize undocumented in both the description and the schema. It adds no meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Programs') and resource ('a genre's signature drum groove') and adds the mechanism ('from its profile') and the swing detail. It is clearly distinguishable from generic siblings like add_midi_notes, though it does not explicitly contrast with add_drum_pattern, which is the nearest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not guidance. The description does not tell the agent how this differs from add_drum_pattern or add_midi_notes, nor that a genre profile (get_genre_profile/list_genres) is the source it depends on. Usage is only weakly implied by the phrase 'genre's signature groove'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_markerB
Adds a marker, or a region when end_bar is given (e.g. 'Chorus' from bar 17 to 25).
| Name | Required | Description | Default |
|---|---|---|---|
| bar | Yes | Bar number, 1-based | |
| beat | No | Beat within the bar, 1-based (default 1) | |
| name | Yes | ||
| color | No | #RRGGBB | |
| end_bar | No | Give this to make a region (e.g. a song section) ending at this bar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that supplying end_bar yields a region, but that fact is already stated in the end_bar schema field, so the description adds little beyond it. Nothing is said about permissions, overlap with existing markers, reversibility, or failure modes for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly written sentence that front-loads the primary action and appends the conditional region behavior as a parenthetical example. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description is thin: it omits ordering constraints (end_bar relative to bar), what happens to an existing marker of the same name, and confirmation of what is returned. The schema covers most parameter detail, but behavioral context is left largely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (80%), with bar, beat, color, and end_bar each documented in the schema, so the baseline is 3. The description adds only the end_bar-as-region relationship and an illustrative example, which mildly reinforces but does not substantially extend the schema's own wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Adds') and resource ('a marker'), plus a clear dual behavior: a marker, or a region when end_bar is supplied. It is distinct from siblings like edit_marker and delete_marker by virtue of the create verb, though it never explicitly names them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implicitly tells the agent when a region is created (when end_bar is given), which is useful conditional guidance, but offers no when-to-use-vs-alternatives framing, no prerequisites (e.g. project must be open), and no steering away from edit_marker for modifying existing markers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_midi_ccC
Adds controller events: sustain pedal, mod wheel, expression swells, pitch bend.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| channel | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it says nothing beyond 'adds'. It does not state whether events append to existing CC data or overwrite, whether the item must already exist, channel defaulting, or any failure/return behavior for this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the verb front-loaded and no filler. It is a fragment rather than a full sentence, but every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and only 33% top-level schema description coverage, the description should disclose more: the 'selected' magic value for item_id, the meaning of the channel default, and append-vs-overwrite semantics. As written it is too thin to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%), but the nested CCEvent definition documents cc, value, and position in detail. The description partially compensates by naming controller types that map to the cc parameter (mod wheel, expression, sustain, pitch bend). It adds no meaning for item_id, channel, or how events are ordered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds controller events') and enumerates representative cases (sustain pedal, mod wheel, expression swells, pitch bend), so the agent knows exactly what class of MIDI data it writes. It does not explicitly distinguish itself from the sibling family get_midi_cc / delete_midi_cc, but the verb makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance. It never states the prerequisite that item_id must come from create_midi_item/get_track_details, nor that get_midi_cc should be used first to inspect existing controllers. The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_midi_notesB
Writes notes into a MIDI item: melodies, basslines, arpeggios, anything. The item grows to fit notes past its end.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| replace | No | Delete the item's existing notes first |
TDQS
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 one genuinely useful, non-obvious trait — 'The item grows to fit notes past its end' — which the schema does not state. But it omits other behavior a mutation tool needs to surface: what happens to existing notes by default (overwrite vs append), what the call returns, and any auth/precondition requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary action and followed by one high-value behavioral fact (auto-growth). No filler, no restating the tool name, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no annotations and no output schema, the description is adequate but thin: it never clarifies the append-vs-replace default, the precondition that a MIDI item must exist, or what the call yields. The auto-grow note helps, but not enough to call the definition fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%: item_id, replace, and every nested Note field (pitch, start, length, channel, velocity) are documented in the schema, including units and defaults. The description adds no parameter meaning beyond that, so the baseline 3 for schema-doing-the-work applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Writes notes into a MIDI item') and even illustrates content types, so the core action is unambiguous. However, it does not distinguish itself from closely related siblings like edit_midi_notes, write_melody, write_bassline, or add_chord_progression, leaving the agent to infer that this is the low-level primitive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. Nothing tells the agent whether to prefer add_midi_notes over edit_midi_notes, write_melody, or write_bassline, nor that a MIDI item must already exist (a dependency on create_midi_item). Usage is only implied by the verb 'Writes'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_parallel_compressionB
New York-style parallel compression: a bus with a heavily compressed copy of the track, blended underneath the untouched original.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track number (1 = top), track name, or "master" | |
| blend_db | No | Level of the crushed copy under the original | |
| compressor | No | Default: ReaComp, set up to squash hard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It usefully states that a bus is created and that the original track remains untouched, which is valuable signal-flow context. However, it omits whether the operation is reversible, whether it modifies project state beyond creating a bus, and what permissions or side effects are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. It is not explicitly front-loaded with an action verb, but the concept is immediately clear and appropriately sized for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the audio concept but does not provide usage context, alternatives, or operational details such as mutation scope. Since the schema fully documents the three parameters and no output schema exists, the main remaining gap is guidance on when and why to invoke this tool versus its many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents track, blend_db, and compressor thoroughly. The description adds no parameter-level meaning, but baseline 3 is appropriate when the schema carries parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the effect being added: a New York-style parallel compression bus with a heavily compressed copy blended under the original. The name supplies the verb, and the description supplies the specific audio-processing concept. It does not, however, distinguish this tool from sibling routing or FX tools such as add_fx or setup_sidechain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what parallel compression is but gives no explicit guidance on when to use this tool versus alternatives like add_fx, setup_sidechain, or create_bus. It also does not mention prerequisites such as track selection or mix context. Usage must be inferred entirely from the tool name and concept.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_program_changeB
Switches the sound of a MIDI instrument that follows program changes (General MIDI synths, hardware synths through ReaControlMIDI, multitimbral plugins), with an optional bank select first.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| program | Yes | 1-128, or a General MIDI name like 'Electric Piano 1', 'String Ensemble 1' | |
| bank_lsb | No | Bank select LSB (CC32) | |
| bank_msb | No | Bank select MSB (CC0), for synths with banks | |
| position | No | QN from the item start |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool inserts a program change event but omits where it's inserted (at position on channel within item), whether it's a write/mutation, permission or selection requirements for item_id='selected', and what happens to existing program changes. For a MIDI-write tool 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence, front-loaded with the primary action, no filler. The parenthetical list of synth types is informative but slightly long; still efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and no output schema, the description is adequate in framing the tool's purpose but thin on operational behavior (insertion point, mutation semantics, selection handling). It could do more to compensate for missing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents most parameters (item_id, program, bank_lsb/msb, position, channel defaults/ranges). The description adds the domain concept that 'bank select' is optional and goes first, which is useful context but not deep parameter syntax beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('switches the sound') and resource (MIDI instrument program) with scope qualifiers about which synths respond to program changes. However it doesn't explicitly distinguish this from add_midi_cc (which could also write bank select CCs) or add_midi_notes, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for GM/hardware/multitimbral synths, giving implicit context for when the tool applies. It doesn't state when to avoid it (e.g., non-GM plugins, plugin parameter automation) or name alternatives like add_midi_cc for raw bank select.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_robot_vocalA
Makes a synth sing words: the computer's text-to-speech voice speaks each word under its note of a melody item (top note of each chord), each word's vowel held over its notes while its consonants keep their natural speed. talkbox (default) shapes a sawtooth playing the melody with the speech's formants, with noise for the consonants, and puts the result on one audio track after the melody's track. vocoder builds three tracks (the vocal with ReaVocode, its voice, and a carrier synth that can play the melody's chords). Robot vocals are only understood when they're sparse: a short hook of a few words, repeated (think "one more time", "around the world"), at most one syllable per beat, on quarter notes or longer. Dense, fast verses turn to mush. The result includes a measured clarity score (alone and in the mix): act on it rather than guessing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the vocal track | Robot Vocal |
| bands | No | vocoder: bands; more = clearer words | |
| style | No | talkbox (default): a synth shaped by the speech's mouth shapes, the clearest words (Zapp, Chromeo, Daft Punk leads); one audio track. vocoder: ReaVocode over a synth you can change and play chords on; more robotic and harder to understand | talkbox |
| voice | No | A voice from list_speech_voices (part of its name), or 'female'/'male' | |
| lyrics | Yes | The words, one per note of the melody: 'all night long _ to-night'. Hyphenate to spread a word over several notes; a lone '_' holds the previous word over the next note | |
| carrier | No | vocoder: synth that sings (default ReaSynth saw) | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it discloses side effects (talkbox adds one audio track after the melody's; vocoder builds three tracks), the return value (a measured clarity score alone and in the mix), and instructs the agent to act on that score rather than guess. This is substantial context beyond any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and every paragraph carries real information (mode behavior, sparsity rules, return value). However, the talkbox/vocoder mechanics are partly restated from the schema's style field, and the three-paragraph length is heavier than strictly needed, leaving minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers what's needed: side effects on track structure, which item_id input to supply, how lyrics map to notes, sparsity constraints, and the clarity-score return. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters, including the style enum and lyrics syntax. The description reinforces the talkbox/vocoder distinction and lyric sparsity but adds little parameter-level detail beyond the schema — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ('Makes a synth sing words') and specifies exactly what is manipulated: the TTS voice over a melody item's notes. It further distinguishes the two output modes (talkbox = one shaped audio track; vocoder = three tracks with ReaVocode), letting an agent tell this apart from siblings like add_vocal_chain or chop_vocal without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong when-to-use guidance: robot vocals only work when sparse ('short hook of a few words, repeated... at most one syllable per beat'), and explicitly warns that dense/fast verses 'turn to mush'. It also directs the agent to reference list_speech_voices for voices and to act on the clarity score. It stops short of naming sibling alternatives (e.g., add_vocal_chain) to route away from, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_vocal_chainA
A starting vocal chain: high-pass and tone EQ, then a compressor. With REAPER's ReaEQ/ReaComp it's set up for you; with other plugins they're added and you set them with set_fx_parameters. A starting point to tweak by ear; no de-esser.
| Name | Required | Description | Default |
|---|---|---|---|
| eq | No | EQ plugin to use instead of ReaEQ, e.g. one of the user's | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| character | No | clean | |
| compressor | No | Compressor to use instead of ReaComp | |
| reverb_send_db | No | Also send to an existing reverb track at this level |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does disclose meaningful behavior: the exact chain created, the automatic-vs-manual split depending on plugin choice, and the caveat that it is a tweakable starting point. It does not state idempotency, whether re-running duplicates FX, or what is returned, leaving some mutation-tool gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what gets built before the conditional-plugin detail and the scope caveat. Every sentence carries information; only slight density cost from the semicolon-laden last line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description covers what is created and how configuration differs by plugin, which is the bulk of what an agent needs. It omits any mention of return values or failure/idempotency behavior, a minor gap for a creative convenience tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents eq, compressor, track, and reverb_send_db. The description adds the meaningful behavioral note that eq/compressor overrides change whether the chain is auto-configured, but says nothing about the 'character' enum values or reverb_send_db, so it only marginally exceeds the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (add a vocal chain to a track) and enumerates its contents: high-pass and tone EQ, then a compressor. It also distinguishes itself from generic siblings by noting it is a 'starting point' rather than a full mixing tool, and it explicitly names 'no de-esser' as a scope boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: with REAPER's ReaEQ/ReaComp it is configured automatically, whereas with other plugins the FX are added and the user must call set_fx_parameters to configure them. That routes the agent to a sibling in the non-default case. It stops short of an explicit 'use this instead of add_fx when...' rule, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_audioARead-only
Renders the mix or one track and measures it: integrated/short-term loudness (LUFS), loudness range, true peak, RMS, crest factor, clipping, stereo correlation (including the low end), and frequency balance by band and octave. Rendering runs faster than real time but takes a moment for long ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| track | No | "master" for the full mix, or a track to measure on its own (post-FX, post-fader) | master |
| end_bar | No | Bar to stop at; default: end of project | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds a genuine performance trait by disclosing that rendering is offline (faster than real time) yet takes noticeable time for long ranges, which matters for timeout and batching decisions. It does not say whether the call blocks or how results are returned, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first clause, and the second sentence covers the one non-obvious cost. The metric enumeration is long but each item is informative, so it is close to fully earning its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing results and does so by listing every measured quantity, and the readOnly annotation covers the safety profile. What remains thin is the absence of usage routing against sibling analysis tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so track, start_bar, and end_bar are already fully documented, and the description only echoes the track/master distinction without adding bar-range or fraction semantics. Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (renders and measures) on a specific resource (the mix or one track) and enumerates exactly the metrics produced, from LUFS and true peak to stereo correlation and frequency balance. The metric list is distinctive enough that an agent can separate this from measure_tracks, analyze_sample, or show_spectrogram without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'the mix or one track' implies when each mode applies, but there is no explicit when-to-use, when-not-to-use, or named alternative (measure_tracks, compare_mix_to_style, analyze_sample all sit nearby). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_harmonyARead-only
Reads a MIDI item and explains its harmony: the key (detected), chords over time, Roman numerals and functions, cadences, notes outside the key, and (with a melody item) passing tones, suspensions, appoggiaturas and other non-chord tones.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| resolution | No | auto | |
| melody_item_id | No | Also analyze this melody against the chords: non-chord tones |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered and the bar is lower. The description still adds real behavioral context: the key is "detected" unless supplied, the analysis spans chords-over-time plus cadences and non-chord tones, and a second item can be analyzed against the chords. It does not mention any failure modes (e.g., what happens with a non-MIDI or empty item), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first, followed by a colon-list of outputs and one parenthetical conditional. Every clause earns its place, though the list is dense enough that it reads more as an inventory than as structured guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe return values — and it does, enumerating key, chords, Roman numerals, functions, cadences, non-key notes, and non-chord tones. Combined with readOnlyHint covering safety and the schema covering item_id, an agent has enough to call this correctly; only error/edge behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema carries most of the load. Even so, the description adds meaning beyond the schema for two parameters: it clarifies that the key is auto-detected when omitted (the schema only shows a null default), and it explains that melody_item_id analyzes a melody against the detected chords for non-chord tones — a purpose the schema states only tersely. Only the resolution enum remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Reads a MIDI item and explains its harmony") and then enumerates exactly what it produces: key, chords over time, Roman numerals, functions, cadences, non-key notes, and non-chord tones with a melody. This is far more specific than a tautology, but it never distinguishes itself from close siblings such as analyze_progression, identify_chord, or check_voice_leading, which also operate on harmonic analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader infers that you call this when you want a harmonic read-out of a MIDI item. The description does state one conditional usage case ("with a melody item ... non-chord tones"), which is helpful, but it gives no explicit when-to-use/when-not guidance and never routes the agent to or away from analyze_progression, identify_chord, or reharmonize.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_progressionARead-only
Roman-numeral analysis of a progression: the key (detected if not given), each chord's numeral, function and spelling, secondary dominants, borrowed chords, tritone subs, Neapolitan and augmented sixths, cadences, and famous progressions it matches.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| chords | Yes | Chord symbols (Am7, F#m7b5, C/E, Bbmaj9) or, with a key, Roman numerals (ii7, V7/V, bVII, viiø7, iv6, N6). A list, or one string like 'Am F C G' or 'i-VI-III-VII'. A 'mode:' prefix such as 'dorian: i7-IV7' reads the numerals in that mode on the key's tonic. | |
| lengths | No | Length of each chord in QN (4 = a bar of 4/4); default: chord_length for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower; the description still adds value by disclosing that the key is auto-detected when omitted and by enumerating the analytical features returned (secondary dominants, Neapolitan/augmented sixths, cadence detection, matched famous progressions). It does not mention input validation or failure modes for unparseable chords, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the operation first and then lists outputs; despite the long enumeration, every clause carries distinct information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the analysis categories returned, and the parameters are well covered by the schema. The only shortfall is the absence of any guidance on when to prefer this over sibling analysis tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description nonetheless adds meaning beyond the schema by clarifying that 'key' is auto-detected when not supplied (the schema only shows a null default) and that analysis is Roman-numeral oriented, which frames how the chords parameter is interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Roman-numeral analysis of a progression') and enumerates the analytical outputs (numerals, function, cadences, borrowed chords), so an agent knows exactly what it produces. It does not, however, distinguish itself from close siblings such as analyze_harmony, identify_chord or suggest_progressions, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the subject matter (analyzing a chord progression), and 'the key (detected if not given)' hints at input flexibility. But there is no explicit when-to-use, when-not-to-use, or routing to alternatives like analyze_harmony or identify_chord, leaving the agent to infer which analysis tool fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_sampleARead-only
Listens to one sample: loop or one-shot, what drum it sounds like or what pitch it plays, a loop's tempo and length in bars and its key, and whether it starts late.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of an audio file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries the behavioral disclosure burden and does so well: it spells out the concrete facts returned (loop/one-shot classification, drum identity, pitch, tempo in bars, key, late-start flag). It adds real information beyond the annotation, though it doesn't discuss edge cases like unsupported formats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence, front-loaded with the core action and then the returned attributes. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return content, which it does thoroughly for a one-parameter read tool. It is nearly complete; only edge-case behavior (invalid/non-audio paths, very long files) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents the single 'path' parameter as an audio file path. The description adds no path syntax, format, or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (listens to/analyzes) and resource (one sample) and enumerates the attributes it extracts: loop vs one-shot, drum type, pitch, tempo, bars, key, late start. The single-sample scope distinguishes it from the broader analyze_audio sibling, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose (inspect one sample file to learn its characteristics), but there is no explicit when-to-use or when-not-to-use guidance, nor any routing to analyze_audio for longer material. Adequate but leaves the choice between the two analysis tools to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_track_templateB
Adds a track template's tracks to the project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A name from list_track_templates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a mutation ('Adds') but omits whether existing tracks are affected, required permissions, or what happens if the name is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no wasted words. It is appropriately sized for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation tool with full schema coverage, the description states the core action and the schema supplies the parameter reference. However, with no annotations and no output schema, it omits prerequisites and behavioral details (e.g., where tracks are inserted), leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter at 100% coverage with a clear description pointing to list_track_templates. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and resource ('track template's tracks to the project'), making the action clear. It does not distinguish itself from related siblings like create_track or save_track_template, nor does it name the complementary list_track_templates tool in the description, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is stated. The agent must infer that a template name is needed and that list_track_templates should be called first; the schema notes this but the description does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audition_instrumentA
Listens to the track's current sound: plays notes across the range offline (in a temporary item that's removed afterwards) and reports its playable range, whether it follows pitch (and any transposition), attack, sustain, release, brightness and character (bright/dark, plucky/sustained, pad-like, noisy). Use it to check a patch you designed, or to find out what an unfamiliar sound or preset is.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes to play; default C1 to C7, one per octave | |
| track | Yes | The track whose instrument to listen to | |
| channel | No | ||
| velocity | No | ||
| note_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does substantial work: it discloses offline playback, that a temporary item is created and removed afterwards, and precisely what attributes are measured (range, pitch-follow/transposition, ADSR, brightness, character). It omits whether the audition is audible in real time and roughly how long a call takes, which are the remaining gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-formed sentences, front-loaded with what the tool does and followed by when to use it; the detailed attribute list is dense but informative rather than padding. Slightly long, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey return values, and it does so thoroughly via the enumerated report fields. Combined with the offline/temporary-item disclosure, it covers most of what an agent needs, missing only duration/audibility expectations and parameter-level detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%; only notes and track carry descriptions, while channel, velocity and note_seconds have bare titles. The description mentions 'notes across the range' but adds no format, channel, velocity or timing semantics, so it fails to compensate for the documented-parameter gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (plays notes offline, then reports) on a specific resource (the track's current instrument/sound), plus the exact analysis outputs it produces. No sibling tool does this – analyze_audio, get_instrument_notes and get_track_details all differ, and the description makes that distinction clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names two use cases: verifying a patch you designed, and characterizing an unfamiliar sound or preset. It does not name a concrete alternative tool or state when not to use it, so it stops short of the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_mixADestructive
A whole first mix in one call: measures every track (one render pass), works out each one's role, then sets levels for the genre, high-passes everything that isn't bass and cuts low-mid mud, compresses vocals/bass/leads that need it, pans the wide parts, sends to a reverb return, ducks bass under the kick (dance styles), and sets -6 dBFS of headroom for mastering, then measures robot vocals' clarity in the mix and, if other parts cover the words, raises the vocal and ducks the parts covering it. Saves a copy of the project first when it has a file. Leaves tracks the user already set up (EQ, compression, panning) alone on those points. Then check it: show_spectrogram, check_vocal_clarity, compare_mix_to_style.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Genre (get_genre_profile) to balance for, e.g. 'house', 'pop' | |
| reverb | No | Feed a reverb return (an existing one, or a new ReaVerbate) | |
| dry_run | No | Only report what it would do | |
| end_bar | No | Measure this range (default: the whole song) | |
| sidechain | No | Duck bass (and pads) under the kick in dance styles | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry destructiveHint=true, and the description adds substantial behavioral context beyond that: it performs a destructive multi-step mix, but saves a copy of the project first when it has a file, and deliberately leaves user-set EQ/compression/panning untouched. It also discloses resource behavior ('one render pass') and the -6 dBFS headroom outcome, which an agent needs to predict the effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the final sentence usefully points at verification tools, but the core is a sprawling run-on sentence enumerating every mixing step. Much of that enumeration is closer to internal implementation detail than selection-relevant information, so it is denser than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, destructive multi-step tool it covers the essentials: what is changed, what is protected, the safety copy, and the recommended follow-up checks; dry_run is left to the schema. Without an output schema the description carries the return burden, and it only implies reporting via the schema's dry_run text rather than describing normal results, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents style, reverb, dry_run, end_bar, sidechain and start_bar, setting the baseline at 3. The description echoes behavior associated with some flags (reverb return, sidechain ducking under kick, measuring a range) but adds no format or syntax detail beyond the schema, and never mentions dry_run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('A whole first mix in one call') and enumerates the concrete operations performed, from per-track measurement through role assignment, leveling, high-passing, compression, panning, reverb send, sidechain ducking and headroom. An agent can instantly distinguish it from narrow siblings like add_vocal_chain, setup_sidechain or master_to_target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear workflow context by routing the agent to verification tools ('Then check it: show_spectrogram, check_vocal_clarity, compare_mix_to_style') and states a preservation rule for already-configured tracks. It never says when NOT to use it (e.g. instead of the single-purpose mixing siblings), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_drum_kitA
Builds a drum kit from sample files in REAPER's own sampler (one ReaSamplOmatic5000 per drum, on the General MIDI keys), so drum patterns and genre grooves land on the right sounds and every sample can be swapped by name later. Works with any samples, including the ones other instruments ship with.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | An empty track, or one without another instrument | |
| samples | Yes | Drum lane -> sample file, e.g. {'kick': 'C:/.../XOX kick1.wav', 'snare': '...', 'closed hat': '...'}. Lanes: kick, snare, clap, rim, closed hat, pedal hat, open hat, low/mid/high tom, crash, ride, tambourine, cowbell, shaker, or any other name (placed from C4 up) | |
| release_s | No | Cut each hit this long after its note ends (for samples with long tails, e.g. 0.2 kicks, 0.45 taiko); default: play the whole sample | |
| velocity_db | No | Level at the softest velocity: -18 lets ghost notes and accents work, 0 ignores velocity | |
| trim_silence | No | Report samples that start late (silence at the start) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does substantial work: it discloses the implementation (one sampler instance per drum), the key-mapping convention (General MIDI), and the downstream benefit that samples can be swapped by name later. It does not cover permissions, error conditions, or what the call returns, but the core side-effect profile is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and mechanism; the second sentence handles legitimate scope concern (works with any samples) in a single clause. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex setup tool with a nested samples object and no annotations, the description covers purpose, mechanism, and sample scope adequately. It stops short of describing return values or error behavior, and there is no output schema to offload that, so a small gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; every parameter including the nested samples map, release_s, velocity_db and trim_silence already has schema-level documentation. The description adds no parameter detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Builds a drum kit from sample files'), naming the concrete mechanism (one ReaSamplOmatic5000 per drum on GM keys), which is far more than a tautology. It implicitly distinguishes itself from the general sampler tool, but does not explicitly separate itself from siblings like build_sampled_instrument or map_drum_kit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative guidance is given. The track prerequisite ('an empty track, or one without another instrument') lives only in the schema, and no sibling such as build_sampled_instrument or add_drum_pattern is referenced to route the agent. The scope note about accepting any samples is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_sampled_instrumentA
Builds a playable instrument from pitched sample files (strings, brass, pizzicato, choir, a sampled synth...): each sample covers a stretch of keys and follows the keyboard, tuned from the pitch it actually plays (measured by ear, with cents; sample file names are sometimes an octave off), with velocity response, note-offs and a release. Better than build_drum_kit for melodic parts, which plays each sample on one key at its own pitch.
| Name | Required | Description | Default |
|---|---|---|---|
| reach | No | Semitones the lowest and highest samples stretch beyond their pitch (past ~6 they sound unnatural) | |
| track | Yes | Track to put it on (created if there's none by that name) | |
| samples | Yes | Pitched samples of one instrument and articulation, e.g. a multisample set from find_samples (cello sustains at several pitches); one sample works too, over a smaller range | |
| low_note | No | Or the lowest note to cover, e.g. 'C2' | |
| high_note | No | And the highest, e.g. 'G5' | |
| release_s | No | Release after note-off (strings ~0.3, pizzicato/plucks ~0.15, pads ~1) | |
| velocity_db | No | Level at the softest velocity: -18 is expressive, 0 ignores velocity |
TDQS
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 meaningful behavior: per-sample key stretching, tuning from the actually-played pitch measured in cents, the caveat that file names are sometimes an octave off, plus velocity response, note-offs and release. It stops short of stating side effects on the project, whether it returns/creates anything inspectable, or auth/permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, and the second sentence delivers the sibling contrast. The parenthetical enumerations are slightly sprawling but each clause contributes actionable detail (tuning, octave discrepancy, velocity, release), so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter build tool with 100% schema coverage and no output schema, the description covers purpose, key behaviors and the alternative tool well. The main gap is silence on what the call produces or how it interacts with existing project state, though the schema partly covers the track-creation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters including reach, release_s and velocity_db are already documented in the schema. The description reinforces behavior (stretch of keys, velocity response, release) but adds no syntax or format detail beyond what the schema provides, which is the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Builds') and resource ('playable instrument from pitched sample files'), and explicitly names the sibling it is not (build_drum_kit). The parenthetical examples (strings, brass, pizzicato, choir, synth) pin down the input domain, so an agent can distinguish it from drum-kit and audio-insertion tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly routes melodic work here versus build_drum_kit ('Better than build_drum_kit for melodic parts'). It does not spell out prerequisites or when-not-to-use cases beyond that contrast, and find_samples is only referenced in the schema, so the guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_endingARead-only
Checks how the song ends against how it will be used, by rendering its last 16 seconds (plus the export tail) and measuring the level: a fade-out, a quiet or silent end, a tail cut off mid-ring, or a stinger that lingers. Also reports the song's length. With region, checks that region (its length and its end) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | continuous: the piece flows into the next one (a game crossfading tracks, a DJ mix): it must not fade out or end in silence. ending: a real ending that dies away. stinger: a short cue with a hard stop | continuous |
| region | No | Check this region (by name) instead of the whole project's end, e.g. one of several stingers in one project, exported with export_mix region= | |
| tail_seconds | No | The tail you'll export with (export_mix tail_seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the bar is lower. The description still adds real behavioral context: the specific 16-second window plus export tail it renders, that it measures level, that it also reports song length, and how region changes the target. It stops short of disclosing cost/thresholds or whether the render is a full offline bounce.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause is front-loaded and informative: the core check comes first, the detection list second, the length report third, and the region override last. There is no filler or restated name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the endings it detects and notes it reports song length, which approximates the return content, and annotations cover safety. What is still missing is any indication of thresholds or pass/fail semantics (how quiet is 'too quiet'), which matters for acting on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both tail_seconds and region are already fully documented in the schema. The description's 'plus the export tail' and 'with region, checks that region instead' essentially restate those schema entries rather than adding new meaning, so this lands at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('checks how the song ends') and goes further by naming the exact mechanism (renders the last 16 seconds plus export tail, measures level) and the conditions it detects (fade-out, quiet/silent end, tail cut mid-ring, lingering stinger). This clearly separates it from generic analysis siblings like analyze_audio or check_tuning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description ties the check to 'how it will be used', and the kind enum in the schema supplies the use-case framing (continuous/ending/stinger). There is no explicit when-to-use statement, no mention of when this check should precede an export or be skipped, and no named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_tuningARead-only
Is a part in tune? Renders the track and measures what actually sounds. For a MIDI part: each held note's pitch against the note played (cents off; a detuned patch, vibrato or glide shows up). For audio (vocals, samples, chops): how far its pitches sit from the nearest semitone (a detuned sample) and how many fall outside the key or chords. Mono lines measure best; chords are judged by their top note.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Audio tracks (no MIDI): the song's key, e.g. 'F# minor' | |
| track | Yes | The track to check | |
| end_bar | No | Default: the end of the project | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). | |
| chords_item | No | Audio tracks: or a MIDI item with the chords to check against |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries most of the burden, and it does: it discloses that the tool renders the track (non-trivial offline work), what it measures, and the accuracy caveats for chords and polyphony. It does not mention cost/latency or failure modes on empty or silent tracks, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the question it answers, then organized by input type with a closing caveat sentence. At roughly 85 words it is dense but nearly every clause carries information; the parenthetical asides are the only mild padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey what comes back, and it does describe the metrics (cents off, semitone distance, count outside key/chords). With 100% parameter coverage and a read-only annotation, only the absence of explicit cost/performance expectations leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it explains that 'key' and 'chords_item' are the reference used to count out-of-key pitches, which the schema labels but does not functionally tie together. This clarifies why those optional params change the result rather than just what they are.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific question tied to a concrete action ('Renders the track and measures what actually sounds'), then splits the behavior by input type (MIDI part vs audio). An agent can immediately tell this is a pitch-accuracy measurement tool and not a generic analyzer like analyze_audio or measure_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear applicability context: MIDI parts measure each held note's pitch, audio measures distance to nearest semitone and count outside key/chords, and it notes 'Mono lines measure best; chords are judged by their top note.' That is real when-it-works guidance, but it never names a sibling alternative or states an explicit exclusion, so it stays at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_vocal_clarityARead-only
How understandable a robot vocal's words are, alone and in the full mix, using STOI (the standard intelligibility measure) against the clean spoken words. Use it instead of guessing: if it's clear alone but not in the mix, the mix is burying it; if it's unclear alone, change the words, notes, voice or style.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | A robot vocal track (from add_robot_vocal) | |
| in_mix | No | Also measure it in the full mix (renders the master) | |
| end_bar | No | Default: where its words are | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating measurement, so the bar is lower. The description usefully adds that the clean reference is the spoken words and how to read the two-result (alone vs in-mix) outcome, but it does not disclose return format, the cost of rendering the master for the in-mix check, or timing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what is measured before the decision guidance. Every clause earns its place, with no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read-only diagnostic with no output schema, the description covers purpose, method, and how to act on the result, which is enough for correct invocation. It is slightly thin on what the returned values look like (no output schema exists), but the interpretation guidance largely compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters (track, in_mix, end_bar, start_bar) documented in the schema including defaults and the 1-based fractional bar convention. The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a robot vocal's word intelligibility) and the method (STOI against clean spoken words), so the agent knows exactly what is measured. It is clearly distinct from sibling diagnostics like check_tuning, check_ending, or show_spectrogram without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to 'use it instead of guessing' and provides interpretation rules (clear alone but not in mix = mix burying it; unclear alone = change words/notes/voice/style). It gives strong context but does not name alternative tools (e.g. analyze_audio, measure_tracks) or state when not to use it, so it falls short of the full when/when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_voice_leadingARead-only
Common-practice voice leading. Given chords, writes a four-part SATB realization that avoids parallel fifths/octaves, hidden octaves, crossings, bad spacing and unresolved leading tones/sevenths. Given voicings, lists every rule they break.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| chords | No | Chords to voice in four parts (SATB) by the rules | |
| voicings | No | Or your own voicings to check, each low to high, e.g. [['C3','G3','E4','C5'], ...] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is already declared, so the safety profile is covered; the description goes further by enumerating the exact musical rules enforced (parallel fifths/octaves, hidden octaves, crossings, spacing, leading tones/sevenths) and by stating the asymmetric behavior of the two modes. It still does not say whether the realization is returned or inserted into the project, nor what the output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the domain is stated first, then the two mode behaviors are contrasted. No filler, and the most important framing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does partially compensate by describing what each mode returns. But for a three-parameter, zero-required tool it omits key behaviors: whether an omitted 'key' is inferred, whether 'chords' and 'voicings' are mutually exclusive, and whether the generated realization is written into the project or just returned — a meaningful ambiguity next to siblings like add_midi_notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter carries a formatting example ('A minor', 'F# dorian'; voicings low-to-high). The description reinforces the chords-vs-voicings distinction but adds no syntax or constraint detail the schema lacks, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain (common-practice voice leading) and states exactly what the tool produces in each mode: an SATB realization from chords, or a rule-violation list from voicings. It is clearly separable from harmony siblings like analyze_harmony or harmonize_melody, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through input-type branching — pass 'chords' to generate, pass 'voicings' to check — which is genuinely helpful. However, there is no statement of when to prefer this over the other harmony tools, no prerequisites, and no handling of what happens if both or neither are supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_takeB
Makes a take the one that plays (for picking the best performance).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Or the take's name | |
| take | No | Take number from list_takes | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses only the playback effect ('the one that plays') and says nothing about whether other takes are muted, hidden, deleted, or how this interacts with comping or existing take lanes — significant gaps for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the core action front-loaded. The trailing parenthetical is mildly redundant with the main clause but costs little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-required-parameter tool with no output schema this is minimally adequate, but it omits the natural workflow linkage to list_takes (where take numbers come from) and the consequences of switching the active take.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents every parameter, including cross-references (item_id from create_midi_item/get_track_details, take from list_takes). The description adds no parameter meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and effect: making a take the one that plays. It implies selection/activation rather than listing, which distinguishes it from the neighboring list_takes and explode_takes. However, it doesn't explicitly name alternatives, so the differentiation is inferential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'for picking the best performance' hints at intent, but there is no statement of when this should be used versus explode_takes or list_takes, nor any prerequisite (e.g., that takes must exist first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chop_vocalA
Turns a real vocal sample into rhythmic vocal chops, the house / future-bass way: slices it at its syllables, lays the slices on a 16th-note pattern, and shifts each one (at most a tritone, correcting its tuning) onto the chord or key. Real voices beat robot vocals, so use this first when the user's samples have vocals. One item per chop, all ordinary audio to edit afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| bar | No | ||
| key | No | Or just keep chops in this key ('F minor') | |
| bars | No | ||
| path | Yes | A vocal sample: a phrase, acapella or vocal one-shot (find_samples role='vocal') | |
| seed | No | Another seed picks the slices in another order | |
| track | Yes | Track for the chops (created if there's none by that name) | |
| chords | No | Chord symbols, one per bar and repeating ('Fm9 Dbmaj7 Ab Eb'): chops move to their notes | |
| pattern | No | Rhythm in 16th steps, repeating: x = a chop, - = hold it, . = rest. e.g. 'x..x..x.x-..x...' (house), 'x.x.x.x.' (stutter), 'x---..x-x---....' (longer phrases) | x..x..x.x-..x... |
| chords_item | No | Or a MIDI item playing the song's chords: chops follow them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the algorithm (syllable slicing, 16th-note placement), the tuning constraint ('at most a tritone, correcting its tuning'), and the output shape ('One item per chop, all ordinary audio to edit afterwards'). It doesn't address failure modes or prerequisites, but for a creative generation tool the behavioral profile is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then usage routing, then result shape. The genre flavor ('the house / future-bass way') and 'one item per chop' line both carry information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no annotations and no output schema, the description gives the creative context, the process, and the return shape ('one item per chop, ordinary audio to edit afterwards'), which substitutes for a missing output schema. Parameter format details are left to the schema, which is acceptable given near-high coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema already documents most parameters (key, path, seed, chords, pattern, chords_item). The description adds concept-level meaning beyond that, notably the 'at most a tritone' tuning rule governing how the chords/key parameters act on each slice, tying the params together into a coherent effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Turns a real vocal sample into rhythmic vocal chops') and then details the transformation (slices at syllables, 16th-note pattern, shifts onto chord/key). It also distinguishes itself from the sibling add_robot_vocal with 'Real voices beat robot vocals, so use this first when the user's samples have vocals.' An agent can tell this apart from the robot-vocal sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this first when the user's samples have vocals' gives a clear selection condition, and 'Real voices beat robot vocals' strongly implies the add_robot_vocal alternative. It stops short of explicitly naming that alternative tool or stating an exclusion, but the routing intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_automationADestructive
Removes automation points in a range (default: all of them). Undoable.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | ||
| track | Yes | Track number (1 = top), track name, or "master" | |
| target | Yes | volume (dB), pan (-1 left .. 1 right), or fx (a plugin parameter: give fx and parameter) | |
| end_bar | No | Default: to the end | |
| parameter | No | ||
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds genuinely new context beyond that: the operation is 'Undoable' (reversibility) and defaults to clearing everything. That reversibility note is exactly the kind of extra behavioral signal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the action and immediately followed by the default scope and reversibility guarantee. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter destructive mutation with no output schema and partial annotation coverage, the definition covers the essentials: what is destroyed, whether it is reversible, and the default range. It is only slightly thin on the fx/parameter path and on prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% with descriptions on track, target, start_bar and end_bar but none on fx and parameter. The description reinforces the range concept and its all-by-default behavior, matching start_bar/end_bar, but supplies no syntax or format detail and says nothing about the fx/parameter pairing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Removes automation points') with scope ('in a range', default all), which cleanly separates it from the read_automation/write_automation siblings. It stops short of naming those siblings explicitly, so it lands just below the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope note '(default: all of them)' implies the caller can narrow the operation, but there is no explicit when-to-use guidance, no prerequisite (e.g., must automation exist, must a selection be set), and no pointer to write_automation or read_automation as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_mix_to_styleBRead-only
Measures the mix and compares it with a style profile: loudness, true peak, dynamics and low-end mono get verdicts; low end and tone are reported to judge by ear.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | ||
| track | No | "master" for the mix | master |
| end_bar | No | Default: end of project | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read. The description adds genuinely useful context beyond the annotation: it distinguishes dimensions that receive objective 'verdicts' (loudness, true peak, dynamics, low-end mono) from those merely 'reported to judge by ear' (low end, tone). It does not disclose the return shape or what a verdict looks like, but the verdict/by-ear split is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the core action and uses a colon/semicolon to partition the metrics cleanly. No wasted words, though the verdict/by-ear split compresses a lot into one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining results; it partially does so via verdicts vs by-ear reporting, but leaves the format of a 'verdict' and the origin of style profiles unspecified. Adequate but with visible gaps for a comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema largely documents track, start_bar, and end_bar. The description mentions the 'style profile' but never says where style values come from or how they relate to siblings like list_genres/get_genre_profile. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (measures the mix, compares it against a style profile) and enumerates the dimensions analyzed. The agent can tell what the tool produces, though it does not distinguish this from siblings like analyze_audio, measure_tracks, or master_to_target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. Given the cluster of analysis/comparison siblings (analyze_audio, measure_tracks, master_to_target), an explicit routing cue would be expected but is absent; usage is only implied by the description of what gets measured.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_busA
Creates a submix bus: the tracks send to it (post-fader) instead of straight to the master, so they can be processed and leveled together.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | Plugins to put on the bus, e.g. ['ReaComp', 'ReaEQ'] | |
| name | Yes | e.g. 'Drum Bus', 'Synth Bus' | |
| color | No | #RRGGBB | |
| tracks | Yes | Tracks that feed the bus |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the post-fader routing behavior, but says nothing about what happens to the tracks' existing master sends, whether existing routing is altered or destroyed, required permissions, or error behavior when a track reference is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a colon separating the action from its purpose; the routing explanation earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should shoulder more of the behavioral load. It covers purpose and routing well but omits the return value, the effect on pre-existing sends, and failure modes for a 4-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, tracks, fx, and color are already documented in the schema with examples. The description adds no parameter-level detail beyond what the schema provides, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Creates a submix bus') and adds the routing semantics that define a bus — tracks send post-fader to it instead of the master. It does not, however, distinguish this from conceptually adjacent siblings like create_folder or set_send, which an agent might reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (grouping tracks so they can be processed and leveled together) but gives no explicit when-to-use guidance, prerequisites, or alternatives such as create_folder or set_send. Usage is left to inference from the concept.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderA
Groups tracks in a folder: a new folder track above them that they play through, so the group can be leveled, muted and processed together (effects on the folder track act like a bus). Use create_bus instead to keep tracks where they are and send them.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | e.g. 'Drums', 'Backing Vocals' | |
| color | No | #RRGGBB | |
| tracks | Yes | Tracks to put inside it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that a new folder track is created above the tracks, that they route through it, and that effects on the folder act like a bus. It does not say whether the operation is reversible (undo), what happens to pre-existing folder membership, or what the call returns, which keeps it short of a 5 for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, front-loaded with what the tool produces, then the disambiguating alternative. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a structural mutation with no annotations and no output schema, the description covers the essential semantics: what gets created, how routing changes, and the bus behavior. The only notable gap is the absence of any statement about the return value or reversibility, which would matter for a routing-altering operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, color (#RRGGBB) and tracks are already documented in the schema. The description adds only the concept of grouping 'tracks', which the schema already conveys; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Groups tracks in a folder') and immediately explains the resulting structure: a new folder track above the grouped tracks that they play through. It also explicitly names the sibling it is not (create_bus), so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit alternative and the condition that selects it: 'Use create_bus instead to keep tracks where they are and send them.' This is a clean when-to-use-this vs when-to-use-the-other statement, which is exactly what an agent needs to route between the two grouping tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_midi_itemA
Creates an empty MIDI item (default 4 bars) and returns its item_id for adding notes, chords or drums.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| track | Yes | Track number (1 = top), track name, or "master" | |
| length_qn | No | Length in quarter notes, instead of length_bars | |
| start_bar | No | Bar to start at, 1-based; default: the edit cursor | |
| start_beat | No | Beat within the bar, 1-based (default 1) | |
| length_bars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the item is empty, defaults to 4 bars, and returns an item_id—useful beyond the schema—but omits permissions required, side effects, error conditions, and whether it overwrites existing items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It states the action, default behavior, and return value efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter creation tool with no annotations and no output schema, the description covers the core action and return value but leaves gaps: it doesn't explain track selection details (covered partially by schema), what happens on invalid input, or how to chain with sibling tools. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (moderate), so the schema already documents track, length_qn, start_bar, and start_beat. The description adds the default length ('default 4 bars') but does not clarify name, length_bars, or how parameters interact. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Creates) and resource (empty MIDI item), and clarifies it returns an item_id for later note/chord/drum operations. It distinguishes implicitly from siblings like add_midi_notes by emphasizing creation vs. adding, but does not name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for adding notes, chords or drums' implies this tool is a prerequisite step before note-adding tools, but there is no explicit when-to-use, when-not, or named alternative. The workflow is suggested rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_trackB
Adds a track, optionally with an instrument so MIDI on it makes sound. For instruments creaper knows, the result includes what they are and how they behave.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | #RRGGBB | |
| position | No | Track number it should become; default: last | |
| instrument | No | Instrument plugin to load, e.g. 'Analog Lab V', 'Pigments', 'ReaSynth' (see list_installed_fx kind='instrument') | |
| show_instrument | No | Open the instrument's window so the user can pick a sound |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the returned result describes known instruments ('what they are and how they behave'), which is real information beyond the schema. However, it says nothing about side effects on existing tracks when position is used, permissions, reversibility, or failure modes for unknown instruments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, with no padding. The second sentence is slightly imprecise ('what they are and how they behave') but is short and earns its place by describing the result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description's note about returned instrument metadata is genuinely needed and present. Still, for a 5-parameter mutation tool with no annotations, it omits the effect of inserting at a position and any error behavior, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents color, position, instrument, and show_instrument (only 'name' is bare). The description reinforces the instrument concept and notes the post-condition of loading an instrument, but adds no format, default, or constraint detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds a track') and adds the meaningful qualifier that an instrument can be attached so MIDI produces sound. This distinguishes it from adjacent tools like create_midi_item or create_bus, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-selection guidance. The phrase 'optionally with an instrument so MIDI on it makes sound' hints at a common case but never tells the agent when to prefer create_track over apply_track_template, create_bus, or other track-creation paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_drum_mapADestructive
Deletes a saved drum map (built-in maps can't be deleted, only overridden).
| Name | Required | Description | Default |
|---|---|---|---|
| instrument | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is covered. The description adds a constraint not present in structured data: built-in maps are protected and must be overridden instead. It does not state whether the call errors on built-ins or what happens to references to the deleted map.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with the action front-loaded and the constraint in a tight parenthetical. Nothing is wasted and no information is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, destructive intent is annotated, and there is no output schema to explain. However, the undefined 'instrument' argument and the unstated failure behavior for built-in maps leave gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'instrument' parameter, so the description carries the full burden and fails it. It never clarifies whether 'instrument' is the map name, the target drum instrument, or a map identifier, leaving a real ambiguity for invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deletes a saved drum map'), which cleanly separates it from save_drum_map and list_drum_maps among the siblings. It does not explicitly name those siblings or route the agent, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical gives an explicit when-not condition: built-in maps can't be deleted. That is real routing guidance beyond the bare purpose, though it doesn't name the alternative action or tool (e.g. override, or where to find saved maps).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemCDestructive
Deletes an item (undoable).
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the risky nature is covered structurally. The description adds one genuinely useful behavioral fact beyond the annotations: the operation is undoable, which softens the destructive profile. However it says nothing about scope of removal, whether the item's MIDI/audio content is preserved, or any confirmation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. It is efficient, though arguably too terse to be maximally useful for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with a destructiveHint annotation and a fully covered schema, the essentials are present, and the undo note helps. It still leaves open what exactly an "item" is in this DAW and whether deletion cascades (e.g. to associated notes or automation), which matters for a destructive tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and item_id is fully documented in the schema (MIDI item id from create_midi_item/get_track_details, or "selected"). The description adds no parameter detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Deletes an item" states a clear verb and resource, but "item" is generic and the definition does nothing to distinguish it from siblings like delete_track, delete_marker, delete_midi_notes, or delete_sound that share the same verb. An agent can infer it targets an arrangement item only by cross-referencing the schema's reference to create_midi_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g. edit_item vs split_item vs this), and no prerequisites. The parenthetical "(undoable)" is the only context offered and it is not framed as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_markerADestructive
Deletes a marker or region (not the audio or MIDI under it).
| Name | Required | Description | Default |
|---|---|---|---|
| marker | Yes | The marker's or region's name, or its number | |
| region | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint: true annotation already flags this as a write/destroy operation, so the description only needs to add context — and it does: it explicitly limits the blast radius by stating the audio or MIDI under the marker/region survives. It does not mention reversibility or whether undo (a sibling tool) applies, but the key destructive-scope question is answered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence, front-loaded with the action and resource, where the parenthetical clarification is the only extra clause and it clearly earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with a destructiveHint annotation and no output schema, the description covers what is deleted and what is preserved, which is the essential information. The notable remaining gap is the region flag's semantics, and secondarily whether the deletion is undoable, neither of which is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the 'marker' parameter is documented (name or number) in the schema, while 'region' has no description at all. The description's phrase 'marker or region' hints that region is a mode switch, but it never explains how the boolean interacts with the marker argument, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (deletes) plus specific resource (marker or region), and the parenthetical bounds what is NOT removed (audio/MIDI). It is unambiguous and distinguishable from add_marker and edit_marker by verb alone, but it never names those siblings or routes the agent between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says to use edit_marker to rename/move instead, or that delete_item handles the underlying media. The parenthetical describes scope of deletion, not the conditions that select this tool over its neighbors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_midi_ccADestructive
Deletes controller events matching the filters (all of them if none are given), e.g. clear the sustain pedal (cc=64) or old pitch bends. One undo step.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| end | No | ||
| kind | No | ||
| start | No | ||
| channel | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true already flags this as a destructive operation, so the bar is lower; the description still adds real value by disclosing the dangerous no-filter default (deletes everything) and that the change is recoverable via 'One undo step'. It does not say how many events were removed or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, front-loaded with the action and followed by the destructive default and the undo reassurance. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, filter-driven tool with no output schema and no docs on most params, the description covers the essential risk (bulk deletion when unfiltered) and reversibility. It is close to complete, though the missing per-parameter semantics is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 17% schema coverage, the description must carry the load. It explains the collective filter semantics and the null-means-all default (not stated in the schema), and hints at cc=64, but never clarifies kind, channel, or the start/end time units, leaving five params largely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Deletes') and resource ('controller events'), and the qualifier 'matching the filters' plus the sustain-pedal/pitch-bend examples make the scope unmistakable. The contrast with sibling verbs (add_midi_cc, get_midi_cc) and with delete_midi_notes is clear from 'controller events', 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: clear the sustain pedal (cc=64) or old pitch bends, and states the important default that all matching events are removed when no filters are passed. No explicit routing to alternatives (get_midi_cc, delete_midi_notes), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_midi_notesADestructive
Deletes notes from a MIDI item; with no filters, all of them.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Only notes starting before this QN position | |
| pitch | No | Only this pitch | |
| start | No | Only notes starting at or after this QN position | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond that: deletion scope is controlled by filters, and omitting them deletes every note in the item. It does not mention irreversibility/undo or confirmation, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and immediately qualifies it with the unfiltered-destruction caveat. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema needed, annotations covering destructiveness, and full schema parameter documentation, the description supplies what is missing most: that unfiltered calls delete everything. Minor gaps remain, such as whether filters combine as AND and whether the deletion is undoable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (item_id, start, end, pitch) are already documented in the schema, establishing a baseline of 3. The description only restates the filter concept ('with no filters') without adding syntax, units, or combination semantics beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (deletes) and resource (notes from a MIDI item), which is enough to distinguish it from delete_item, delete_midi_cc, and delete_note. However, it does not explicitly contrast itself with the other note-editing/deleting siblings such as edit_midi_notes or delete_note, so sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'with no filters, all of them' implicitly tells the agent that calling without filters is allowed and destructive, which is a form of usage guidance. There is no explicit when-to-use vs. alternative (e.g., 'use edit_midi_notes to remove a subset by editing'), so guidance remains implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_noteCDestructive
Deletes a saved note.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note's id from find_notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description only restates the mutation with no added behavioral context. It omits whether deletion is permanent, whether it can be undone (an 'undo' sibling exists), or any confirmation/permission requirements expected of a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and waste-free. It is appropriately sized for a trivial single-parameter tool, though its brevity comes at the cost of any useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no output schema, the description should at least indicate irreversibility or recoverability (undo, trash). It provides no such context, so an agent cannot judge the risk or expected outcome of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented in the schema as 'The note's id from find_notes'. The description adds nothing beyond this, so the baseline 3 applies since the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deletes a saved note'), which is unambiguous against most siblings. However, with many delete_* siblings (delete_sound, delete_marker, delete_midi_notes, delete_item), it does not clarify that this targets a saved text note rather than MIDI notes — the 'saved' qualifier hints at this but does not 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.
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 or prerequisites. It never distinguishes itself from delete_midi_notes or delete_marker, nor does it mention that note ids come from find_notes/save_note, 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.
delete_soundBDestructive
Deletes a sound from the library. This can't be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The sound's exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already declares this is a destructive operation, so the bar is lower. The description adds the useful irreversibility note ('can't be undone'), which reinforces permanence beyond the annotation's binary flag. However, it says nothing about side effects (e.g., whether the sound must be unused) or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the critical warning. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description plus annotations cover the essentials: what it does, that it is destructive, and that it is irreversible. Only edge-case behavior (e.g., deleting a sound still referenced by a project) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single 'name' parameter is fully documented in the schema as 'The sound's exact name.' The description only references 'a sound from the library' and adds no matching or syntax detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Deletes a sound from the library.' An agent can immediately tell what it does. It stops short of naming or contrasting with siblings like update_sound or delete_drum_map, but the purpose 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.
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 mention of alternatives. The destructive framing implies caution, but the description never states conditions or prerequisites for deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_trackADestructive
Deletes a track and everything on it (undoable). Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track number, or its exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is partly covered. The description adds two things beyond that: the cascading scope ('everything on it') and reversibility ('undoable'), plus the confirmation requirement. That said, it doesn't state return behavior or whether undo history/automation is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, followed by the caveat. Every clause earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, irreversible-looking mutation whose destructive nature is already flagged by annotations, this covers scope, reversibility, and a confirmation step. Only minor gaps remain (e.g., whether the removal frees sends/routing or affects undo history), which are acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the track parameter documented as 'Track number, or its exact name'. The description adds nothing about the parameter beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Deletes) and resource (a track), and clarifies scope with 'everything on it'. This distinguishes it cleanly from the many sibling deletions (delete_item, delete_sound, delete_marker, delete_note, etc.) that target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Confirm with the user first' gives a clear invocation precondition, which is real guidance. However, it never names alternatives (e.g., remove_fx, freeze_tracks, or simply muting) or explains when deleting a track is preferable to those, so the when-to-use-vs-alternatives dimension is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_itemB
Copies an item (e.g. repeat a 4-bar loop, or reuse the chorus). Copies are placed back to back.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| start_bar | No | Where the first copy goes; default: right after the item | |
| start_beat | No | Beat within the bar, 1-based (default 1) |
TDQS
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 one real behavioral trait: copies are placed back to back (i.e. appended sequentially rather than stacked). It says nothing about what identifiers the new copies receive, whether the source item is left untouched, or how the 256-copy ceiling behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. The parenthetical examples earn their space by grounding an abstract operation, though they slightly delay the behavioral fact about placement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A four-parameter mutation tool with no annotations and no output schema; the description omits return behavior (what ids/handles the new copies get) and the multi-copy semantics. Adequate for basic invocation but leaves real gaps for an agent planning follow-up operations on the duplicated items.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, with item_id, start_bar and start_beat documented in the schema itself, so the schema does the heavy lifting. The description adds no parameter meaning at all – notably it never mentions that a count parameter exists for multiple copies, which is the key semantic distinction from 'copy once'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (copies) and resource (item), and the examples ('repeat a 4-bar loop', 'reuse the chorus') make the operation concrete. It does not distinguish itself from adjacent siblings such as create_midi_item or place_loop, so an agent must infer the boundary 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the musical examples rather than stated: there is no explicit 'use this when you want N consecutive copies, otherwise use X' routing. No alternatives or exclusions are named, and no prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_itemC
Moves, trims, fades, re-pitches or otherwise edits an audio or MIDI item.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Loop the source when the item is longer than it | |
| mute | No | ||
| name | No | ||
| color | No | #RRGGBB | |
| track | No | Move the item to this track | |
| item_id | Yes | Item id (audio or MIDI) from get_track_details, or "selected" | |
| playrate | No | Audio items: speed, 1 = normal | |
| length_qn | No | ||
| start_bar | No | Move the item to this bar | |
| volume_db | No | ||
| start_beat | No | Beat within the bar, 1-based (default 1) | |
| length_bars | No | ||
| preserve_pitch | No | Audio items: keep pitch when changing playrate | |
| fade_in_seconds | No | ||
| pitch_semitones | No | Audio items: transpose | |
| fade_out_seconds | No | ||
| trim_start_seconds | No | Trim this much off the start, keeping the content in place (negative extends) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether the edit is destructive, how unspecified properties are treated, whether parameters combine in one call, or whether the item must exist first — a serious gap for a 17-parameter mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the operation list front-loaded and no filler. The catch-all 'or otherwise edits' weakens precision slightly but costs nothing structurally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 17 parameters, no annotations, no output schema and only 59% schema coverage, the one-line description is not sufficient. It omits which parameters apply to audio versus MIDI, interaction/ordering between move, trim and fade parameters, and any notion of undo or reversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 59%, and the description's high-level verb list loosely mirrors the parameter groups (move/trim/fade/re-pitch). It adds the useful signal that some parameters are audio-only, but relies on the schema for the rest; baseline 3 fits given partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (edits) plus an enumeration of the operations it performs (moves, trims, fades, re-pitches) on a bounded resource (audio or MIDI item). An agent can place it apart from create_midi_item, delete_item, split_item and duplicate_item, though those siblings are never named to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives named. The only faint signal is 'otherwise edits', which implies modifying an existing item, but nothing tells the agent when to pick this over split_item or duplicate_item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_markerB
Renames, moves, resizes or recolors a marker or region (e.g. rename 'Chorus' to 'Chorus 1', or extend the bridge region to bar 49).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | #RRGGBB | |
| marker | Yes | The marker's or region's name, or its number | |
| region | No | True for a region, False for a marker, when names clash | |
| end_bar | No | Regions: new end bar | |
| end_beat | No | ||
| new_name | No | ||
| start_bar | No | Bar, 1-based | |
| start_beat | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state permissions, reversibility, side effects, error behavior, or how name clashes are resolved beyond what the schema already says about the region parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with two compact examples. Every element earns its place and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an unannotated mutation tool with eight parameters and no output schema, the description is adequate but incomplete. It covers the article of the operations but omits critical behavioral context such as conflict resolution, required permissions, and side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so the description must compensate. It loosely maps actions (rename, move, resize, recolor) to parameters like new_name, start_bar/end_bar, and color, but leaves end_beat, new_name, and start_beat without added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (renames, moves, resizes, recolors) and the target resource (marker or region), with examples that make the scope unambiguous. It is clearly distinguishable from siblings like add_marker and delete_marker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as add_marker, delete_marker, or edit_item. The examples illustrate capabilities but do not establish when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_midi_notesA
Edits existing MIDI notes: quantize (with swing), humanize, transpose, snap to a scale, set or ramp velocities, strum chords, make legato, and develop motifs (diatonic transposition, inversion, retrograde, augmentation, harmony lines, sequences, negative harmony). Filters pick which notes; the rest stay as they are. One undo step.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Only notes starting before this QN position | |
| key | No | Scale root, e.g. A, F#, Bb | |
| axis | No | invert: the pitch to mirror around (default: the first note) | |
| grid | No | Quantize grid in QN: 1 = quarters, 0.5 = 8ths, 0.25 = 16ths, 1/3 = 8th triplets | |
| below | No | add_harmony: put the new line below | |
| scale | No | major, minor, dorian, mixolydian, harmonic minor, minor pentatonic, blues... | |
| start | No | Only notes starting at or after this QN position in the item | |
| steps | No | Scale steps for diatonic_transpose, add_harmony (2 = a 3rd) and sequence | |
| swing | No | ||
| timing | No | Humanize: max timing shift in QN | |
| channel | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| repeats | No | sequence: how many transposed copies | |
| strength | No | ||
| velocity | No | ||
| operation | Yes | quantize (grid, strength, swing), humanize (timing, velocity_amount), transpose (semitones), snap_to_scale (key, scale), velocity (velocity | velocity_start+velocity_end ramp | velocity_scale), strum (strum_delay, strum_direction), legato (legato_gap). Motif development (need key, and scale unless key names one like 'A minor'): diatonic_transpose (steps), invert (mirror around the first note or axis, in the scale), retrograde (reverse), augment / diminish (double / halve durations), add_harmony (parallel line steps away: 2 = 3rds, 5 = 6ths; below; pass chords_item whenever the song has chords, so the line follows them), sequence (repeats, steps), negative_harmony | |
| pitch_low | No | Only notes at or above this pitch | |
| semitones | No | ||
| legato_gap | No | ||
| pitch_high | No | Only notes at or below this pitch | |
| chords_item | No | add_harmony: a MIDI item playing the song's chords (e.g. the keys part). Harmony notes then follow the chord in force instead of only the key, so chords from outside the key don't clash | |
| strum_delay | No | QN between strummed notes | |
| velocity_end | No | ||
| selected_only | No | Only the notes selected in REAPER's MIDI editor | |
| snap_direction | No | nearest | |
| velocity_scale | No | ||
| velocity_start | No | ||
| strum_direction | No | up | |
| velocity_amount | No | Humanize: max velocity change | |
| quantize_lengths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose real behavioral traits: mutations are scoped ('the rest stay as they are') and reversible in a specific granularity ('One undo step'). It does not cover auth/preconditions or return format, but for a MIDI edit tool the disclosure of partial-edit and undo semantics is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and operations, then closes with the two most behaviorally important facts (filter scoping, undo granularity). Dense but every clause earns its place given 15 operations; the operation enumeration is long but justified by the breadth of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 30-parameter, 15-operation tool with no output schema and no annotations, the description covers the operation space, filter scoping, and undo semantics adequately. It leans on the schema for per-parameter detail, which is reasonable given the rich enum description, leaving only minor gaps (prerequisites, selection interaction).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, between the low and high baselines, so the schema already documents much of the per-parameter meaning (grid, key, scale, steps, chords_item, etc.). The description reinforces the operation groupings but adds little parameter syntax beyond what the schema's own operation and property descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Edits existing MIDI notes') and enumerates the full operation surface (quantize, humanize, transpose, snap, velocity, strum, legato, motif development). It cleanly distinguishes itself from siblings like add_midi_notes, delete_midi_notes, and get_midi_notes by the 'existing' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Edits existing MIDI notes' plus 'Filters pick which notes; the rest stay as they are' gives clear context for when this applies versus creation or deletion tools. It stops short of explicitly naming the alternative tools or stating exclusions, so it is clear context but not full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explode_takesA
Puts each take of an item on its own new track, to compare or comp them side by side.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key side effect — one new track is created per take — which is genuine behavioral value. However, it doesn't say whether the source item survives, whether the operation is reversible/undoable, or how the new tracks are named or routed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the effect and closed with the rationale. Zero filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a one-parameter tool with no output schema: the agent knows what happens and why. It falls short on the state of the original item and on whether this applies to audio takes as well as the MIDI item implied by the schema, which matters for a track-creating operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required parameter fully documented in the schema (item_id, including the 'selected' sentinel). The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-effect ('puts each take on its own new track') plus the motivating use case ('compare or comp them side by side'), which is far clearer than a name restatement. It doesn't explicitly contrast with nearby take tools like list_takes or choose_take, but the resource and effect are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'to compare or comp them side by side' implies the scenario in which the tool is useful, but there is no explicit when-to-use/when-not guidance and no named alternative (e.g., choose_take for selecting a single take, or list_takes for inspection).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_mixA
Exports the finished mix (the master, with its effects) to an audio file and reports its loudness and true peak. Use master_to_target first for a release master.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name without extension; default: the project's name | |
| folder | No | Default: an 'Exports' folder next to the project | |
| format | No | wav or flac (lossless), mp3 (320 kbps), ogg | wav |
| region | No | Export just this region (by name), e.g. 'Chorus' | |
| end_bar | No | Default: end of project | |
| bit_depth | No | WAV/FLAC: 24 for masters, 16 (dithered) for CD | |
| overwrite | No | ||
| start_bar | No | ||
| ceiling_db | No | ||
| ogg_quality | No | OGG Vorbis quality, 0 to 1 (0.6 is about 150-190 kbps) | |
| sample_rate | No | e.g. 44100 or 48000; default: the project's | |
| target_lufs | No | Turn the file up/down to this loudness (gain only; true peak kept under the ceiling) | |
| tail_seconds | No | Extra time after the end for reverb and delay tails | |
| avoid_clipping | No | Turn the file down instead of clipping when the mix peaks too high |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It discloses that it exports the master with its effects applied and reports loudness and true peak, which is meaningful behavior. It does not, however, cover overwrite behavior, where files land, or the gain-only adjustment caveat beyond what already lives in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The core action is front-loaded and the sequencing hint follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with no output schema and no annotations, the description does mention the return-relevant facts (loudness and true peak). It is adequate, though it could say more about the write side effects given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 79%, so the schema itself documents nearly all 14 parameters well. The description adds no additional parameter semantics (formats, bit depth, targets) beyond what the schema already carries, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Exports) plus the exact resource (the finished mix/master with its effects) and the outputs (audio file, loudness and true peak report). This is clear, but it does not explicitly distinguish itself from close siblings like export_stems and export_regions, only mentioning master_to_target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a useful workflow hint ('Use master_to_target first for a release master'), which implies sequencing. However, there is no when-not guidance and no explicit contrast with export_stems/export_regions, so the agent must infer when to choose this over those siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_regionsA
Exports each region of the project as its own file named after the region (for
sound effects and their variations: shot_01, shot_02 ...), in one render pass.
One-shots: mono unless listed in stereo, DC removed, the silence before the sound
cut so it starts within a millisecond of the file start, trailing silence dropped,
peak set to peak_db, and a warning when the region cuts the sound off before it
dies away. Loops: seamless (crossfaded seam, no fade at either end), their length
reported. 16-bit files are dithered; 24-bit aren't. Put each sound in its own region
with a little room after it (for its tail), then call this once.
| Name | Required | Description | Default |
|---|---|---|---|
| loops | No | Regions that loop (by name or pattern, e.g. 'crowd_bed*', 'skate_stride'): made seamless by crossfading what follows the region into its start, so leave the sound running a little past the region's end | |
| folder | Yes | Where the files go, e.g. a game's assets/audio/sfx folder | |
| stereo | No | Regions to keep stereo, by name or pattern ('crowd_*', 'organ_*', '*_room'); everything else is mono | |
| peak_db | No | Peak level for one-shots (loops keep their level) | |
| regions | No | Region names to export; default: every region | |
| bit_depth | No | 24 for game audio | |
| overwrite | No | ||
| sample_rate | No | e.g. 44100 or 48000 | |
| loop_crossfade_s | No | Length of the loop seam's crossfade |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it describes one-shot processing (mono unless listed in stereo, DC removed, leading/trailing silence trimmed, peak set), loop handling (seamless crossfade, length reported), dithering by bit depth, and even a warning when a region clips the sound's tail. It omits overwrite behavior, permission requirements, and error/return handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior (region-per-file export in one pass) is front-loaded, and the remaining sentences are dense with specifics rather than filler. It is long, but each clause conveys distinct processing behavior, so little reads as waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description is substantially complete on processing behavior and workflow. Remaining gaps are overwrite semantics, return value, and any permission/cost considerations, which are minor relative to what is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 89%, so the baseline is 3. The description adds interpretation for peak_db, stereo, and loops (explaining how they change output), but parameters like overwrite, sample_rate, folder, and bit_depth are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: exports each region of the project as its own file named after the region, in one render pass. This clearly distinguishes it from a single-file or stem export. It does not, however, explicitly distinguish itself from siblings like export_mix or export_stems, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing instruction ("Put each sound in its own region with a little room after it, then call this once") gives useful preparation context and implies the when. But it never names or contrasts the alternative export tools (export_mix, export_stems), so the choice among them is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_stemsA
Exports each track as its own audio file (post-fader, with its effects but not the master's), all the same length so they line up from the same start: for mixing elsewhere, remixes, or sharing parts.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Default: 'Exports/<project> stems' next to the project | |
| format | No | wav | |
| tracks | No | Tracks to export; default: every track with items | |
| end_bar | No | ||
| bit_depth | No | ||
| overwrite | No | ||
| start_bar | No | ||
| ogg_quality | No | OGG Vorbis quality, 0 to 1 (0.6 is about 150-190 kbps) | |
| sample_rate | No | ||
| tail_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses the signal chain ('post-fader, with its effects but not the master's') and the alignment behavior ('all the same length so they line up from the same start'). It leaves some gaps, such as overwrite behavior and error handling when files already exist, but the core behavioral traits are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that opens with the core action and then adds the most important qualifiers. No filler or repetition; every phrase contributes useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, and key behavioral traits well. But for a 10-parameter tool with no annotations, no output schema, and only 30% schema description coverage, it leaves parameter semantics largely undocumented, which limits an agent's ability to invoke it correctly with non-default settings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 30% across 10 parameters. The description does not explain any parameter names or semantics (e.g., start_bar, end_bar, tail_seconds, bit_depth, sample_rate, overwrite). It only describes the overall output concept, so it fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Exports each track as its own audio file.' The parenthetical details (post-fader, track effects but not master) further clarify the output. It does not explicitly name or contrast with siblings like export_mix or export_regions, so sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear use contexts: 'for mixing elsewhere, remixes, or sharing parts.' This tells the agent when the tool is appropriate. However, it does not state when not to use it or name alternative tools for adjacent tasks, leaving the agent to infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_vocal_midiA
For a real singing voice: writes a melody item and its lyrics as a MIDI file that singing synths (Synthesizer V, ACE Studio, VOCALOID, OpenUtau) import with the words on the notes, at the song's tempo and positions. Says which singers are installed and how to load it. The singer renders the vocal; then insert_audio_file it at bar 1 (the file starts at the song's start) and mix it like any vocal.
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | The singer's melisma mark: '-' (Synthesizer V, ACE Studio, VOCALOID) or '+' (OpenUtau) | - |
| name | No | File and part name | Lead Vocal |
| lyrics | Yes | One syllable per note: 'dan-cing in the dark _' (hyphens split syllables, '_' holds) | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses useful behavior: the file starts at the song's start, output goes at bar 1, tempo and positions are baked in. But it doesn't state whether the export mutates the project, what permissions are needed, or whether the file is written to disk vs returned (no output schema), leaving a real behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, but the first sentence is a long run-on that mixes purpose, consumers, and output semantics. The workflow guidance is useful but not tightly front-loaded. Some redundancy between 'writes a melody item' and the export framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param export tool with no annotations and no output schema, the description covers purpose, workflow, and downstream consumption well. It omits the return shape (does it return a file path? a status?) which matters when no output schema exists, keeping it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters including the melody mark and lyric syntax. The description adds almost no parameter detail beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (writes/exports) and resource (melody item + lyrics as MIDI file) and directly names the downstream consumer class (singing synths). Distinguished from siblings like write_melody or export_mix by its vocal-MIDI target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains the workflow context (export the MIDI, then render the vocal with the singer, then insert_audio_file at bar 1, then mix). That is strong when-to-use guidance for the follow-up steps. However it does not explicitly name when NOT to use it versus alternatives like add_robot_vocal or write_melody.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_modulationARead-only
How to change key: how close the keys are, pivot chords they share, and chord routes from smoothest to most dramatic (pivot, ii-V, common tone, chromatic mediant, truck-driver, diminished pivot).
| Name | Required | Description | Default |
|---|---|---|---|
| to_key | Yes | e.g. 'E major', 'A minor' | |
| from_key | Yes | e.g. 'C major' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already tells the agent this is a safe non-mutating analysis call. The description adds value by enumerating the analysis dimensions and the named modulation types (pivot, ii-V, chromatic mediant, etc.), which compensates somewhat for the absent output schema, but says nothing about result format or whether one route is ranked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. The parenthetical list of route types is dense but each item earns its place by signaling the tool's output vocabulary; only the truncated opening ('How to change key:') is slightly awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names what the analysis returns (closeness, pivot chords, route types) and both required parameters are schema-documented. It stops short of describing ordering ('smoothest to most dramatic' is mentioned, which helps) but format/pagination details remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both from_key and to_key documented and exampled in the schema. The description implies a pair of keys but adds no format or constraint detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose - computing how to change key between two keys - and enumerates the specific dimensions returned (key closeness, shared pivot chords, chord routes). It is clearly distinct from theory siblings like reharmonize or suggest_progressions, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Without a stated verb or scenario, usage is only implied: you would call it when planning a key change. There is no explicit when-to-use or when-not-to-use guidance relative to reharmonize, analyze_progression, or suggest_progressions, all of which live in the same harmonic-analysis neighborhood.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_notesBRead-only
Recalls saved notes. Check for the user's preferences and plugin notes before designing sounds or mixing.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | ||
| search | No | Words to look for, e.g. a plugin name or 'pad' | |
| subject | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this as a safe read. The description adds that it surfaces preferences/plugin notes as inputs to later tasks, but says nothing about return format, matching behavior, or how topic/search/subject combine to filter. With annotations covering safety, this is an added-context-only score of 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action before the usage hint. No filler or repetition; only slightly terse given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and low parameter documentation mean the description must carry more, but it leaves 'subject' undefined and gives no sense of what a recall returns or how results are ranked/filtered. Adequate for a simple read tool, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% – 'search' is documented in-schema but 'topic' and 'subject' are not. The description only obliquely touches two topic values ('preferences', 'plugin') and never explains what 'subject' means or how it differs from 'search'. It does not compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Recalls saved notes.' The mention of 'preferences and plugin notes' clarifies the domain (user notes, not MIDI/instrument notes). It does not explicitly distinguish itself from siblings like get_instrument_notes or get_midi_notes, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use: 'Check for the user's preferences and plugin notes before designing sounds or mixing.' This establishes a workflow trigger. It lacks explicit exclusions or named alternatives (e.g. save_note/delete_note), so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_samplesBRead-only
Searches the user's sample folders by name, role, loop tempo and key, and (by default) listens to the top results to say what each actually is.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | Loops at (or double/half) this tempo | |
| key | No | Loops in this key, e.g. 'A minor' | |
| kind | No | Loops (with a tempo) or single hits | |
| role | No | kick, snare, clap, closed hat, open hat, crash, ride, tom, rim, shaker, percussion, 808, bass, pad, lead, keys, pluck, chord, arp, vocal, fx, guitar, strings, brass, loop | |
| listen | No | Also analyse the top results by ear (type, pitch, tempo, key) | |
| search | No | Words in the file or folder name, e.g. '808 kick', 'vinyl', 'amen' | |
| refresh | No | Re-scan the folders for new files | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered, and the schema itself documents the default-on audition behaviour via the 'listen' parameter. The description's mention that it 'listens to the top results' adds a little framing but largely restates what the schema and annotations already supply, and says nothing about cost/latency of the analysis pass.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence that leads with the verb and resource, with no padding. The trailing clause 'to say what each actually is' is somewhat colloquial and overlaps with the schema's own 'listen' description, but the surface is still tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema and no required arguments, the description covers the filtering surface adequately but is silent on the shape/timing of results and on how filters combine. Nothing an agent needs to call it is missing, but the picture is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the parameters are already well documented (role even carries its full enum-like list). The description only echoes the filter axes already described per-parameter and adds no syntax, format, or default details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (searches) and resource (the user's sample folders) plus the filter axes (name, role, tempo, key), so the operation is unambiguous. It is clear enough to separate from generic listers like sample_folders and list_sounds, but it never names or scopes out the closest sibling (analyze_sample), which also analyses audio, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing 'searches the user's sample folders' tells the agent this is for locating samples by attribute, but there is no statement of when to prefer this over analyze_sample or sample_folders, and no prerequisites or exclusions. The '(by default)' clause hints at the listen flag's effect but is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freeze_tracksA
Freezes tracks: renders them to audio and takes their plugins offline to save CPU (heavy synths, long effect chains), or unfreezes them to edit again.
| Name | Required | Description | Default |
|---|---|---|---|
| mono | No | ||
| tracks | Yes | ||
| unfreeze | No | Undo a freeze: bring back the original items and plugins |
TDQS
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 core mechanism (render to audio, offlining plugins) and the reversibility ('unfreezes them to edit again', implying frozen tracks are not editable), but says nothing about prerequisites, whether automation/routing changes, the time/disk cost of rendering, or the state of frozen tracks if the source is later edited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the operation and followed by the mechanism, the parenthetical rationale, and the reverse operation. Tight and readable; only 'to edit again' is mildly redundant with the preceding clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations and no output schema, so the description must stand alone; it covers the what and why but leaves 'mono' unexplained, gives no indication of success/return behavior, and omits constraints such as whether frozen tracks can still be edited or unfrozen repeatedly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (just the 'unfreeze' param is documented), so the description should compensate. It clarifies freeze vs unfreeze semantics, but the 'mono' flag is undocumented in both description and schema, and the 'tracks' identifier format (name string vs integer index) is never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource (freeze/unfreeze tracks) with the mechanism spelled out: renders to audio and takes plugins offline. No sibling tool does freezing/unfreezing, so the agent can distinguish it immediately from create_track, set_track_properties, or export_stems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: freeze when CPU is strained by heavy synths or long effect chains, unfreeze when you need to edit again. It states when each direction applies but names no alternative tool (e.g., bouncing or exporting stems) for the same goal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_parametersARead-only
Lists an FX's parameters with their current value (0-1) and displayed value (e.g. '-18.0 dB'). Switches and menus show how many positions they have, and their options when the plugin can name them. Synths can have hundreds of parameters, so search narrows it.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| limit | No | ||
| track | Yes | Track number (1 = top), track name, or "master" | |
| offset | No | ||
| search | No | Only parameters whose name contains these words, e.g. 'filter cutoff' | |
| include_midi_cc | No | Also list placeholder parameters (VST3 'MIDI CC' helpers, preset/controller plumbing; normally hidden) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already declares the safety profile, so the bar is lower, yet the description adds genuine behavioral context: the value format (0-1 vs displayed), that switches/menus expose position counts and named options, and that parameter counts can be very large. It does not describe pagination behavior for the limit/offset pair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose and each adding a distinct piece of information (return shape, switch/menu behavior, search rationale). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the returned value format and switch/menu representation, and annotations cover read-only safety. The main gap is pagination behavior for limit/offset, but overall it is sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (mid), and the description explains the search parameter's narrowing behavior, mapping meaningfully onto one param. However, limit and offset carry no schema description and the description does not compensate for them, leaving pagination semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Lists) and resource (an FX's parameters), and clarifies what the listing contains (current 0-1 value plus displayed value). It is clearly a read tool against siblings like set_fx_parameter/set_fx_parameters, though it does not name 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence implies usage ('Synths can have hundreds of parameters, so search narrows it') which hints at when to use search, but there is no explicit when-to-use/when-not guidance or reference to the sibling set/update tools that modify the same parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_genre_profileARead-only
Everything creaper knows about a genre: history and touchstones, tempo, feel and swing, modes and favourite keys, progressions (spelled in a key), harmony habits, voicing and comping, bass, melody, drum groove (ready for add_genre_groove), form, instruments, sound design, production, mix targets and theory notes.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Show the progressions in this key (default: the genre's favourite) | |
| genre | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read. Beyond that, the description usefully discloses the breadth and nature of returned content (touchstones, modes, progressions, mix targets, theory notes), which is real added context. It omits any note on auth, rate limits, or fallback behavior for unknown genres.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core purpose, which is good, but the remainder is a long comma-separated enumeration that reads as a run-on list rather than a structured summary. Appropriately scoped for a comprehensive tool, but could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by listing the content categories returned. Combined with readOnlyHint covering the safety profile, an agent has enough to call it correctly, though it lacks return-format or unknown-genre handling detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the 'key' parameter is documented in the schema and 'genre' is self-evident. The description reinforces 'key' by noting progressions are 'spelled in a key' and references 'favourite keys', but adds no syntax or format detail (e.g., 'C', 'F# minor') beyond what the schema already conveys, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves everything about a genre and enumerates the specific content areas (history, tempo, harmony, groove, production, etc.), which is a specific verb+resource. It does not explicitly contrast itself against siblings like list_genres or get_instrument_notes, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers you call this to learn about a genre before composing or producing. There is no explicit when-to-use/when-not guidance and no named alternative (e.g., list_genres vs. this profile fetch), though the mention of 'ready for add_genre_groove' hints at a workflow link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrument_notesBRead-only
Note names the track's instrument reports (drum kits and samplers often name their notes: 'Kick', 'Snare Rim'...), plus any saved drum map for it.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track number (1 = top), track name, or "master" | |
| channel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read, lowering the bar. The description usefully clarifies the return content (instrument-reported note names and a saved drum map), but adds nothing on failure modes, e.g. what happens for an instrument that reports no note names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste. The parenthetical example ('Kick', 'Snare Rim') earns its place by concretely illustrating the output, though the sentence is slightly awkwardly framed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema read tool the description conveys the salient return content, but it leaves the undocumented 'channel' parameter and the routing vs. sibling tools unexplained, so it is only marginally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'track' is well described in the schema (number, name, or "master"), but 'channel' has no description anywhere, and the description does not compensate for it or add meaning beyond the schema's track text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it retrieves the note names a track's instrument reports, plus any saved drum map. This is meaningfully distinct from MIDI-content siblings, but the description never names get_midi_notes or list_drum_maps to make the distinction explicit for the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. With many adjacent siblings (get_midi_notes, list_drum_maps, map_drum_kit, save_drum_map), the agent gets no signal about when this read is the right call versus those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_midi_ccBRead-only
Reads a MIDI item's controller events: CCs (mod wheel, sustain, expression...), pitch bend, program changes and aftertouch, with positions in QN.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Only this controller number (1 mod wheel, 7 volume, 11 expression, 64 sustain) | |
| end | No | Up to this QN position | |
| kind | No | Only this kind of event | |
| limit | No | ||
| start | No | From this QN position in the item | |
| channel | No | ||
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this a safe read. The description adds useful context about what the return contains (event kinds with QN positions), but says nothing about the limit/maximum-result behavior despite a 'limit' parameter, nor about pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the verb and resource and wastes no words. Slightly dense with parenthetical examples, but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read tool with no output schema, the description covers what is returned at a high level. However, the interaction of start/end/limit/cc/channel filters and result ordering is left entirely to the schema, leaving some gaps for an agent assembling a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so most parameters are already documented in the schema (cc, kind, start, end, channel, item_id). The description's event-kind list loosely correlates with the 'kind' and 'cc' filters but adds no new syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('reads') and resource ('MIDI item's controller events'), then enumerates the exact event kinds (CCs, pitch bend, program changes, aftertouch) with QN positions. This clearly separates it from the sibling get_midi_notes, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource ('read a MIDI item's controller events'), but there is no explicit when-to-use versus get_midi_notes, nor any exclusion guidance. An agent can infer the context but must reason it out from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_midi_notesARead-only
Reads the notes in a MIDI item (positions in quarter notes from the item start).
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description still adds real value by specifying that positions are reported in quarter notes measured from the item start. It stops short of describing the full return shape (velocity, channel, etc.) or any filtering, but the unit/coordinate context is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the zero-waste parenthetical carrying the most decision-relevant detail (position units). Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter tool with no output schema, the description plus annotations cover what an agent needs to invoke it correctly. Only the detailed return structure is left implicit, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single item_id parameter is already fully documented in the schema, including the 'selected' special value. The description adds nothing parameter-specific, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Reads) and resource (notes in a MIDI item), clearly distinguishing it from mutation siblings like add_midi_notes, edit_midi_notes, and delete_midi_notes. It does not name an alternative explicitly, but the read-versus-write contrast is obvious from the vocabulary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the read verb and the item_id parameter, but there is no explicit when-to-use guidance or mention of when to prefer a different sibling. No prerequisites, exclusions, or alternative routing are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_plugin_catalogCRead-only
What creaper has learned about the user's plugins by testing them (scan_plugins): each plugin's roles and a summary of what it does at default settings.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| role | No | e.g. reverb, delay, compressor, limiter, eq/filter, saturation, distortion, modulation, stereo, pitch, gate/expander, pitched instrument, drum kit | |
| search | No | Words in the plugin name, developer or summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description's main additive value is that this is learned/tested data summarizing plugins 'at default settings' — a genuinely useful caveat about the nature of the data. It does not state freshness, whether results are cached, or what happens when a plugin is untested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no padding, so length is appropriate. However the front-loaded 'What creaper has learned' framing is an indirect fragment rather than a clear statement of action, slightly reducing scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description does partly cover what is returned (roles plus summaries). For a 3-parameter read tool with filter options, though, it omits how filtering works and how it relates to the many neighboring plugin/FX tools, leaving an agent to guess at selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is moderate (67%) with role and search documented in-schema, but the description is silent on all three filters (kind, role, search) and adds no filtering semantics. With coverage not high enough for a free baseline 3, the description fails to compensate for the undocumented 'kind' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('get') and resource ('plugin catalog') and specifies the content returned: each plugin's roles and a summary at default settings. It names scan_plugins only as the data source, not as an alternative, so it does not differentiate itself from likely-overlapping siblings like list_installed_fx or get_plugin_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative-tool guidance is provided. The scan_plugins reference is about data provenance, not about when an agent should call this tool versus list_installed_fx, get_plugin_profile or scan_plugins itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_plugin_profileARead-only
How a plugin works, for plugins creaper knows: its role, signal flow quirks, setup it needs and which controls do what. For others, inspect it with get_fx_parameters and save_note what you learn.
| Name | Required | Description | Default |
|---|---|---|---|
| plugin | Yes | Plugin name, e.g. 'Bus FORCE', 'Comp FET-76', 'EQ SITRAL-295' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the description is free to add content-level context, which it does by enumerating what a profile contains. It also discloses the important behavioral edge case that the tool only works for plugins it knows. It stops short of saying what an unknown plugin returns (empty result vs. error) or how large the response is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the fallback path is given right after the primary use case. The first sentence is slightly convoluted in its clause ordering ('How a plugin works, for plugins creaper knows: ...'), which costs a little front-loading clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does list the profile's contents. It also covers the unknown-plugin path by pointing to an alternative. The remaining gap is that the structure/format of the returned profile is unspecified, which matters for an agent planning to reuse the information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required 'plugin' parameter with 100% schema description coverage, including concrete examples ('Bus FORCE', 'Comp FET-76'). The description adds nothing about the parameter, but the schema fully carries it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (a plugin profile) and enumerates its content: role, signal flow quirks, required setup, and control mapping. It implicitly distinguishes itself from get_fx_parameters by framing the latter as the fallback for unknown plugins. The only weakness is the missing explicit verb and the undefined jargon 'creaper knows', which leaves the retrieval action slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit decision rule: use this tool for plugins the system already knows, and for others use get_fx_parameters plus save_note to capture what you learn. Both the when-to-use and the concrete alternatives are named. Nothing about selecting this vs. a sibling has to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_overviewARead-only
Start here. Returns tempo, time signature, length, edit cursor, time selection, transport state, markers and regions, the master track, every track (volume, pan, mute/solo, FX chain, item count) and the user's selected items.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the bar is lower. The description adds genuine value by disclosing the exact scope of returned state (edit cursor, time selection, FX chains, item counts), which is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the two-word directive 'Start here,' followed by a dense enumeration of return contents. It is a single run-on sentence, but every clause names a distinct piece of state, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the full burden of explaining return values — and it does so comprehensively, listing every category of project state returned. For a zero-argument read tool, nothing an agent needs in order to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so per the rubric the baseline is 4. There is nothing further for the description to clarify about inputs, and it correctly omits param discussion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and enumerates the exact contents: tempo, time signature, transport state, master track, every track with its properties, and selected items. This is a distinct aggregate-snapshot resource that an agent can clearly separate from single-purpose siblings like get_track_details or get_tempo_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here' is a clear directive that this is the orientation/entry-point call, which is meaningful usage guidance for an agent beginning a session. It stops short of naming alternatives or exclusions (e.g. 'use get_track_details for a single track'), so it isn't the full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rhythmARead-only
Rhythm patterns as step strings ready for add_drum_pattern (x = hit, . = rest): named timelines (clave, tresillo, bell patterns), Euclidean rhythms and polyrhythms.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | son clave 3-2, rumba clave 2-3, bossa clave, tresillo, cinquillo, habanera, dembow (snare), bembe bell (12/8), shiko, one drop, shuffle, aksak 7/8 (2+2+3), maqsum... or 'list' | |
| rotate | No | ||
| polyrhythm | No | e.g. [3, 2] for 3 against 2, [4, 3], [5, 4] | |
| euclid_hits | No | Euclidean rhythm: hits spread evenly... | |
| euclid_steps | No | ...over this many steps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the safety burden is off the description. The description usefully discloses the output encoding (x = hit, . = rest) and that patterns come in named/Euclidean/polyrhythmic flavors. It doesn't say whether 'name="list"' enumerates options or anything about determinism, but against the annotation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clean sentence that front-loads the output format before the categories. Efficient and mostly waste-free, though the parenthetical notation and 'named timelines (clave, tresillo, bell patterns)' could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, read-only lookup with no output schema, the description covers the essential missing piece – the shape of the returned step string – and the three modes of generation. An agent has enough to call it, though it could note what 'name=list' returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (~80%), so the schema already documents name, polyrhythm, euclid_hits, and euclid_steps. The description still adds conceptual mapping – grouping parameters into 'named timelines', 'Euclidean rhythms' and 'polyrhythms' – which helps an agent pick the right parameter family. It doesn't add format/syntax beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (rhythm patterns) and the exact output format ('step strings', 'x = hit, . = rest'), plus the three generation modes. It also names the downstream consumer add_drum_pattern, which situates it in the workflow. However it doesn't explicitly distinguish itself from adjacent generative tools like add_genre_groove or write_bassline beyond the drum-pattern linkage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'ready for add_drum_pattern' implies the intended follow-on step, giving implied usage. But it never says when to choose this over alternatives (e.g. add_genre_groove) or that no arguments are required to list patterns. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_routingARead-only
How audio and MIDI flow through the project: folders, which tracks go to the master or their folder, every send (destination, level, pan, pre/post, channels, sidechain inputs, MIDI) and hardware outputs. Read it before changing routing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, and the description adds valuable context about exactly what data is surfaced (send parameters including pre/post, sidechain inputs, MIDI, hardware outputs). No destructive or auth caveats needed for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Effectively one dense sentence plus a short imperative. The purpose is front-loaded and every clause adds scoping information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe the return surface, and it does so thoroughly: folder structure, routing targets, all send fields, and hardware outputs. An agent knows what it will receive and why to call it first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing to document beyond the fact that no filtering arguments exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (audio/MIDI signal flow) and enumerates its scope (folders, master vs. folder targets, sends with destination/level/pan/pre-post/channels/sidechain/MIDI, hardware outputs). This content profile clearly distinguishes it from get_project_overview and get_track_details without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read it before changing routing" gives an explicit when-to-use directive that positions it as the prerequisite read for routing mutations. It does not name the specific alternatives (set_send, set_master_send) it feeds, so it falls short of a 5, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scaleBRead-only
A key or mode explained: its notes spelled correctly, intervals, sound and uses, the chords on each degree (triads and 7ths with Roman numerals and functions), and the modes that share its notes.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | e.g. 'D dorian', 'F# major', 'A harmonic minor', 'E phrygian dominant' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe, non-destructive read. The description usefully discloses the scope of computed output (triads/7ths, Roman numerals, functions, shared modes), which matters since there is no output schema, but it says nothing about error handling or invalid-key behavior. Credit is warranted because annotations cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core subject ('A key or mode explained') and then enumerates the returned content. It is somewhat dense/run-on but each clause maps to a distinct piece of output, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one clearly documented parameter, the description does the heavy lifting on return values by enumerating notes, intervals, chords per degree, and related modes. That is fairly complete for a read-only lookup, though it omits any note on invalid input or output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already gives format examples ('D dorian', 'F# major'). The description's phrase 'a key or mode' corroborates that both keys and modes are accepted, but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (a key or mode) and enumerates exactly what the tool produces: correct note spellings, intervals, chords per degree, and related modes. It is clearly a reference/lookup tool, though the verb is implicit ('explained') and it does not distinguish itself from siblings like list_scales or identify_chord.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to reach for this tool versus list_scales, analyze_harmony, or identify_chord. There are no prerequisites, exclusions, or alternative-routing statements — 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.
get_tempo_mapBRead-only
The project's tempo and time-signature changes, with where each happens and whether it ramps to the next.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read. The description adds value by disclosing the shape of the returned data (change locations and ramp flags), which annotations cannot convey, but it says nothing about scope (whole project vs selection) or the format of the ramp/location values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the main resource and then lists the two supplementary data points. Zero waste, though the relative-clause phrasing ('with where each happens and whether...') is slightly less scannable than a plain enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the entire burden and does reasonably well by enumerating what comes back (tempo changes, time-signature changes, positions, ramp behavior). A note about project scope or value format would make it fully complete, but for a simple read tool this is close.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema is empty, so there is nothing for the description to document. The 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: the project's tempo and time-signature changes, plus where each occurs and whether it ramps. This is specific enough to distinguish it from get_rhythm or get_project_overview, though it uses a noun phrase without an explicit retrieval verb and never names the obvious counterpart set_tempo_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no reference to alternatives such as set_tempo_map (the write counterpart) or set_tempo. The agent must infer that this is the read-side of the tempo-map pair 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_track_detailsARead-only
Everything about one track: its items (with ids, positions and note counts), FX chain with presets, sends and receives.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track number (1 = top), track name, or "master" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read operation. The description adds useful behavioral context by specifying the returned data categories (items with ids/positions/note counts, FX chain presets, sends/receives), which helps set expectations for the response. It does not cover pagination, performance, or edge cases, but it goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states scope and then lists key contents. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only nature, fully documented single parameter, and no output schema, the description adequately summarizes the main return categories. It could be more complete by mentioning other track properties (e.g., routing, automation) or response size, but it covers the essential information needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'track' parameter, which documents acceptable values (track number, name, or 'master'). The description adds no further parameter semantics, so the baseline of 3 applies when the schema already carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('one track') and enumerates the main data returned: items with ids, positions, and note counts, FX chain with presets, sends, and receives. It is clear what the tool does, but it does not explicitly distinguish itself from siblings like get_project_overview or get_fx_parameters that may overlap in track-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description implies it retrieves all track details, but it does not mention conditions, prerequisites, or sibling tools to avoid or prefer. An agent must infer usage from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harmonize_melodyA
Finds chords for an existing melody (strong-beat melody notes become chord tones, chords move tonic-predominant-dominant, the end cadences home), and optionally writes them.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| octave | No | ||
| rhythm | No | sustain | |
| item_id | Yes | The MIDI item with the melody | |
| palette | No | colorful adds secondary dominants and borrowed chords | diatonic |
| voicing | No | close | |
| sevenths | No | ||
| chords_per_bar | No | Harmonic rhythm: 0.5, 1, 2 or 4 | |
| write_to_item_id | No | Write the chords into this item (e.g. on a piano track) |
TDQS
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 harmonic algorithm and that writing is optional ('optionally writes them'), but gives no side-effect detail: whether writing into write_to_item_id overwrites existing notes, whether it appends to a track, or what is returned when it does not write. Useful behavioral content, incomplete for a mutation-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence; the verb/resource leads and the parenthetical method detail follows. It is dense with three nested clauses but each earns its place, so it stays efficient rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Nine parameters, no output schema, and only partial schema coverage. The description covers the algorithm well but never says what the tool returns (chord symbols? a new MIDI item?) or how the non-writing path surfaces results, leaving an agent unsure what to expect from a successful call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is a middling 56%, and the description only implicitly ties to parameters ('optionally writes them' gestures at write_to_item_id). Parameters left undocumented by the schema (octave, rhythm, voicing, sevenths) get no explanation in the description either, so it neither fully compensates nor falls below the adequate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds chords for an existing melody') and the parenthetical pins down the method (strong-beat notes as chord tones, tonic-predominant-dominant motion, cadence home). This clearly separates it from chord-side siblings like add_chord_progression and reharmonize, which operate on progressions rather than an input melody.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for an existing melody' implies the precondition (a melody item must exist), but there is no explicit when-to-use, when-not-to-use, or pointer to the competing tools (reharmonize, add_chord_progression) in a sibling list this dense. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_chordARead-only
Names the chord some notes make (with inversion or slash bass), most likely first, and, with a key, its Roman numeral and function.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| notes | Yes | Notes, e.g. ['A2','C4','E4','G4'] or MIDI numbers; the lowest is the bass |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation covers the safety profile, so the description is free to add value elsewhere — and it does, disclosing that results are ranked ('most likely first'), that inversions and slash bass are handled, and that Roman numeral/function analysis only appears when a key is supplied. With no output schema, this output-shape disclosure is meaningful, though ambiguity/error behavior for non-chordal input is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the core action first and nests the optional key behavior as a qualifier. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with no output schema, the description adequately conveys both inputs' roles and the shape of the result (ranked chord names, inversion/slash bass, optional Roman numeral). Minor gaps remain around ambiguous or unrecognized note sets, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well documented (key accepts scale/mode strings, notes accept names or MIDI numbers with the lowest as bass). The description only restates that a key triggers Roman numeral output, adding little beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Names' paired with the resource 'chord', plus the scope of what gets returned (inversion/slash bass, ranked candidates, Roman numeral and function with a key). This clearly separates it from analytical siblings like analyze_harmony or analyze_progression, but the description never names an alternative, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage through the conditional 'with a key, its Roman numeral and function', telling the agent the key parameter is optional and what it unlocks. There is no guidance on when to prefer this over analyze_harmony, get_scale, or analyze_progression, and no stated prerequisites for the notes input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_audio_fileC
Imports an audio or MIDI file onto a track.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of an audio (wav, flac, mp3, aiff, ogg...) or MIDI file | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| start_bar | No | Default: the edit cursor | |
| start_beat | No | Beat within the bar, 1-based (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It says only that a file is imported onto a track, without stating whether the track must already exist, whether the file is copied into the project/media pool, whether the operation is undoable, or what happens on conflict (e.g., existing item at that position).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficiently worded sentence with the action front-loaded. It is not padded, though its brevity comes at the cost of detail covered in other dimensions rather than wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition is too thin. An agent cannot infer prerequisites (file existence, track existence), side effects on the project or media pool, or the response shape, and nothing in the structured fields compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so path, track, start_bar, and start_beat are already documented by the schema, including the 1-based track numbering, the "master" option, and the cursor default. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (imports) plus resource (audio or MIDI file) and destination (track), so an agent knows the core action. It does not, however, distinguish itself from nearby siblings such as place_loop, load_sound, or build_sampled_instrument, which also bring audio into the project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. With siblings like place_loop, load_sound, find_samples, and analyze_audio available, the agent gets no signal about when importing a file is the right choice versus placing a loop or loading an existing sound.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drum_mapsARead-only
Lists drum maps: the user's saved ones and the instruments creaper knows already.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true), and the description goes beyond them by disclosing the composition of the result set: both user-saved maps and built-in instrument maps. Since no output schema exists, that return-content detail is genuinely useful, though pagination and result shape are still unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: the resource is named immediately and the scope detail follows. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument, read-only listing tool whose safety profile is carried by annotations, the description covers what it returns well enough. It stops short of describing ordering, counts, or what a map entry contains, which would help an agent consume the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to clarify 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Lists) and resource (drum maps), and further scopes the result set to two sources: the user's saved maps and the instrument maps bundled with creaper. This makes it easy to distinguish from save_drum_map, delete_drum_map, and map_drum_kit, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a discovery step to run before saving, mapping, or deleting a drum map, but the description never states when to call it, when not to, or which sibling to use instead (e.g., map_drum_kit vs. save_drum_map). Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fx_presetsARead-only
Lists the presets REAPER can see for a plugin (factory programs and presets saved in REAPER), then puts the plugin back exactly as it was. Many commercial plugins keep their presets in their own browser instead; the result says so.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| limit | No | ||
| track | Yes | Track number (1 = top), track name, or "master" | |
| search | No | Words to match in preset names, e.g. 'bass', 'pad' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds genuinely useful behavioral context beyond that: it states the plugin is put back 'exactly as it was' (implying temporary state changes) and that many commercial plugins won't appear because they use their own browser, with the result indicating so. These are valuable disclosures the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the core action front-loaded and the important caveat following. No filler, though the 'puts the plugin back exactly as it was' clause could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does explain the key nuance that some plugins' presets live in their own browser and the result reflects that. It is largely complete, though it omits the limit/cap semantics and the result shape of the preset list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents track, fx, and search. The description adds no syntax or format detail for any parameter and ignores the limit parameter entirely (default 200), so it does not compensate for the partial coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Lists the presets REAPER can see for a plugin') and clarifies the scope (factory programs and REAPER-saved presets). It is distinguishable from siblings like list_installed_fx or get_fx_parameters, though it does not explicitly name a sibling to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool returns but gives no when-to-use guidance, prerequisites, or alternatives among the many fx-related siblings (get_fx_parameters, update_fx, list_installed_fx). The note about commercial plugins keeping presets in their own browser is a caveat, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_genresBRead-only
Browse the genre library: every profile covers composition (modes, progressions, voicings, bass, melody), rhythm (groove, swing, feel), arrangement (form, instruments, sound design) and mixing (loudness, tone, width).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Genres that use this mode, e.g. dorian, phrygian | |
| tempo | No | Genres that fit this BPM (or half/double) | |
| family | No | e.g. electronic dance, hip-hop, jazz, latin, metal and punk, classical, film and games | |
| search | No | Words to look for: an artist, instrument, mood or era |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this as a safe read, so the description only needs to add context. It usefully discloses the breadth of each profile's contents but says nothing about result count, ordering, pagination, or whether filters are conjunctive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opening with the verb and resource, followed by a structured four-facet enumeration. Efficient, though the parenthetical lists are somewhat dense for the amount of actionable information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does convey the shape of returned profiles, which is valuable. However, it omits how many genres are returned, their ordering, and how the four filters interact, leaving real gaps for a browse tool whose whole purpose is narrowing results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four optional filters (mode, tempo, family, search) are already documented in the schema with examples. The description adds no parameter meaning beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Browse the genre library') and explains what each genre profile contains across composition, rhythm, arrangement and mixing. It does not distinguish this enumeration from the sibling get_genre_profile, which an agent would need to choose between without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 when to prefer this over get_genre_profile, list_scales or add_genre_groove, and no note on how the optional filters should be combined. All selection logic is left to the caller.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inputsARead-only
The audio inputs of the user's audio interface (as REAPER names them) and the MIDI input devices, for setting what a track records from.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read with no side effects, so the description only needs to add context. It adds that names reflect REAPER's own labeling, which is useful when matching values elsewhere, but discloses nothing about return ordering, empty-result states, or device hot-plug behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the purpose clause lands first and the use-case clause second. Slightly awkward as a fragment rather than a sentence, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters, no output schema, and a read-only annotation, the description is the only place return content can be explained — and it does say what is returned (audio interface inputs and MIDI input devices). Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No misleading parameter guidance is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource precisely (audio inputs of the user's audio interface plus MIDI input devices) and a specific scope (what a track records from). It is clearly distinct from write-oriented siblings like set_record_settings or record. The only shortfall is that 'list' is implied by the noun phrasing rather than stated as an explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for setting what a track records from' implies the workflow context (call this before setting record settings), which is genuine but indirect guidance. There is no explicit when-to-use statement, no naming of the sibling that consumes the result, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_installed_fxARead-only
Browses the user's installed plugins. Each appears once (the same plugin in several formats is listed as one) with its kind, format, developer, category and output channels. 'categories' counts every match by category, which helps answer 'what reverbs do I have?'. Pass the name to add_fx or create_track's instrument.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only instruments (synths, samplers, drum machines) or only effects | |
| limit | No | ||
| format | No | Only plugins available as this format: 'VST3', 'VST', 'CLAP', 'AU', 'JS' | |
| search | No | Words to match in name, developer or category, e.g. 'tape delay', 'arturia' | |
| category | No | REAPER's category, e.g. 'Synth', 'Dynamics', 'EQ', 'Reverb', 'Delay', 'Modulation' | |
| developer | No | e.g. 'Arturia', 'FabFilter', 'Cockos' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true), and the description adds meaningful behavior beyond them: dedup semantics ('each appears once, the same plugin in several formats is listed as one') and the aggregation behavior of 'categories'. It omits pagination/limit behavior, but the behavioral context is solidly richer than the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then supporting detail, then a next-step handoff. Four sentences, all relevant, though a touch dense with parenthetical asides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the fields and the 'categories' aggregation. It covers purpose, dedup, and handoff, leaving only pagination/limit behavior and total count unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents most parameters (kind, format, search, category, developer). The description echoes the returned fields but adds no format or syntax detail for search/limit beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (browses) and resource (installed plugins/FX) and enumerates what each entry carries. It does not, however, explicitly distinguish itself from siblings like scan_plugins, get_plugin_catalog, or list_fx_presets, which an agent might reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides implied usage via an example question ('what reverbs do I have?') and a downstream handoff ('Pass the name to add_fx or create_track's instrument'). There is no explicit when-not guidance or routing to alternative listing tools such as get_plugin_catalog or scan_plugins, so usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_motifsCRead-only
The motifs saved with save_motif, for place_motif.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description adds little on the safety axis. It discloses nothing about the return payload (names, IDs, ordering, empty-list behavior) and, with no output schema present, the description carries that burden and drops it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler and the resource is front-loaded. It is efficient, though it borders on under-specification rather than true terseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only lister the definition is minimally viable: the agent knows what it lists and that it is safe. What is missing is the shape of what comes back and how it relates to subsequent place_motif calls, which matters since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a no-arg tool applies. The description correctly implies an unfiltered enumeration rather than a query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (motifs) and ties it to the save_motif/place_motif siblings, so the agent can infer it is the read-side of that lifecycle. However, it never states the verb explicitly (list/retrieve) and reads as a sentence fragment, leaving the purpose implied 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentioning place_motif hints at the workflow (inspect saved motifs before placing one), but there is no explicit when-to-use, when-not-to-use, or comparison against any of the many other list_* tools. An agent must infer the call site entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scalesCRead-only
The scales and modes creaper knows, with what each sounds like.
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | diatonic mode, melodic minor mode, harmonic minor mode, heptatonic, pentatonic, hexatonic, symmetric, bebop, octatonic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read. The phrase 'with what each sounds like' adds genuine value because there is no output schema, telling the agent that entries carry descriptive/character information rather than just names. It still says nothing about ordering, result size, or whether the family filter is exclusive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short front-loaded sentence with no filler, and the output hint is placed after the resource. It is efficient, though the terseness comes at the cost of substance rather than being a model of tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with annotations covering safety, this is minimally adequate. Missing are the collection scope (all scales vs. filtered), the relationship to get_scale, and any hint about result size, leaving the agent to guess at the call's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'family' parameter is fully documented in the schema with an enumerated list of families. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (scales and modes known to the system) but supplies no explicit verb and largely echoes the tool name 'list_scales'. It does not distinguish this listing tool from the sibling get_scale, so an agent must infer that this returns a collection while get_scale returns one entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this tool, no mention of when to prefer it over get_scale, and no guidance about the optional family filter being a narrowing mechanism. The agent gets no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_soundsBRead-only
Browses the user's sound library. Check here before designing a sound from scratch.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Only sounds with this tag | |
| kind | No | ||
| plugin | No | Only sounds from this plugin, e.g. 'Mini V3' | |
| search | No | Words to match in names, tags, descriptions, e.g. 'dark pad' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds no behavioral detail beyond that — no result limits, pagination, ordering, or return shape — and 'Browses' merely echoes the annotation rather than extending it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and zero filler. The second sentence is a narrow usage hint rather than a full usage block, which keeps it tight but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only browsing tool with no output schema, the description never sketches what a result contains or how it relates to the adjacent save_sound/load_sound/update_sound/delete_sound family. It is adequate to invoke but leaves the agent guessing about output and family boundaries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, near the high baseline, so the schema largely documents tag/plugin/search; the undescribed 'kind' enum is self-evident. The description contributes no parameter meaning at all, so it neither helps nor compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource: 'Browses the user's sound library,' which an agent can distinguish from mutation siblings like save_sound/delete_sound. However, it never names or contrasts those siblings, so the differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Check here before designing a sound from scratch' supplies a concrete trigger for reaching for this tool. It stops short of naming alternatives (e.g., find_samples for raw samples) or any when-not condition, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_speech_voicesARead-only
The text-to-speech voices on this computer, best first, for add_robot_vocal's voice. Piper voices (if installed) sound the most natural; each shows its license, and only public domain, CC0 or CC BY ones may go in released music.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this as a safe read, and the description adds value on top: the ranking semantics ('best first'), the fact that each entry shows its license, and the naturalness caveat for Piper voices. These are behavioral details the annotation cannot convey. It stops short of 5 because it doesn't say how many voices typically appear or what a license entry looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and ordering before the licensing caveat. Every clause carries information: ranking, naturalness, license visibility, and release eligibility. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only readOnlyHint, the description does the work of describing what comes back (ranked voices with licenses) and how to judge the result for release use. It is nearly complete; the only minor gap is not hinting at result size or the fallback when Piper voices are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; per the zero-parameter baseline this is a 4. No misleading parameter language is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the exact resource ('text-to-speech voices on this computer') and its ordering ('best first'), and ties it to the sibling tool it feeds ('add_robot_vocal's voice'), so an agent can tell it apart from list_installed_fx, list_sounds, or list_scales without opening the schema. The listing verb is only implied by the noun phrase rather than stated outright, keeping it short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the context of use (picking a voice for add_robot_vocal) and gives a concrete eligibility rule ('only public domain, CC0 or CC BY ones may go in released music'), which is real decision guidance. It does not name an alternative tool or state when-not to call it, so it stops at a strong 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_takesCRead-only
The takes in an item (each recording pass over the same spot), and which is active.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes that this is a safe read; the description adds that the result also indicates 'which is active', which is genuine behavioral context about the response. It stops there, saying nothing about ordering, take metadata, or whether inactive takes are always included, so it is useful but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource being operated on is front-loaded. It is efficient, though it sacrifices clarity for brevity by dropping the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with full schema coverage this is close to sufficient, but with no output schema the description is the only place to convey the shape of the response, and 'which is active' does not tell the agent what else a take record contains or how to reference one for choose_take.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single item_id parameter is 100% documented in the schema, including the provenance (create_midi_item/get_track_details) and the 'selected' sentinel, so the schema already carries the semantics. The description's phrase 'in an item' adds no format or syntax detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The fragment 'The takes in an item ... and which is active' conveys the resource (takes within an item) and a hint at return content, but omits an explicit verb like 'List' and reads as a caption rather than a directive. It also does not distinguish itself from siblings such as choose_take or explode_takes, which also operate on takes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite three take-related siblings (choose_take, explode_takes) whose relationship to listing is exactly what an agent needs spelled out. The agent must infer that this is the discovery step before choosing or exploding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_track_templatesCRead-only
The user's REAPER track templates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered and the burden is lighter. The description adds nothing beyond that: it does not say whether this returns names, paths, or metadata, nor whether it is scoped to the current project or the whole REAPER install. Some minimal context, but not containing behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is very short and not padded, which is good, but it is an under-specified fragment rather than a complete front-loaded statement of purpose. Brevity here reflects missing content rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only a readOnlyHint annotation, the description should explain what a 'track template' is and what the caller gets back. An agent cannot tell from this text whether it should use the result with apply_track_template or how templates are identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so by the rubric the baseline is 4. There is nothing for the description to clarify on the parameter side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a bare noun phrase, 'The user's REAPER track templates,' which essentially restates the tool name rather than stating a verb+resource operation. It never says it lists/retrieves templates, and it does not distinguish itself from the closely named siblings save_track_template and apply_track_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as apply_track_template (which presumably consumes one of these templates). No preconditions, no context, nothing to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_soundA
Recalls a saved sound. Reuses the same plugin if it's already on the track, otherwise adds it; an instrument sound replaces a different instrument unless replace_instrument is false. Undoable.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | Load into this existing plugin on the track (must be the same plugin) | |
| name | Yes | Sound name from list_sounds | |
| track | No | Track to load it on (number, name or "master") | |
| new_track | No | Instead of track: create a new track with this name | |
| replace_instrument | No | For instrument sounds: swap out a different instrument on the track |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses that an existing same plugin is reused, that a new plugin is added otherwise, that instrument sounds replace a different instrument, and that the operation is undoable. It omits error/auth behavior (e.g., what happens if the named sound doesn't exist), so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the core action front-loaded and the conditional behaviors following. No filler, though the second sentence is somewhat dense with three separate behavioral clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no output schema and no annotations, the description covers the essential behavioral quirks and undoability. Missing only failure modes and any note on track/master targeting precedence, which is minor given the schema's parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, establishing a baseline of 3. The description only adds context for replace_instrument (its effect on instrument sounds); fx, track, and new_track get no extra meaning from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Recalls a saved sound'), which is unambiguous about what the tool does. It does not explicitly name siblings like save_sound or list_sounds, but the action verb 'recall/load' clearly separates it from the save/list/update/delete_sound family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the loading conditions (plugin reuse vs. addition, instrument replacement) but never states when to choose this tool over alternatives such as apply_track_template or audition_instrument, nor the prerequisite of first finding a name via list_sounds. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_drum_kitA
Works out a drum kit by ear: plays every key in the range through the track's instrument (offline, in a temporary item that's removed afterwards), measures each sound and identifies it (kick, snare, clap, rim, closed/open hat, crash, ride, toms, shaker, cowbell, percussion). Saves the layout as a drum map so add_drum_pattern and genre grooves land on the right sounds. Use it whenever a kit's layout is unknown, instead of asking the user. Kits inside one plugin can differ: map again after changing kit.
| Name | Required | Description | Default |
|---|---|---|---|
| low | No | Lowest key to try | C0 |
| high | No | Highest key to try | C6 |
| save | No | Save the result as this instrument's drum map | |
| track | Yes | The drum track (number or name) | |
| channel | No | MIDI channel to play on (most kits listen on all; GM kits use 10) | |
| overwrite | No | Replace a drum map you saved for this instrument before | |
| per_channel | No | For kits that put each drum on its own MIDI channel (SILA, drum machines, multitimbral setups): play one note (`low`, default C4) on channels 1-16 instead of a range of keys |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that scanning happens offline in a temporary item that is removed afterwards (a non-obvious side effect), and that the layout is persisted as a drum map. It omits any note on cost/duration of scanning an entire key range and doesn't clarify what happens when a sound can't be identified, leaving modest gaps for a mutation-plus-analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with no filler; the core action and its mechanism are front-loaded, and the usage directive follows. Slightly long, but each sentence (mechanism, persistence, when-to-use, re-run trigger) contributes distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 7-parameter tool with no annotations and no output schema, the description covers the process, the persistence behavior, and the downstream consumers. It never states what the call reports back (the identified note-to-sound mapping), which would help an agent interpret results, but otherwise it is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so low/high/save/overwrite/per_channel are already documented in the schema. The description adds only marginal meaning ('plays every key in the range' implies the low/high bounds), and does not elaborate on per_channel's channel-sweep semantics beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('Works out a drum kit by ear') and explains the mechanism (plays every key, measures and identifies each sound). It clearly differentiates itself from adjacent siblings like build_drum_kit, save_drum_map, and list_drum_maps by describing an analysis/identification step rather than kit construction or storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Use it whenever a kit's layout is unknown, instead of asking the user') and a re-run trigger ('map again after changing kit'), plus the downstream payoff (add_drum_pattern and genre grooves). It stops short of naming when not to use it or contrasting directly with build_drum_kit/save_drum_map, so it is strong context but not a full alternatives map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
master_to_targetA
Masters the mix: optional EQ, then a glue compressor and ReaLimit on the master (reusing ones already there). Plugins with a built-in profile (REAPER's ReaComp, Arturia's Bus FORCE, Comp VCA-65, FET-76, TUBE-STA) are set up and calibrated by measurement so the glue takes about glue_db off the peaks. Then the limiter and master fader are adjusted until the integrated loudness is within 0.5 LU of the target, and the true peak is checked against the ceiling. Each step renders the range, so a short loud section is much faster than the whole song.
| Name | Required | Description | Default |
|---|---|---|---|
| eq | No | Also put this EQ first on the master (added flat, for shaping tone), e.g. 'EQ SITRAL-295' | |
| glue | No | Also add a bus compressor before the limiter | |
| style | No | Or aim for the middle of this style's typical loudness | |
| passes | No | ||
| end_bar | No | Measure only this range (e.g. the loudest section) to save time | |
| glue_db | No | How much the glue compressor should tame the peaks, in dB | |
| platform | No | Or a platform: spotify, youtube, apple music, club... | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). | |
| target_lufs | No | Integrated loudness to reach | |
| ceiling_dbtp | No | ||
| glue_compressor | No | Bus compressor to use for glue, e.g. the user's 'Bus FORCE' or 'Comp VCA-65'; default ReaComp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does well: it states the step order, that existing master plugins are reused, that profiled plugins are measurement-calibrated, the 0.5 LU tolerance, the true-peak ceiling check, and that each step renders the range (time cost). It does not say what happens to pre-existing master FX that aren't reused, or whether the run is undoable, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the overall action before the step detail and the performance note. Dense but every clause carries information; no filler or repetition of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, zero-annotation, no-output-schema mutation tool, the description covers the workflow, calibration behaviour and performance characteristics well. Gaps remain around the undocumented 'passes' parameter, failure behaviour, and the state of master FX not reused, but the core is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 82%, so the schema already documents most parameters (eq, glue, style, target_lufs, start/end_bar, glue_db, platform, glue_compressor); the description largely echoes these. It never explains 'passes' (the iteration count, undocumented in both places), and adds no format or syntax detail beyond the schema, so baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource — mastering the mix via a defined master-bus chain (EQ → glue compressor → limiter) to a loudness target. This is clearly separable from sibling mix/export tools such as auto_mix, export_mix and compare_mix_to_style without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (run this to master an existing mix to a target loudness/platform) and the tool is not positioned against any sibling. There is a useful efficiency hint — 'a short loud section is much faster than the whole song' — but no explicit when-not or alternative-naming guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_tracksARead-only
Measures many tracks in one render pass and returns a compact table: each track's loudness while it plays (max short-term LUFS), its peak, how bright it is, and where its energy sits (low / mid / high). Use it instead of analyze_audio track by track when balancing a mix: one call instead of dozens.
| Name | Required | Description | Default |
|---|---|---|---|
| tracks | No | Tracks to measure; default: every track with items | |
| end_bar | No | Default: the end of the project | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds real value beyond that: it discloses the single-render-pass batching behavior and the exact metrics returned, which matters since no output schema exists. It does not mention scope limits or output ordering, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The capability and its returned metrics are front-loaded, with the sibling-routing guidance second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does describe the returned table's contents, which is adequate. Parameters are schema-covered and safety is annotated, so the only minor gap is not stating scope defaults or scale/units beyond the LUFS label.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so track selection, start_bar, and end_bar are already fully documented in the schema, including 1-based bar semantics and fractional bars. The description adds nothing further about parameters, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Measures) and resource (many tracks) and enumerates exactly what is returned (max short-term LUFS, peak, brightness, energy band). It explicitly names the sibling it replaces, analyze_audio, so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('when balancing a mix') and names the alternative ('instead of analyze_audio track by track'), with the reason ('one call instead of dozens'). Nothing 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.
new_project_tabA
Opens a new, empty project tab and makes it the active project, leaving the user's other projects open and untouched. Use it to start a new song (instead of run_action, which asks the user first).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the new tab becomes active, other projects stay open and untouched, and that unlike run_action it does not prompt the user first. However, it does not address unsaved changes, reversibility, or disk state, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its effect, followed by usage guidance. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter action with no output schema, the description covers what it does, its effect on existing projects, and when to use it versus an alternative. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so no parameter semantics need to be explained. The baseline for zero-parameter tools is 4, and the description correctly adds nothing further because there is nothing to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Opens') and resource ('new, empty project tab'), clarifies the resulting state ('makes it the active project'), and distinguishes the action from sibling run_action. An agent can immediately tell what the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use it ('Use it to start a new song') and names an alternative ('instead of run_action'), including the key differentiator that run_action asks the user first. This gives clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_loopB
Puts a loop on a track in time: stretched from its own tempo to the project's (pitch preserved), optionally moved into the project's key, and repeated to fill a number of bars.
| Name | Required | Description | Default |
|---|---|---|---|
| bar | No | ||
| bars | No | Repeat it to fill this many bars | |
| path | Yes | The loop's file (from find_samples) | |
| track | Yes | Track to put it on | |
| to_key | No | Transpose it into this key (needs its key: from the name or by ear) | |
| loop_bpm | No | The loop's own tempo, if known; else it's measured | |
| semitones | No | Or transpose by this much | |
| match_tempo | No | Stretch it to the project tempo (pitch kept) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It usefully discloses the core audio transformations (time-stretch preserving pitch, transposition, repetition to fill bars), which is real behavioral content. It does not say whether it creates a new item vs. overwrites existing material, whether it is undoable, or what happens when loop_bpm is unknown and must be measured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the action and enumerates the optional transformations in order. Every clause carries meaning; the trailing parentheticals are informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only narrative source, and it covers what the tool does but not its side effects, error behavior, or how the result should be verified. For an 8-parameter mutation tool in a rich sibling set, that leaves the agent with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents nearly every parameter. The description restates the same concepts (match_tempo, to_key/semitones, bars) without adding format, precedence, or interaction rules beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource is specific ('Puts a loop on a track') and the clause list clarifies the transformation: tempo-stretch with pitch preservation, optional key move, and bar-filling repetition. It does not differentiate itself from nearby siblings such as insert_audio_file or place_motif, but the purpose 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.
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 named alternative. An agent must infer from 'loop' and the schema's 'from find_samples' that this is the loop-placement step after find_samples/analyze_sample, but that routing is not in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_motifA
Puts a saved motif into a MIDI item (existing notes stay): in the song's key and mode, at an octave and speed that fit the moment.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Move it into this key and mode, e.g. 'D minor', 'D major' (default: as saved) | |
| name | Yes | A motif from list_motifs | |
| start | No | Where it starts, in QN from the item start | |
| octave | No | Octaves up (+) or down (-), e.g. -1 for low brass | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| stretch | No | Rhythm: 2 = twice as slow (a grand statement), 0.5 = twice as fast | |
| velocity | No | Play every note at this velocity (default: as saved) | |
| semitones | No | Extra transposition |
TDQS
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 existing notes remain and that the tool auto-fits key, mode, octave, and speed. However, it omits error behavior, return format, and whether the motif must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence covers the action and key side effect with no filler. It is appropriately sized and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter MIDI mutation tool with no annotations and no output schema, the description is thin on prerequisites and post-call expectations. It covers the core insert behavior and non-destructive effect, but not enough to fully guide error handling or alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter meanings are already well documented. The description loosely echoes key, octave, and speed but adds no syntax or format details beyond the schema, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Puts a saved motif into a MIDI item') and adds the non-destructive scope ('existing notes stay'). This distinguishes it from siblings like add_midi_notes and list_motifs without needing schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are provided. The phrase 'in the song's key and mode' describes behavior, not selection criteria, leaving the agent to infer that it should be used when a saved motif is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_automationBRead-only
Reads a track's automation points (bars/beats with values in real units), or lists which envelopes it has.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | ||
| track | Yes | Track number (1 = top), track name, or "master" | |
| target | No | Leave empty to list the track's envelopes | |
| parameter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already establishes safety, so the description's real contribution is disclosing the return shape ('bars/beats with values in real units') and the dual code path (points vs. envelope list) - useful context that is absent without an output schema. It stops short of describing ordering or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the core action, and the parenthetical efficiently conveys return units. No filler, though the density slightly hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read tool with no output schema and 50% parameter coverage, the description covers the query modes and data format but leaves 'fx' and 'parameter' semantics, the return structure, and empty-result behavior unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'track' and 'target' are documented in the schema, but 'fx' and 'parameter' are undocumented in both places. The description adds no meaning for these two parameters and merely echoes the envelope-listing mode already stated in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Reads') and resource ('a track's automation points') and clarifies the dual behavior (points vs. listing envelopes). The read-only 'Reads' verb implicitly contrasts with siblings like write_automation and clear_automation, though it does not name any alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes (read points, or list envelopes), and the schema's 'target' field even notes when to list envelopes, but the description itself gives no explicit when-to-use guidance or reference to alternatives such as write_automation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recordA
Starts recording on every armed track, from a bar (default: the edit cursor), optionally stopping by itself at a bar. Without an end it records until stopped (transport stop). The performer hears the count-in and metronome as set in REAPER.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | Or record this many bars | |
| end_bar | No | Stop recording automatically at this bar | |
| start_bar | No | Bar, 1-based | |
| start_beat | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load. It usefully discloses that recording covers all armed tracks, that start defaults to the edit cursor, that an optional end bar triggers self-stop, and that count-in/metronome are audible. It omits what happens to existing takes, whether recording is destructive/reversible, and any permission or transport prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action before the timing and monitoring details. Efficient with minor room to trim the trailing REAPER-metronome clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style tool with no annotations and no output schema, the description explains runtime behavior well but leaves the agent without guidance on safety, side effects on existing material, or how to verify the result afterward. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, above the baseline, and the description adds real meaning: it ties start_bar to the edit-cursor default, links end_bar to the auto-stop behavior, and conveys the 'or N bars' semantics for bars. Only start_beat is left unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('starts recording') and resource ('every armed track'), with clear scope. It is distinguishable from control-plane siblings like transport, though it does not name a specific alternative to route against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by describing the start point (edit cursor default) and stop behavior (auto-stop at a bar, or until transport stop), but never states when to prefer this over siblings such as transport, set_record_settings, or recording_status. Context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recording_statusARead-only
Whether REAPER is recording or playing, where the playhead is, and when it'll stop. If recording just stopped and REAPER is asking the user which files to keep, this waits for them to answer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already covers the safety profile, and the description adds a genuinely important behavioral trait beyond it: the call can block and wait for the user to answer a file-keep dialog. That blocking behavior is exactly the kind of context an agent needs to avoid a perceived hang. It doesn't mention timeouts or what is returned while waiting, keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary state query before the conditional blocking caveat. No filler, though the conditional sentence runs slightly long and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description usefully enumerates what the agent gets back (recording vs playing, playhead position, stop time) and warns about the file-keep prompt. Return format and value units remain unstated, but for a zero-parameter status query this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for parameterless tools is 4. The schema is trivially complete and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete subject and the three things it reports (record/play state, playhead position, stop time), which is far more specific than a tautology. It does not name a sibling to differentiate from, so it falls short of 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies a usage situation (just after recording stops, while REAPER prompts for file keeps), which is useful implied context. However, it never says when to prefer this over sibling tools such as transport or record, so guidance remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reharmonizeBRead-only
Reharmonizes a progression with jazz, soul, classical and film techniques, keeping its length, and explains each change.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| seed | No | ||
| amount | No | How often optional changes are made | |
| chords | Yes | Chord symbols (Am7, F#m7b5, C/E, Bbmaj9) or, with a key, Roman numerals (ii7, V7/V, bVII, viiø7, iv6, N6). A list, or one string like 'Am F C G' or 'i-VI-III-VII'. A 'mode:' prefix such as 'dorian: i7-IV7' reads the numerals in that mode on the key's tonic. | |
| lengths | No | Length of each chord in QN (4 = a bar of 4/4); default: chord_length for all | |
| techniques | No | Applied in order. sevenths, extensions (9/11/13), secondary_dominants, ii_v, tritone_subs, modal_interchange (borrowed iv, bVI, iiø7), passing_diminished, backdoor (iv7-bVII7-I), deceptive, sus_dominants, pedal, relative_subs, chromatic_mediants, negative_harmony, picardy. Jazz: ['sevenths','ii_v','tritone_subs','extensions']. Soul: ['sevenths','modal_interchange','backdoor']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the bar is lower. The description does add useful behavior beyond annotations: it keeps the progression length and returns explanations for each change. It omits any note on determinism (the seed param is undocumented in the description) or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that conveys purpose, the invariant (length preserved), and the output (explains each change). Efficient with no filler, though it packs three clauses and could be marginally tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a compute-style tool with no output schema, the description conveys the essence of the return (reharmonization plus explanations), but leaves usage routing entirely implicit and never mentions the seed/chord vocabulary already handled by the schema. Adequate but with a clear routing gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, above the baseline threshold, and the schema already documents key, amount, chords, lengths and techniques in detail. The description adds nothing about parameters, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reharmonizes) and resource (a progression), and adds distinguishing scope: jazz/soul/classical/film techniques, length preservation, and per-change explanations. It does not name which sibling it replaces (e.g. suggest_progressions or harmonize_melody), so the agent must infer the distinction from the technique vocabulary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not-to-use, or alternative guidance. An agent seeing suggest_progressions, harmonize_melody, analyze_progression and analyze_harmony in the sibling set gets no signal on when reharmonize is the right call versus those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_fxBDestructive
Removes an FX from a track's chain.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| track | Yes | Track number (1 = top), track name, or "master" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already flags this as a destructive operation, and the description's 'Removes' is consistent with it. The description adds the contextual detail that the FX is removed from a track's chain, but discloses nothing further about side effects (e.g., whether remaining FX positions shift, or reversibility). With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb and object front-loaded and zero waste. Appropriately sized for a simple two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive removal tool with fully documented params and a destructiveHint annotation, the description conveys enough for correct invocation. Minor gaps in side-effect disclosure keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (fx position/name, track number/name/'master') are fully documented in the schema itself. The description adds no additional parameter semantics, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('Removes an FX from a track's chain'), which is specific and distinguishable from add_fx and update_fx by name alone. It does not, however, explicitly contrast itself with those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says only what the tool does, not when to use it versus alternatives like update_fx or delete_track, nor any prerequisites. There is no exclusion or routing guidance, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reveal_exportsA
Lists the exported files in the export folder (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Default: the project's Exports folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Lists' implies a non-destructive read, and the ordering guarantee ('newest first') is a genuinely useful behavioral detail, but it says nothing about whether subfolders are included, whether results are paginated, or what metadata accompanies each file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero waste, front-loaded with the action and resource, with the ordering detail tucked into a parenthetical where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description is the only source for return shape; it conveys that files are returned and in what order, but not what fields each entry carries or how large a result to expect. Adequate for a simple listing tool, but thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the single 'folder' parameter is documented in the schema with its default ('the project's Exports folder'). The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lists') and a specific resource ('exported files in the export folder'), plus the sort order ('newest first'). It is not confused with the export_* siblings, which create files rather than list them, though the description never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for inspecting previously exported files. There is no statement of when to reach for it versus export_mix, export_stems, or export_regions, nor any prerequisite or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_actionA
Runs any action from REAPER's action list. Use it for things the other tools don't cover, and only when the user wants that action. Some actions can't be undone (saving, deleting media files), so name the action to the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Numeric action id (e.g. 40029) or named command (e.g. '_SWS_ABOUT') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers the key behavioral warning: some actions can't be undone (saving, deleting media files). It also prescribes naming the action to the user first, a useful operational guardrail. Missing detail on return values or how the action id/name resolves, but the destructive caveat is the important disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero padding, front-loaded with what the tool does before the usage and safety caveats. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic action-runner with no output schema and complete param coverage, the description covers purpose, when-to-use, and the primary risk. It could say a bit more about the consequence of passing an unknown command id, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'command' parameter already documents that it accepts a numeric id (e.g. 40029) or a named command (e.g. '_SWS_ABOUT'). The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (runs) and resource (any action from REAPER's action list), and positions itself against the large set of specific siblings by framing itself as the catch-all escape hatch. An agent can immediately tell this is the generic fallback versus the dedicated tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('for things the other tools don't cover') and adds a gating condition ('only when the user wants that action'). Both the fallback role and a usage constraint are spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_foldersC
Lists, adds or removes the folders creaper searches for samples and loops (by default the ones it finds: Arturia's sample library, SILA's, Music, REAPER Media).
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | A folder of samples to add, e.g. 'D:/Samples' | |
| remove | No | A folder to stop indexing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully names the default folders (Arturia, SILA, Music, REAPER Media), but says nothing about whether add/remove persist to config, whether removal is reversible, whether ordering matters, or what the call returns. For a mutating config tool 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action verbs first and the default-set detail relegated to a parenthetical. No wasted phrasing, though the parenthetical slightly crowds the sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should ideally cover the listing behavior, persistence semantics, and return shape. It covers the default state but leaves the add/remove side effects and the implicit list mode unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'add' (e.g. 'D:/Samples') and 'remove' both documented in the schema. The description adds no syntax or format detail beyond that, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verbs (lists/adds/removes) applied to a clearly named resource (the sample/loop search folders creaper indexes). An agent can tell this is distinct from find_samples, which locates files rather than configuring search paths. It stops short of 5 only because the 'list' behavior has no corresponding parameter and is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the default folder set but gives no when-to-use guidance, no mention of the no-argument case that presumably lists, and no routing to or from alternatives like find_samples or place_loop. Usage is inferred at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_drum_mapA
Remembers which notes an instrument's drums are on, so add_drum_pattern gets them right on every track that uses it, in this and future sessions. Replaces any map with the same name.
| Name | Required | Description | Default |
|---|---|---|---|
| mapping | Yes | Drum name -> note, e.g. {'kick': 'C1', 'snare': 'D1'}; or {'note': 'C1', 'channel': 2} for instruments that put each drum on its own MIDI channel | |
| instrument | Yes | Instrument name as it appears in the FX name, e.g. 'Analog Rytm', 'Digitakt II', 'ReaSamplOmatic5000' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load, and it does disclose two important behaviors: persistence ('in this and future sessions') and overwrite semantics ('Replaces any map with the same name'). It stops short of covering permissions, what a successful save returns, or whether the instrument must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first explains what it does and why it matters, the second front-loads the overwrite constraint. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description covers purpose, persistence, and overwrite behavior, which is most of what an agent needs. It is slightly thin on error/precondition context but not meaningfully incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'mapping' and 'instrument' thoroughly, including format examples and per-channel variants. The description adds no parameter-level detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Remembers which notes an instrument's drums are on') and identifies the downstream consumer, add_drum_pattern. However, it doesn't distinguish itself from closely related siblings like map_drum_kit, list_drum_maps, or delete_drum_map, so an agent still has 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention that add_drum_pattern 'gets them right' implies this should be set up before generating drum patterns, which gives implicit usage context. But there is no explicit statement of when to use this vs map_drum_kit, and no 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.
save_motifA
Saves a motif (a theme's notes and rhythm) to reuse in other songs and projects, like a film or game score's leitmotif: place_motif puts it back in any key.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ...up to here | |
| key | Yes | The key it's in, e.g. 'C minor' (so it can move to other keys) | |
| name | Yes | e.g. 'Earthfall title motif' | |
| start | No | Only notes from here (QN from the item start) | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| overwrite | No | ||
| description | No | What it's for, e.g. 'the game's signature; reuse in battle and victory' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains what a motif is but omits key behavioral facts: the schema exposes an 'overwrite' flag, yet the description never says what happens when a saved name collides, whether saving is destructive, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb, with the leitmotif analogy doing real explanatory work for reuse and the sibling reference at the end. Size is appropriate, though the embedded analogy makes it slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers purpose and reuse well but leaves the overwrite parameter's behavior unexplained, which is the most likely way an agent mis-calls it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86% (>80%), so the schema already documents nearly all parameters, setting the baseline at 3. The description's 'any key' analogy loosely reinforces the key parameter but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (saves) and resource (motif), then defines the resource in domain terms ('a theme's notes and rhythm'). It also names the sibling that reverses this operation (place_motif), so an agent can distinguish it from place_motif and list_motifs without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it ('to reuse in other songs and projects') and points to place_motif as the retrieval counterpart. It stops short of stating when not to use it or prerequisites, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_noteA
Remembers something for future sessions: a plugin quirk, the user's taste, a mix lesson. Save lasting lessons only, not one-off details of this song.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | One durable lesson, e.g. 'Prefers dark, warm pads; dislikes bright hats' | |
| topic | Yes | plugin (quirks/settings), preference (the user's taste), mix (lessons), sound, project, other | |
| subject | No | What it's about, e.g. a plugin name 'Jup-8 V4', or 'drums' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the key behavioral trait that notes persist into 'future sessions' and that scope is limited to durable lessons, which is genuinely useful context. It says nothing about overwrite behavior, dedup, or return semantics, so with zero annotation coverage there are gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose before the exclusion rule. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter save tool with full schema coverage and no output schema, the description covers what to save (durable lessons), the reason (future sessions), and the boundary (not one-off details). Only the absence of any behavioral context on write semantics keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and parameter names/descriptions already carry the meaning. The description's examples loosely map to the topic enum values (plugin, preference, mix), adding marginal value but no syntax or formatting detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remember/save) and resource (a lasting lesson for future sessions), with three concrete examples (plugin quirk, user's taste, mix lesson) that pin down what a 'note' is. It implicitly separates itself from the session-scoped tools by emphasizing cross-session persistence, though it never names the sibling tools (find_notes, delete_note) it relates to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not-to-use guidance: 'Save lasting lessons only, not one-off details of this song.' That gives a clear inclusion/exclusion rule rather than mere implied context. It stops short of naming alternative tools for the excluded case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectA
Saves the project: in place when it already has a file, as a new file the first time (or with a new name), or as a snapshot copy before big changes. A first save or save-as reopens the saved file in the same tab, so the undo history starts fresh.
| Name | Required | Description | Default |
|---|---|---|---|
| copy | No | Save a copy (a snapshot) and keep working in the current project | |
| name | No | Save as this name (first save or save-as); default: save in place | |
| folder | No | Folder for a new file; default: REAPER's project folder | |
| overwrite | No | Replace an existing file of that name without asking |
TDQS
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 so well for the key side effect: a first save or save-as reopens the file in the same tab and resets undo history. It does not cover failure/error conditions (e.g. saving an unnamed project, overwrite permissions), leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and immediate consequence; every clause earns its place with no restatement of the name or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so return values need not be documented, and the description covers modes plus the notable tab/undo consequence. It omits error behavior and any mention of disk/permission outcomes, which a fully complete definition would touch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema by framing 'copy' as a snapshot taken before big changes and tying 'name' behavior to the first-save/save-as case and undo-history reset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Saves the project') and immediately enumerates the three distinct save modes (in-place, new file/save-as, snapshot copy). No sibling save_* tool operates on the project itself, so the scope is unambiguous without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when each mode applies: in place when a file already exists, as a new file on first save or with a new name, and as a snapshot copy before big changes. It never names an alternative tool or an explicit when-not-to-use case, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_soundA
Saves the plugin's current sound to the user's sound library, so it can be loaded on any track in any project. Works for sounds picked in a plugin's own preset browser (Arturia, etc.), which REAPER can't otherwise see.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | Which plugin on the track; default: its instrument, else the first FX | |
| name | Yes | A descriptive name, e.g. 'Dark Pad', 'Rubber Sub Bass' | |
| tags | No | Role and character, e.g. ['pad', 'dark', 'warm'] or ['bass', 'sub'] | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| overwrite | No | Replace an existing sound with the same name | |
| description | No | What it sounds like and what it suits, in a sentence |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a write operation, yet it says nothing about name collisions (only the schema's overwrite flag hints at them), where sounds are stored, permissions, or what a subsequent load looks like. It adds the useful context that the capture works around REAPER's preset blindness, but that is descriptive value, not behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its destination, then a single qualifying clause about plugin-own browsers. Zero filler and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core intent but omits what happens on a duplicate name, whether the operation is reversible, and what the user gets back. It is adequate but leaves the agent guessing on operational consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters — including fx, name, tags, track, overwrite, and description — are already documented in structured fields. The description adds no syntax, default, or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Saves the plugin's current sound to the user's sound library') and immediately explains the scope ('loaded on any track in any project'), which separates it from save_drum_map, save_motif, and save_track_template. The added note about plugin-own preset browsers adds a crisp distinguishing detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence about Arturia-style preset browsers implies the scenario where this tool is the only option, giving some when-to-use context. However, it never names the obvious alternatives (update_sound, load_sound, save_track_template) or states when NOT to use it, so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_track_templateB
Saves tracks (with their plugins, sends between them, settings and items) as a REAPER track template, to reuse in any project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | e.g. 'Vocal chain', 'Drum bus' (a/b makes a subfolder) | |
| tracks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose substantive content scope (plugins, inter-track sends, settings, items are all saved), which is genuine behavioral value, but it omits overwrite behavior, where the template is stored, and any failure modes for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and zero filler; the parenthetical efficiently enumerates the saved payload rather than wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description conveys what is saved but leaves open the target storage location, overwrite semantics, and the meaning of the ambiguously typed 'tracks' parameter. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'name' is documented in the schema with an example, but 'tracks' (a string|integer array) has no description. The description mentions tracks only as the object being saved and never clarifies whether the array expects track names, indices, or handles, so it fails to close the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Saves') and resource ('tracks ... as a REAPER track template') and enumerates what is captured (plugins, sends, settings, items). An agent can distinguish it from siblings like apply_track_template and list_track_templates by the save-vs-apply distinction, though the description never explicitly names those counterparts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to reuse in any project' implies the use case (create a reusable preset from existing tracks), but there is no explicit when-to-use, when-not, or named alternative such as apply_track_template for the inverse operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_pluginsA
Tests installed plugins to learn what they actually do, at their default settings: instruments (makes sound? pitched or drum kit, range, character, late starts) and effects (reverb, delay, compressor/limiter, gate, EQ curve, saturation, modulation, pitch, stereo width, latency). Each test runs on a hidden temporary track after the end of the project and is removed again. Results go into the plugin catalog (get_plugin_catalog, list_installed_fx). Long scans stop after max_seconds and report what's left; call again to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which plugins to test | all |
| names | No | Exact plugins to test (names from list_installed_fx) | |
| search | No | Only plugins matching these words, e.g. 'reverb', 'arturia', 'drum' | |
| refresh | No | Test again even if already in the catalog | |
| include_js | No | Also test REAPER's JS effects (there are hundreds) | |
| max_seconds | No | Stop after about this long; call again to continue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the non-obvious side effect (each test runs on a hidden temporary track after the end of the project and is removed again), the time-boxing behavior tied to max_seconds, and the resumption semantics. These are exactly the non-obvious traits an agent needs before invoking a plugin-testing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the ordering (what it tests -> side effect -> where results go -> continuation) is logical. The long parenthetical enumerations of instrument and effect traits are informative but slightly bulky, costing a bit of tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, no-annotation, no-output-schema tool, the description covers everything needed: what is tested, what is touched, where the artifacts go, and how to resume partial runs. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters are documented in the schema (including enum, names source, search, refresh, include_js, max_seconds bounds). The description only reinforces 'at their default settings' and the max_seconds continuation, adding little beyond what the schema already provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scan/test) and resource (installed plugins) and clarifies the goal ('learn what they actually do, at their default settings'). It also distinguishes itself from siblings by naming where results land (get_plugin_catalog, list_installed_fx), so an agent can tell it apart from those read-only listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this to discover real plugin behavior and route the output into the catalog. It also explains the continuation pattern ('long scans stop... call again to continue'), which is a genuine usage instruction, though it never frames get_plugin_catalog/list_installed_fx as the read-side alternatives to prefer instead of re-scanning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_voiceA
Makes a voice the user's default for robot vocals (used whenever no voice is named), remembered across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| voice | Yes | A voice from list_speech_voices (part of its name), or 'female'/'male' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses two traits a bare setter would not reveal: the setting is a fallback applied only when no voice is named, and it is persisted ('remembered across sessions'). It omits mutation-side details such as what happens on an invalid voice or whether existing vocals 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core action first and the two qualifying clauses (fallback scope, persistence) after it. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no annotations and no output schema, the description covers the setting's meaning and persistence but says nothing about failure behavior (e.g. unrecognized voice string) or confirmation of the change. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema entry for 'voice' is actually richer than the description, referencing list_speech_voices and the 'female'/'male' literals. The description only refers to 'a voice' and adds no syntax or format detail, so the schema-does-the-work baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Makes a voice the user's default for robot vocals'), so the agent immediately knows this is a setter for a persistent default voice. It does not name or contrast any sibling tool, but the purpose 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the description of the setting's effect ('used whenever no voice is named'), which tells the agent when this default actually applies. There is no explicit when-to-use vs alternatives guidance or any exclusion/precondition, so it remains minimum-viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fx_parameterB
Sets one FX parameter in the plugin's own terms; creaper finds the setting that displays that number or text. Returns what the plugin now displays.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| value | No | Raw normalized value 0-1 | |
| parameter | Yes | Parameter number (from get_fx_parameters) or name, e.g. 'Threshold' | |
| display_text | No | For menus and switches: the text the plugin shows, e.g. 'Saw', 'Low Pass', 'On' | |
| display_value | No | Target in the plugin's displayed units: -18 for '-18 dB', 4 for '4:1', 2500 for '2.5 kHz' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the return behavior ("Returns what the plugin now displays") despite no output schema — a genuinely useful addition. It still omits mutation side effects, undo/reversibility, and permission or failure considerations, so it only partially meets the higher bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the action and followed by the resolution mechanism and return behavior. No filler, though the second clause is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations, the description conveys what is set and what is returned, and the schema is fully documented. It stops short of covering side effects or failure modes an agent might need before mutating plugin state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the display_value/display_text concept ("that number or text") and the plugin-terms semantics, but adds little beyond what the per-parameter schema descriptions already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Sets one FX parameter") and adds the mechanism — the value is expressed in the plugin's own units and resolved to a setting. It implies distinction from the plural set_fx_parameters via "one," but never names that sibling explicitly, so differentiation is only suggestive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus set_fx_parameters, get_fx_parameters, or update_fx, and no prerequisites or exclusions. The mechanism note hints at how to pass display-style values but is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fx_parametersA
Sets several parameters of one plugin as a single undo step, e.g. shaping a synth patch or dialing in a compressor. Each change reports its result or its own error.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| changes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses atomicity ('a single undo step') and per-change failure semantics ('each change reports its result or its own error'). It does not state prerequisites (plugin must exist, position/name resolution rules) or whether a partial failure rolls back the whole batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences, zero filler. The atomic-batching behavior is front-loaded, and the error-reporting note follows as a compact second clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema mutation tool with a nested parameter object, the description covers the two most important unknowns: undo granularity and per-item error reporting. Remaining gaps (prerequisite that the FX exists, behavior on partial failure, return shape) are minor but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, above the 50% baseline, so the schema already documents 'parameter', 'value', 'display_value' and 'display_text'. The description adds nothing about these three alternative value representations or how they interact, leaving a real ambiguity (raw 0-1 vs display units vs display text) unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: setting multiple parameters of one plugin, with concrete examples (synth patch, compressor). It implicitly distinguishes itself from the singular sibling set_fx_parameter by emphasizing batching, but never names or contrasts that sibling explicitly, so the boundary 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the examples and the 'single undo step' framing (use this when you want several changes applied together), but there is no explicit when-to-use/when-not or reference to set_fx_parameter for single edits. An agent can infer the batching case but must guess whether one change is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_master_sendB
Turns a track's direct output to the master (or its parent folder) on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | Track number or name | |
| enabled | Yes | False: the track only plays through its sends (e.g. a pure sidechain trigger) |
TDQS
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 the destination is the master OR the track's parent folder depending on hierarchy, which is real behavioral context. However, it says nothing about whether the toggle is reversible, whether it requires the track to exist/unmute, or any side effects on existing sends.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and resource with zero wasted words. Size is well matched to the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter boolean toggle with no output schema and no annotations, this is nearly complete: the action, target, and output-routing nuance are covered. It could be fuller by stating reversibility or the contrast with send-level tools, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds only the 'or its parent folder' routing nuance, which subtly informs the effect of the toggle but does not elaborate on parameter syntax or formats beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('turns on or off') and a precise resource ('a track's direct output to the master'), which is meaningfully different from mix-send routing. It stops short of naming the sibling it contrasts with (e.g. set_send or master_to_target), so an agent must infer the distinction from prior knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus set_send, master_to_target, or setup_sidechain, all of which touch similar routing concepts. Usage is only implied by the resource named, and no 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.
set_record_settingsB
Sets what a track records and whether it's armed: an audio input (a mic, a guitar, a hardware synth's outputs on the interface) or a MIDI device (a keyboard, a hardware synth's MIDI out), input monitoring, and the record mode.
| Name | Required | Description | Default |
|---|---|---|---|
| arm | No | Arm (or disarm) the track for recording | |
| mode | No | What gets recorded: the input (default), the track's output (resampling), nothing (monitor only), or MIDI merged into / replacing existing notes | |
| track | Yes | Track number or name | |
| stereo | No | With audio_input: record that input and the next as a stereo pair | |
| monitor | No | Hear the input through the track: on, off, or auto (only while recording/stopped) | |
| no_input | No | Clear the track's input | |
| audio_input | No | Record audio from this interface input (see list_inputs) | |
| midi_device | No | Record MIDI from this device number (list_inputs) or 'all' | |
| midi_channel | No | MIDI channel to record, 0 = all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does explain the meaning of the settings it mutates (input vs MIDI source, arm, monitor, record mode), but it does not disclose side effects such as whether omitted parameters are left unchanged, whether audio_input and midi_device are mutually exclusive, or interaction with an active recording.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-structured sentence that front-loads the action and then elaborates with concrete input categories. The parenthetical examples add useful meaning rather than filler, though the sentence is long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description covers the main intent and input categories but is silent on parameter interactions (stereo pairing, no_input clearing, midi_channel), preconditions, and whether changes are destructive. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, including stereo, no_input, and midi_channel (which the description never mentions). The description adds conceptual framing for audio_input/midi_device/monitor/mode, but not syntax beyond the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — it sets a track's record configuration: input source, arm state, monitoring, and record mode. The parenthetical examples (mic, guitar, hardware synth) clarify the domain. It does not differentiate itself from siblings like set_track_properties or record, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance: nothing says this is pre-recording setup, that it must precede the record tool, or how it relates to set_track_properties/list_inputs. The usage context (arming and routing a track before recording) is only implied by the description's wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sendC
Creates or adjusts a send (e.g. vocals to a reverb bus), or removes it.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | ||
| mode | No | ||
| mute | No | ||
| remove | No | ||
| source | Yes | Track number (1 = top), track name, or "master" | |
| volume_db | No | ||
| destination | Yes | Track number (1 = top), track name, or "master" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool can create, adjust, or remove a send, but does not explain permissions, reversibility, what happens when a send does not exist, how defaults are applied, or any side effects of removal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It is structurally efficient, though its brevity contributes to the overall under-specification rather than being a structural flaw.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations, no output schema, and low schema coverage, a one-sentence description is insufficient. It gives a useful example but omits routing semantics, parameter behavior, usage guidance, and the distinction from closely related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, with just source and destination documented in the schema. The description mentions no parameters and does not clarify pan, mode, mute, remove, or volume_db, so it adds no semantic value for five undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creates, adjusts, or removes a send, with a concrete example (vocals to a reverb bus). It is clear what operation is performed, but it does not differentiate this tool from sibling routing tools such as set_master_send or create_bus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use set_send versus alternatives like set_master_send, create_bus, or get_routing. The description also omits preconditions or context for choosing create, adjust, or remove behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tempoC
Sets the project's starting tempo and/or time signature.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| numerator | No | Time signature top number | |
| denominator | No | Time signature bottom number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It hints that only the 'starting' tempo is affected, but never says what happens to an existing tempo map, whether the change is undoable, or what is returned. For a mutation tool 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though it is arguably too terse to carry the guidance an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Three optional parameters, no annotations, no output schema, and no explanation of optionality (all default to null) or interaction between bpm and time signature. The description is not complete enough for a tool of this nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (numerator and denominator are described; bpm is not). The description names both concepts but adds no format, valid-range, or interaction detail beyond the schema fields, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Sets the project's starting tempo and/or time signature.' An agent immediately knows what changes. However, it does not distinguish itself from the sibling set_tempo_map or get_tempo_map, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no exclusions. With closely related siblings like set_tempo_map and transport in the list, the description should say when this single-shot setter is preferred over the tempo-map tool, but it offers nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tempo_mapA
Adds, changes or removes tempo and time-signature changes: tempo jumps between sections, ramps (accelerando/ritardando), odd-meter bars. One undo step. Items stay at their bar positions; the starting tempo is set with set_tempo.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Remove every change after the first before adding | |
| changes | No | Tempo/time-signature changes, e.g. [{'bar': 17, 'bpm': 128}, {'bar': 33, 'numerator': 7, 'denominator': 8}]. For a ramp: [{'bar': 25, 'bpm': 120, 'ramp_to_next': true}, {'bar': 33, 'bpm': 140}] | |
| remove_bars | No | Remove the changes at these bars |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and adds useful context: one undo step, items remaining at their bar positions, and separation from set_tempo. It does not mention permissions or error cases, but for a DAW mutation tool with rich schema documentation this is solid behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero waste; the core action and its examples are front-loaded, followed by key constraints (one undo step, bar positions, set_tempo boundary). Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with a fully described nested schema and no output schema, the description covers what the tool does, undo behavior, positional invariance, and the relationship to set_tempo. Additional detail on reading the map or failure modes would be nice but is not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested TempoChange fields are well documented with examples, so the schema already does the heavy lifting. The description adds only high-level examples (ramps, odd-meter) that mirror the schema, fitting the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (adds, changes, removes) and resource (tempo and time-signature changes), and distinguishes the scope from set_tempo by noting that the starting tempo is set there instead. An agent can tell it apart from siblings like get_tempo_map and set_tempo without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly indicates the situations it covers (tempo jumps, ramps, odd-meter bars) and explicitly routes the initial tempo to set_tempo. It does not, however, explicitly mention get_tempo_map for reading, which is the natural alternative for inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_selectionA
Sets or clears the time selection and loop points, and turns repeat on/off: for looping a section while working on it, or for actions that use the selection.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Also set the loop points to the same range | |
| clear | No | Clear the time selection (and loop points) | |
| repeat | No | Turn loop playback (repeat) on or off | |
| end_bar | No | Bar, 1-based | |
| end_beat | No | ||
| start_bar | No | Bar, 1-based | |
| start_beat | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses the set-vs-clear dual nature and that repeat is toggled, but says nothing about mutual exclusivity of clear/loop/coordinate params, defaults when nothing is passed, or whether start/end must be ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb first and the rationale trailing after a colon; no wasted words. The trailing clause is slightly run-on but still earns its place by conveying intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no annotations, and no output schema, the description covers the three mode axes but leaves gaps around how the bar/beat coordinates are combined, what happens when they are omitted, and what state results after clearing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so most parameters are self-described. The description's mode enumeration loosely maps to loop/clear/repeat, but the four bar/beat coordinate parameters receive no explanation of how they interact or override the current selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states three specific verbs and their objects: sets/clears the time selection and loop points, and turns repeat on/off. An agent immediately knows this is a transport-selection mutator, distinct from siblings like set_tempo or transport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a use case ('for looping a section while working on it, or for actions that use the selection'), which implies when the tool is relevant, but names no alternatives and gives no when-not guidance. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_track_propertiesC
Changes a track's name, fader, pan, mute, solo, color or selection.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | -1 = hard left, 0 = center, 1 = hard right | |
| mute | No | ||
| name | No | ||
| solo | No | ||
| color | No | #RRGGBB | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| selected | No | ||
| volume_db | No | Fader level in dB (0 = unity) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a mutation tool. It does not disclose that properties are updated partially (only the supplied ones change), how a property is reset, whether the operation is undoable, or what side effects (e.g., solo/mute interactions) occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the verb+resource lead the sentence. It is appropriately sized, though the brevity comes at the cost of the missing behavioral detail covered in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description leaves key gaps: partial-update behavior, reset conventions, and mutation effects are all unaddressed. It is not complete enough for an agent to call this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description only restates property names without adding meaning; notably it says 'fader' while the parameter is 'volume_db', leaving the mapping implicit. It does not explain partial-update semantics or null handling, so it does not compensate for the undocumented half of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('changes') and resource ('a track's ... properties') and enumerates exactly which properties are settable (name, fader, pan, mute, solo, color, selection). It is unambiguous what the tool operates on, though it offers no differentiation from siblings like update_sound or edit_item that also mutate objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no note about when not to use it. 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.
setup_sidechainA
Sets up side-chain compression in one go: routes the source into the target's compressor sidechain (channels 3/4), switches the compressor to listen to it, then measures the source and sets the sidechain level (and ReaComp's threshold) so it actually ducks by about the depth asked for.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | Use this compressor already on the target instead | |
| depth | No | How hard it ducks (measured with ReaComp): light ~2 dB, medium ~4-5 dB, heavy (pumping) ~10 dB | medium |
| source | Yes | The track that triggers the ducking, e.g. the kick | |
| target | Yes | The track that ducks, e.g. the bass or a pad | |
| compressor | No | Compressor to add, e.g. a sidechain-capable plugin of the user's; default: an existing ReaComp, else a new ReaComp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it enumerates the compound steps (route source into target sidechain on channels 3/4, switch the compressor to listen, measure source, set sidechain level and ReaComp threshold). It does not disclose failure behavior, reversibility, or permission prerequisites, but the operational sequence is unusually well surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opens with the core purpose, then uses a colon and comma-separated steps to convey the workflow. No wasted filler, though the run-on list form is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex compound mutation tool with no annotations and no output schema, the description is nearly sufficient: it covers the full workflow and the source/target roles. It lacks prerequisites, success/failure conditions, and side effects on existing compressor state, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including the depth enum's dB values and the fx/compressor fallback logic) are already documented in the schema. The description reinforces the depth linkage to threshold but adds no parameter semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('sets up') and resource ('side-chain compression') and details the exact mechanism (routing to channels 3/4, alarming the compressor, measuring, setting depth). It is unambiguous what the tool does. It stops short of explicitly distinguishing itself from siblings like add_parallel_compression or add_vocal_chain, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples ('the kick', 'the bass or a pad') and 'in one go' imply the use case (ducking a bass/pad against a kick) but there is no explicit when-to-use vs alternatives or when-not-to-use guidance. 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.
show_spectrogramARead-only
A picture of the sound to look at, since you can't hear it: time left to right, frequency bottom (30 Hz) to top (16 kHz, log scale), loudness as colour (black quiet, purple/orange mid, yellow loud). Faint horizontal lines mark 100 Hz, 1 kHz and 10 kHz; white vertical lines mark section starts. Read it for: mud (a solid band at 200-500 Hz), harshness (bright 2-5 kHz), empty or crowded sections, clipping or pumping, a vocal masked by other parts, sections that look identical.
| Name | Required | Description | Default |
|---|---|---|---|
| track | No | "master" for the mix, or a track | master |
| end_bar | No | Default: the end of the project | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the safety profile is thin; the description carries the burden and does so by fully characterizing the returned artifact (colour coding, reference lines at 100 Hz/1 kHz/10 kHz, section markers). This is exactly the behavior an agent needs since no output schema exists. It omits any note on rendering cost, delivery format of the image, or default scope when no bars 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line essence ('A picture of the sound to look at') before the axis/colour legend and the interpretation list. Three tight sentences, every clause carrying usable information, nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only a readOnlyHint annotation, the description compensates well by explaining both axis semantics and what visual features to look for. Parameters are fully covered by the schema. Gaps are minor: no mention of image delivery/return format or default range behaviour.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with track, start_bar and end_bar all documented in the schema itself (including the 1-based fractional bar convention). The description adds no parameter meaning beyond that, so the baseline of 3 for high-coverage schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and output form: a spectrogram image of the sound, with axes spelled out (time left-to-right, frequency bottom-to-top, loudness as colour). An agent immediately knows this renders a visual artifact. It does not, however, differentiate itself from apparent siblings like analyze_audio or check_vocal_clarity, so sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Read it for:' list gives concrete diagnostic situations (mud, harshness, crowding, clipping/pumping, masked vocal, identical sections), which is clear when-to-use context. There is no explicit when-not guidance and no named alternative tool, 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.
sketch_songA
Builds a genre sketch in one call: tempo, then tracks with a drum groove, bassline, voiced and comped chords and a melody, all following the genre's profile (progression, harmonic rhythm, voicing, comping, bass style, melody density and scale, swing). Every part is ordinary MIDI to edit afterwards. It's one loop repeated: a starting point for a song, not the arrangement.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| bars | No | Length of the sketch in bars (the loop repeats) | |
| seed | No | Change for a different melody and variations | |
| genre | Yes | Any genre from list_genres | |
| parts | No | Default: all four | |
| tempo | No | BPM; default: the genre's typical tempo if the project is empty, else the project's | |
| start_bar | No | ||
| instruments | No | Plugin per part from list_installed_fx, e.g. {'drums': 'SILA', 'bass': 'Mini V', 'chords': 'Analog Lab V', 'melody': 'Pigments'}; parts without one get an empty track | |
| progression | No | Chords or numerals to use instead of the genre's favourite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full burden. It usefully discloses that output is ordinary MIDI that can be edited afterwards and that the result is one repeated loop rather than an arrangement. It does not state side effects such as what tracks/items get created, whether existing project content is overwritten, or what happens to parts lacking a plugin (only the schema mentions empty tracks).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its outputs, and every sentence adds something (what is built, what profile drives it, editability, loop/arrangement scope). The first sentence is dense with a long parenthetical, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no annotations and no output schema, the description conveys the outcome, the driving genre profile, and the editability/loop-scope caveat well. Remaining gaps are side-effect details (track/item creation, empty-track behavior) that an agent would still want before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents nearly every parameter (key, bars, seed, parts, tempo, instruments, progression). The description adds no parameter-level syntax or format detail beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (Builds) and resource (a genre sketch) and enumerates exactly what is produced: tempo, drums, bassline, voiced/comped chords and melody. The genre-profile parenthetical and the closing sentence further pin down scope, so an agent can distinguish it from narrow siblings like write_bassline or add_drum_pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'It's one loop repeated: a starting point for a song, not the arrangement' tells the agent this is a scaffolding tool, not a full arrangement generator, which is useful scoping. However, no sibling alternatives (add_genre_groove, write_bassline, write_melody, add_chord_progression) are named and there is no explicit when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_instrument_outputsB
Gives each stereo output of a multi-output instrument its own track (drum machines, Elektron Overbridge, multitimbral synths, samplers). The main pair stays on the instrument's track; new tracks are named after the plugin's outputs.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | Which instrument (chain position or name), if the track has several; default: the first | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| outputs | No | Only these outputs, by name ('Track 3') or pair number (2 = outputs 3/4); default: all |
TDQS
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: the main pair stays on the instrument's track and new tracks are named after plugin outputs. However, it omits reversibility (is it undoable?), failure modes for single-output instruments, and any permission or destructive-effect context a mutation tool should signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action and followed by the resulting state. No padding or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It conveys purpose and the post-call track layout, which covers the essentials, but with no annotations and no output schema it leaves prerequisites, reversibility, and failure behavior unstated. Adequate but with clear gaps for a track-creating mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (track, fx, outputs) are documented directly in the schema with defaults. The description adds no syntax or format detail beyond that, so the schema does the heavy lifting and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and outcome: giving each stereo output of a multi-output instrument its own track, with concrete examples (drum machines, Overbridge, multitimbral synths, samplers). It is unambiguous, though it never distinguishes itself from nearby siblings like create_track or split_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no prerequisites (e.g. the instrument must be present and multi-output), and no alternative named. The second sentence describes what happens after the call, not when to reach for the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_itemB
Splits an item in two at a bar/beat; returns both halves' ids.
| Name | Required | Description | Default |
|---|---|---|---|
| at_bar | Yes | ||
| at_beat | No | Beat within the bar, 1-based (default 1) | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" |
TDQS
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 the key mutation effect (one item becomes two) and the return value (both halves' ids). However, it omits what happens to MIDI notes or automation spanning the split point, whether the split is undoable, and any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the operation and its result, no filler. It is efficient, though its brevity contributes to the spec gaps noted elsewhere rather than being purely a strength.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no annotations and no output schema, the description covers the basic operation and the return shape, which is the minimum viable. It does not address note-handling behavior at the cut point or the semantics of the undocumented at_bar parameter, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: at_beat and item_id are documented in the schema, while at_bar has no description. The description's 'at a bar/beat' phrasing loosely maps to at_bar/at_beat but adds no format or defaulting detail (e.g., 1-based bar, default beat 1) beyond the schema, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (splits) and resource (item) with the operation's locus (at a bar/beat), which clearly distinguishes it from siblings like delete_item, duplicate_item, and edit_item. It stops short of naming those siblings explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance is given. The agent must infer that this is the tool for cutting an item rather than duplicating (duplicate_item) or modifying it (edit_item); nothing routes it explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_progressionsBRead-only
Chord progressions for a key: the genre's own idioms, famous named progressions that fit the mood, and fresh ones generated from functional harmony. Each comes with numerals, chord symbols in the key and what makes it work.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | e.g. 'A minor', 'Eb major', 'D dorian' | |
| mood | No | e.g. uplifting, sad, dark, epic, dreamy, jazzy, nostalgic, menacing, romantic | |
| seed | No | ||
| count | No | ||
| genre | No | A genre from list_genres; its typical progressions come first | |
| length | No | Chords in newly generated progressions | |
| sevenths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only readOnlyHint=true, so the description carries the rest and does disclose the return payload: numerals, chord symbols in the key, and an explanation of why each progression works. That is genuinely useful output-shape context for a tool with no output schema, though it says nothing about limits, ordering, or what seed/count actually control.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with what the tool produces, with no filler. Slightly dense list-of-three phrasing, but nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema generation tool, the description gives a reasonable picture of the returned progressions but omits any account of seed (reproducibility), count, length, or sevenths, and doesn't state that the result is a suggestion rather than a project mutation. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, and the description adds no parameter meaning beyond the schema. Its references to “the genre's own idioms” and progressions that “fit the mood” merely restate the existing schema descriptions for genre and mood, while seed, count, length, and sevenths get no semantic explanation anywhere in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: generating chord progressions for a key, in three named flavors (genre idioms, famous named progressions, generated from functional harmony). This is clear, but it never distinguishes itself from close siblings like analyze_progression, reharmonize, or add_chord_progression (the latter actually writes into the project).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it takes a key and outputs suggestions, so the agent infers it is for ideation rather than analysis or insertion. There is no explicit when-to-use/when-not, no mention of prerequisites, and no routing to alternatives such as analyze_progression or add_chord_progression.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transportB
Plays, stops, pauses or moves the edit cursor. play with start_bar/end_bar lets the user hear a section ('play bars 9 to 17').
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | ||
| action | Yes | ||
| end_bar | No | With play: stop (or loop) here | |
| start_bar | No | Bar number, 1-based. Fractions are parts of the bar (5.5 = halfway through bar 5). | |
| start_beat | No | Beat within the bar, 1-based (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden but only minimally describes action effects. It does not state whether playback is blocking, how loop behaves, what happens to the edit cursor on go_to, or any permissions or side effects, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the core actions before the specific play-range example. Every sentence carries useful information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has five parameters, no annotations, and no output schema, the description is too sparse. It omits critical context such as loop behavior, action semantics beyond the enum, and what happens during playback, leaving an agent under-informed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, so the schema already documents start_bar, end_bar, and start_beat. The description adds meaning by explaining that start_bar/end_bar with play lets the user hear a section, but it omits the loop parameter and adds no further detail beyond the enum values already visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verbs (plays, stops, pauses, moves) and a resource (edit cursor), making the tool's purpose clear. However, it does not explicitly differentiate itself from any sibling tool, which would be required for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides one implicit usage scenario: using play with start_bar/end_bar to hear a section (e.g., 'play bars 9 to 17'). It offers no guidance on when to use transport as opposed to alternatives like record, run_action, or set_time_selection, leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoB
Undoes the most recent changes in REAPER (Claude's or the user's).
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses a genuinely important trait: the undo is global and will also revert the user's own manual edits, which is a useful warning. However, it omits reversibility (no redo), whether it operates on a project-wide undo stack, and any confirmation/irreversibility behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero waste; the scope qualifier is appended compactly via parentheses. Nothing in it is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and an undocumented parameter, the description is thin. It never explains the 'steps' argument, does not state whether the operation is recoverable, and gives no indication of what a caller gets back after invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'steps' parameter has 0% schema description coverage and is never mentioned in the description, so the agent gets no guidance on its meaning, default (1), or the 1-50 range. The phrase 'the most recent changes' (plural) faintly hints at multi-step undo but does not compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('undoes') and resource ('the most recent changes in REAPER'), and adds the scope qualifier that both Claude's and the user's changes are covered. It's clear what the tool does without opening the schema, though there are no sibling alternatives to differentiate against (no redo tool exists in the list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only asserts what the tool does; it gives no explicit when-to-use guidance, no note on when not to use it, and no mention that there is no redo counterpart to recover from it. Usage must be inferred entirely from the name and one sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_fxC
Bypasses or enables an FX, loads a preset, or opens its window for the user.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | Yes | FX position in the chain (1 = first) or name, e.g. 'ReaComp' | |
| show | No | Open (true) or close (false) the plugin window | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| preset | No | Preset name to load (see list_fx_presets) | |
| enabled | No | False bypasses the FX | |
| preset_index | No | Preset number from list_fx_presets, instead of the name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it only lists the three modes. It never says the tool mutates persistent state, what happens when multiple optional params are combined, whether omitting them is a safe no-op, or what the call returns. This is a 6-param mutation tool, so the gap is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the actions before anything else, with no filler. It could have been split into mode-specific clauses for sharper scanning, but it wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, three-mode mutation tool with no annotations and no output schema, the description is thin. It omits mode-combination semantics (e.g. preset vs preset_index, enabled together with show), state persistence, and any indication of the result, leaving the agent to guess at call behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines fx, track, show, preset, preset_index, and enabled with units and defaults. The description maps 'bypasses/enables', 'loads a preset', and 'opens its window' onto those fields, which is consistent but adds no formatting or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States three specific verbs tied to the resource: bypassing/enabling, loading a preset, and opening the plugin window. An agent can see this is the state/focus control for an existing FX. It stops short of naming siblings, so it does not explicitly distinguish itself from set_fx_parameter, add_fx, or remove_fx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, and no prerequisites are given in the description itself. The routing hint to list_fx_presets lives in the schema field descriptions, not here. The agent must infer when to reach for this multi-mode tool vs set_fx_parameter(s).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_soundC
Renames a saved sound or changes its tags or description.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tags | No | Replace all tags | |
| add_tags | No | Add these tags | |
| new_name | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses almost nothing beyond the mutation itself: no note on permission requirements, whether the rename breaks existing references, whether omitted fields are left untouched, or what the result looks like. It only implicitly signals a partial update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler, front-loading the rename action. It is well sized for what it says, 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.
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, no output schema, and 40% schema coverage, the description is too thin. It should at minimum clarify the name/new_name relationship and confirm that unspecified fields are preserved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%; 'name' and 'new_name' carry no schema descriptions, and the description does not resolve the critical ambiguity between them ('name' as the lookup key vs 'new_name' as the replacement value). The schema documents 'Replace all tags' and 'Add these tags', but the description leaves the most consequential parameter distinction unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Renames a saved sound') and enumerates the mutable fields (tags, description), which clearly separates it from load_sound, save_sound, and delete_sound. It does not name a sibling explicitly, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus save_sound or load_sound, no mention that the target sound must already exist and be referenced by 'name', and no preconditions or alternatives. The agent must infer everything from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_automationA
Writes automation: volume rides, pans, filter sweeps, wobbles. Give points, a ramp or an lfo (they can be combined). The envelope is created and shown if needed, and the change is one undo step.
| Name | Required | Description | Default |
|---|---|---|---|
| fx | No | For target fx: the plugin (chain position or name) | |
| lfo | No | A repeating movement, e.g. a wobble or tremolo | |
| ramp | No | A move from one value to another, e.g. a filter sweep over a build | |
| track | Yes | Track number (1 = top), track name, or "master" | |
| points | No | ||
| target | Yes | volume (dB), pan (-1 left .. 1 right), or fx (a plugin parameter: give fx and parameter) | |
| replace | No | Replace existing points in the written range | |
| parameter | No | For target fx: parameter name or number | |
| normalized | No | For target fx: values are 0-1 instead of the plugin's displayed units |
TDQS
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 the envelope is created/shown and that the change is a single undo step, which is real behavioral context. But it omits the fact that replace defaults to true and will overwrite existing points in the written range, and says nothing about permissions or how conflicting target/points interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and resource, then the input modes, then behavioral notes. No filler, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description covers purpose and invocation modes but under-serves behavioral risk (the destructive default of replace) and the target/value-unit coupling. Adequate given the high schema coverage, but not complete for a write tool with zero annotation safety net.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so baseline is 3, but the description adds a genuinely useful semantic the schema does not make obvious: points, ramp, and lfo can be combined rather than being mutually exclusive. This supplements the structured field docs rather than repeating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Writes automation') and grounds it with concrete examples (volume rides, pans, filter sweeps, wobbles). However, it never differentiates itself from the obvious siblings read_automation and clear_automation, so an agent gets the 'what' but not explicit separation from the read/delete counterparts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Give points, a ramp or an lfo (they can be combined)' signals how to invoke the tool but not when to prefer it over alternatives. There is no stated condition, exclusion, or named alternative (e.g. clear_automation for removal), leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_basslineC
Writes a bassline that follows the chords in a chosen style.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| seed | No | ||
| start | No | ||
| style | No | whole/reese (held), root (one per bar), eighths, sixteenths, root_fifth (country 2-feel), octaves (disco), walking (jazz quarters with chromatic approaches), 808 (trap), syncopated (funk/house), offbeat (trance/house), one_drop (reggae), tumbao (salsa, anticipated), arpeggio, pedal (tonic pedal), boogie, motown, alberti | root |
| chords | Yes | Chords with lengths, or one string like 'Am7 D7 Gmaj7' / 'ii7-V7-Imaj7' (each lasting chord_length). | |
| octave | No | 2 puts the bass around C2 | |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| replace | No | ||
| velocity | No | ||
| chord_length | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Writes' implies mutation, but the description does not disclose whether existing notes are replaced, how the item is affected, what permissions are needed, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is concise, though the brevity comes at the cost of detail captured under other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter MIDI-writing tool with no output schema and no annotations, one sentence is far too thin. It omits the meaning of item_id, the effect of replace, how chord_length interacts with chords, and any side effects or return information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 10 parameters and only 50% schema description coverage, the description should compensate but does not. It mentions chords and style implicitly, but adds no meaning beyond the schema for those or any of the other 8 parameters (seed, start, octave, velocity, chord_length, replace, key, item_id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Writes a bassline') and the musical input ('follows the chords in a chosen style'). It is clear, but does not distinguish itself from siblings like write_melody or add_chord_progression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use instruction, no conditions or alternatives. The phrase 'in a chosen style' implies context, but there is no guidance on when this tool is appropriate versus write_melody or add_chord_progression.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_melodyB
Composes a melody over chords: a rhythmic motif developed in phrases, chord tones on strong beats, stepwise lines with leaps recovered, a high point, a half-close at the end of the first phrase and the tonic at the end. Try several seeds.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key with any scale or mode: 'A minor', 'F# dorian', 'Bb', 'Eb mixolydian', 'C harmonic minor' | |
| low | No | Lowest note, e.g. C4 (vocal-like), A3 | C4 |
| high | No | Highest note, e.g. G5 | G5 |
| seed | No | Same seed, same melody; change it for another idea | |
| scale | No | Scale the melody uses, e.g. 'minor pentatonic', 'blues'; default: the key's | |
| start | No | ||
| chords | Yes | Chords with lengths, or one string like 'Am7 D7 Gmaj7' / 'ii7-V7-Imaj7' (each lasting chord_length). | |
| density | No | How many notes per bar | medium |
| item_id | Yes | MIDI item id from create_midi_item/get_track_details, or "selected" | |
| replace | No | ||
| velocity | No | ||
| phrase_bars | No | Phrase length: the motif repeats and the phrase closes every this many bars | |
| syncopation | No | ||
| chord_length | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does disclose real output behavior (motif development, chord tones on strong beats, stepwise recovery, half-close then tonic) and hints at non-determinism via 'Try several seeds'. However it omits key operational behavior: that a MIDI item must already exist (item_id required), what replace=true destroys, and what the call actually writes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, and the long stylistic clause is at least substantive rather than filler. 'Try several seeds' is an actionable closing line. Slightly dense but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter generative mutation tool with no annotations and no output schema, the description is thin on essentials: it never states the item must exist first, whether existing notes are preserved or overwritten, or what the tool returns/where the notes land (e.g. into the MIDI item). Understanding the musical output is good, but the operational picture is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 64%, so the schema does not fully carry the load, and the description adds almost no parameter-level meaning beyond the seed hint ('try several seeds'). Params with no description anywhere (replace, velocity, syncopation, chord_length, top-level start) are left unexplained, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Composes a melody'), and 'over chords' precisely scopes the operation so it is separable from siblings like harmonize_melody (which derives chords from a melody) and write_bassline. The melodic-characteristics clause reinforces what kind of melody is produced rather than merely restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description makes clear you need chords to compose over, and 'Try several seeds' is a usable generation tip. There is no explicit when-to-use/when-not versus harmonize_melody, add_midi_notes, or save_motif, and no prerequisites are named.
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.
125 tool updates
v0.19.1- First observed
add_chord_progression - First observed
add_drum_pattern - First observed
add_fx - First observed
add_genre_groove - First observed
add_marker - First observed
add_midi_cc - First observed
add_midi_notes - First observed
add_parallel_compression - First observed
add_program_change - First observed
add_robot_vocal - First observed
add_vocal_chain - First observed
analyze_audio - First observed
analyze_harmony - First observed
analyze_progression - First observed
analyze_sample - First observed
apply_track_template - First observed
audition_instrument - First observed
auto_mix - First observed
build_drum_kit - First observed
build_sampled_instrument - First observed
check_ending - First observed
check_tuning - First observed
check_vocal_clarity - First observed
check_voice_leading - First observed
choose_take - First observed
chop_vocal - First observed
clear_automation - First observed
compare_mix_to_style - First observed
create_bus - First observed
create_folder - First observed
create_midi_item - First observed
create_track - First observed
delete_drum_map - First observed
delete_item - First observed
delete_marker - First observed
delete_midi_cc - First observed
delete_midi_notes - First observed
delete_note - First observed
delete_sound - First observed
delete_track - First observed
duplicate_item - First observed
edit_item - First observed
edit_marker - First observed
edit_midi_notes - First observed
explode_takes - First observed
export_mix - First observed
export_regions - First observed
export_stems - First observed
export_vocal_midi - First observed
find_modulation - First observed
find_notes - First observed
find_samples - First observed
freeze_tracks - First observed
get_fx_parameters - First observed
get_genre_profile - First observed
get_instrument_notes - First observed
get_midi_cc - First observed
get_midi_notes - First observed
get_plugin_catalog - First observed
get_plugin_profile - First observed
get_project_overview - First observed
get_rhythm - First observed
get_routing - First observed
get_scale - First observed
get_tempo_map - First observed
get_track_details - First observed
harmonize_melody - First observed
identify_chord - First observed
insert_audio_file - First observed
list_drum_maps - First observed
list_fx_presets - First observed
list_genres - First observed
list_inputs - First observed
list_installed_fx - First observed
list_motifs - First observed
list_scales - First observed
list_sounds - First observed
list_speech_voices - First observed
list_takes - First observed
list_track_templates - First observed
load_sound - First observed
map_drum_kit - First observed
master_to_target - First observed
measure_tracks - First observed
new_project_tab - First observed
place_loop - First observed
place_motif - First observed
read_automation - First observed
record - First observed
recording_status - First observed
reharmonize - First observed
remove_fx - First observed
reveal_exports - First observed
run_action - First observed
sample_folders - First observed
save_drum_map - First observed
save_motif - First observed
save_note - First observed
save_project - First observed
save_sound - First observed
save_track_template - First observed
scan_plugins - First observed
set_default_voice - First observed
set_fx_parameter - First observed
set_fx_parameters - First observed
set_master_send - First observed
set_record_settings - First observed
set_send - First observed
set_tempo - First observed
set_tempo_map - First observed
set_time_selection - First observed
set_track_properties - First observed
setup_sidechain - First observed
show_spectrogram - First observed
sketch_song - First observed
split_instrument_outputs - First observed
split_item - First observed
suggest_progressions - First observed
transport - First observed
undo - First observed
update_fx - First observed
update_sound - First observed
write_automation - First observed
write_bassline - First observed
write_melody
TDQS
Scored across 125 tools
Many tools have overlapping purposes: add_midi_notes can write melodies/basslines just like write_melody/write_bassline, add_drum_pattern overlaps with add_genre_groove, and multiple analysis tools (analyze_audio, measure_tracks, compare_mix_to_style) target similar measurement goals. Descriptions are detailed and often explicitly guide selection, but the sheer number of similar-sounding options creates real risk of misselection.
All names use snake_case, but the convention is mixed: many are verb_noun (get_project_overview, add_fx), some are single verbs (record, transport, undo), and others are noun phrases (sample_folders, new_project_tab). Verb choices vary widely (get/list/analyze/check/measure/compare/add/create/write/build), so the pattern is readable but not predictable.
125 tools is far beyond any reasonable scope and well above the 50+ threshold for an extreme mismatch. Even though the server covers a broad domain, the set is too large for an agent to efficiently select from, forcing constant cross-referencing and increasing the chance of wrong tool choice.
The surface is remarkably comprehensive, covering project management, track/folder/bus creation, MIDI and audio editing, mixing, mastering, composition, theory, sampling, vocals, recording, templates, and exports. Minor gaps exist (e.g., no general MIDI export, no track template deletion, limited project tab management), but most workflows have clear paths.
Maintenance
Related MCP Connectors
Deterministic music theory for agents: analyze, voice, reharmonize, conduct — computed, not guessed
Edit DAW sessions; convert Logic/Ableton/FL/PT/REAPER/Cubase/Dorico; stems, transcribe, generate
AI mixing and mastering in the chat: check a song, mix your stems, change the mix in plain words.
- mozonicOAuthcom.mozonic
AI mixing and mastering: analyze your mixes, run DSP autofix, render stems, and master tracks.
Related MCP Servers
- FlicenseBqualityCmaintenanceEnables AI-powered music composition and control for REAPER DAW through OSC and ReaScript integration. Supports transport control, MIDI generation, track management, and music theory operations like scales, chords, and rhythm patterns.17-
- AlicenseAqualityCmaintenanceAI control for FL Studio via the Model Context Protocol — full in-DAW mixing (Mix Doctor diagnosis, gain staging, EQ/compression/reverb, reference matching), routing, and composition through Claude and any MCP client. 67 tools. Windows.6733 PyPI83MIT
- AlicenseBqualityAmaintenanceConnects AI assistants to REAPER for music production, enabling full control over tracks, MIDI, mixing, mastering, and audio analysis through 153 tools across 24 modules.17493Apache 2.0
- AlicenseCqualityAmaintenanceA comprehensive MCP server that enables AI assistants to control REAPER DAW for mixing, mastering, MIDI composition, and full music production workflows with 130 tools.179426 PyPI73MIT