Ableton Maestro
Ableton Maestro
An AI copilot for Ableton Live. Speak in natural language to program drums, generate chord progressions, tweak synthesizers, shape automation, and mix your tracks, right inside your open Live set.
Stay in the creative flow
Making music in a DAW is inspiring, but clicking around to draw notes, adjust mixer faders, and tweak envelopes over and over can pull you out of the zone.
Ableton Maestro acts like an assistant producer sitting next to you in the studio:
Keep your hands on the music: Live stays open right in front of you. You listen, evaluate, and make the creative decisions.
Natural studio dialogue: Ask for beats, basslines, filter sweeps, sidechain setups, or mix adjustments in plain language.
Real parameters, real clips: Nothing is faked or pre-rendered. Everything is written directly into your active project as editable MIDI notes, native devices, and standard Ableton automation envelopes.
Related MCP server: Ableton MCP
How it feels in the studio
Here is what collaborating with Maestro looks like in a session:
1. Beatmaking & Groove
You: "Build me a driving 126 BPM techno groove. Punchy 909 kick, a crisp clap on 2 and 4, and rolling 16th closed hats with a bit of velocity groove and swing."
Assistant: Created track Techno Drums with a 909 Drum Rack and a 4-bar looped clip at 126 BPM:
Kick: Four-on-the-floor on C1 with accented downbeats.
Clap: Sitting on beats 2 and 4 on D#1.
Hi-Hats: 16th notes on F#1 with alternating velocity dynamics (92 / 76 / 86 / 76) and a 57% groove swing.
Clip is ready and playing.
2. Sound Design & Automation
You: "The hats feel too loud and harsh. Drop them by 2.5 dB, add an Auto Filter to the lead synth, and draw a 4-bar low-pass sweep that opens up towards the drop."
Assistant:
Reduced the Hi-Hat chain volume by -2.5 dB.
Added an Auto Filter (Low-Pass) to track Lead Synth.
Created a 4-bar automation envelope on the filter cutoff frequency, sweeping from 600 Hz smoothly up to 18 kHz.
3. Harmony & Chords
You: "Add a lush Neo-Soul chord progression in D minor on an Electric piano track. Keep the chords laid back with realistic human velocity."
Assistant:
Created a MIDI track Electric Piano with a Rhodes preset.
Wrote a 4-bar progression (Dm9 - G13 - Cmaj9 - A7#9) with slight timing humanization and soft velocities between 65 and 85.
What you can do
Workflow | Example prompt | What Maestro does |
🥁 Drums & Beats | "Create a 4-bar UK Garage drum beat with swung hats and ghost snares" | Creates drum tracks, loads kits, places MIDI notes with realistic velocities and swing |
🎹 Chords & Melodies | "Write an 8-bar melodic bassline in F minor that follows the root notes" | Generates chord progressions, basslines, melodies, and arpeggios |
🎛️ Sound Design | "Open the Wavetable filter cutoff to 65% and increase resonance slightly" | Adjusts native instruments, synthesizers, and audio effect parameters |
📈 Automation & Envelopes | "Automate a reverb swell over the last 2 bars before bar 33" | Draws precise parameter curves, filter sweeps, volume swells, and modulation |
🎚️ Mixing & Levels | "Turn the bass down 3 dB, pan the rhythm guitar 25% left, and add a chorus" | Sets track volumes, panning, sends, returns, and insert effects |
🎼 Arrangement & Structure | "Duplicate the verse clip to bar 17 in the Arrangement and drop a locator called Drop" | Moves clips to the arrangement timeline, sets cue points/locators, loops sections |
🎚️ Editing & Groove | "Transpose the synth lead up a minor third and quantize to 1/16 notes at 70%" | Transposes pitches, quantizes timing, modifies note lengths, and adjusts velocities |
Why Maestro is reliable
Most AI DAW integrations send commands blindly and hope for the best.
Maestro is built on a two-way verification engine:
Every change is checked: When Maestro adjusts a parameter, writes a note, or moves a fader, it reads the value back from Ableton Live in real time to verify that the change actually took effect.
Accurate feedback: If a parameter is at its maximum or Live constraints prevent an action, Maestro reports this immediately instead of giving false confirmations.
Empirical LOM catalog: Built on a catalog of 1,164 rows across 5 files, with 1,128 verified live against Ableton Live, spanning tracks, clips, native devices, and the browser.
Quick start
1. Set up the server
Clone the repository and set up the Python environment:
git clone https://github.com/romanstark/ableton-maestro.git
cd ableton-maestro
python -m venv .venvActivate the environment:
Windows (PowerShell):
.venv\Scripts\activatemacOS / Linux:
source .venv/bin/activate
Install dependencies:
pip install -e ".[dev]"2. Install the Ableton Remote Script
Run the automated installer:
python scripts/install_script.pyThis copies the remote script to your Ableton User Library. Then restart Ableton Live and enable it:
Live → Preferences / Settings → Link, Tempo & MIDI → Control Surface →
AbletonMaestro
Verify the connection:
python -m ableton_maestro.client ping3. Connect your AI assistant
Add the server to your MCP client configuration (e.g., Claude Desktop, Antigravity IDE, Cursor):
{
"mcpServers": {
"ableton-maestro": {
"command": "/absolute/path/to/ableton-maestro/.venv/Scripts/python.exe",
"args": ["-m", "ableton_maestro.server"]
}
}
}Open a project in Ableton Live and start by asking: "What tracks are in this set?"
Your music stays yours
100% Local: All communication between your AI assistant and Ableton Live happens over a local, internal loopback connection on your computer.
No telemetry or cloud tracking: Maestro collects zero analytics, has no database, and does not upload your MIDI, audio, project files, or prompts to any external server.
Minimal dependencies: Pure local code with no hidden web scrapers or cloud telemetry.
What stays in your hands
Ableton Live's API is extensive, but some things are intentionally reserved for you in the DAW interface:
Task | Why | How to do it |
Export / Audio Bounce | Not exposed by Live's scripting API | Use File → Export Audio/Video in Live |
Save Project | Not exposed by Live's API | Press Ctrl+S / Cmd+S as usual |
Group Tracks | Read-only in Live's API | Press Ctrl+G / Cmd+G in Live |
Unconfigured Third-Party VSTs | Live only surfaces plugin parameters configured in the device strip | Click Configure on the VST and click the parameters you want exposed |
Critical Listening | AI can shape parameters, but only you have ears | Listen on your monitors/headphones and guide the music |
Also using Steinberg Dorico?
If you also work with music notation, check out Dorico Maestro, an MCP server built with the same architecture for Steinberg Dorico. Use the same AI assistant to bridge your workflow between session sketching in Ableton and engraving parts in Dorico.
Documentation & Developer Resources
For technical details, architecture specs, and contributing:
docs/architecture.md: Internal architecture and Live Object Model integration
docs/protocol.md: Wire protocol and communication specification
docs/catalog.md: LOM catalog schema and verification rules
docs/limits.md: Technical constraints and API boundary measurements
CONTRIBUTING.md: Contribution guidelines and developer setup
LICENSE: AGPL-3.0 License
Available Tools
35 toolsals_readA
Read saved Ableton project (.als) or rack (.adg) structure directly from disk.
Args:
path: Filesystem path to .als or .adg file.
with_notes: When True, parses clip notes and calculates note metrics.
track: Optional track name or index to query a specific track instead of the entire project.
report: When True, includes formatted human-readable summary report.
Returns:
Dictionary containing project metadata, track list, devices, and automation structure.
Note:
This is Channel B, a peer of the live connection rather than a fallback. It
answers two questions the LOM never will: what is in someone else's project, and
where an envelope's breakpoints actually sit.
Automation lives in two places and the LOM can read only one of them. Measured
over 174 professional projects: 52 (30 %) have clip envelopes but 159 (91 %) have
track automation, and a tool that counted clip envelopes alone reported 110 of
those projects as unautomated. The two layers are reported separately here and
are never added together.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| track | No | ||
| report | No | ||
| with_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Zero annotations are provided, so the description carries the full burden — and it delivers. It discloses the disk-vs-live distinction, and adds a genuinely useful data-model insight: automation lives in two places, with empirical stats (52/174 projects have clip envelopes vs 159/174 have track automation) warning an agent not to conclude a project lacks automation when only clip envelopes are absent. This is high-value behavioral context well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Clean, front-loaded structure: one-line summary, Args, Returns, then a clearly marked Note for contextual guidance. The Note section is the longest part but every clause carries routing or data-model value; no filler sentences. This is appropriately sized for a 4-parameter tool with a nuanced niche.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, all parameters, the return container, and the niche use cases, and an output schema exists so return detail is not needed. The only real gap is failure behavior for a disk read — missing/corrupt file, unsupported .als version — which an agent will not be prepared for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does completely: the Args block documents all four parameters. Path gains accepted extensions (.als/.adg), track gains 'name or index' semantics, and both booleans get their behavioral effects ('parses clip notes and calculates note metrics,' 'formatted human-readable summary report'). Every parameter receives meaning beyond its title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read saved Ableton project (.als) or rack (.adg) structure directly from disk,' naming exact file types and the disk source. The 'Channel B' framing positions it against the live-connection LOM tools (get_session, get_track, get_clip) and its counterpart als_write, so an agent can tell it apart without opening schemas. Naming the two questions it answers — 'what is in someone else's project' and 'where an envelope's breakpoints actually sit' — makes scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit routing: 'This is Channel B, a peer of the live connection rather than a fallback' says when-not to use it, and the two questions it alone can answer give concrete selection criteria for when to use it over the LOM. It names the alternative by class ('the LOM') rather than specific sibling tool names, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
als_writeA
Edit a saved .als project file on disk. Requires confirm=True.
Supported operations: 'sidechain', 'configure', 'attribute', 'restore'.
Target project file must not be currently open in Live unless confirmed.
Args:
path: Path to target .als project file.
operation: Modification operation ('sidechain', 'configure', 'attribute', 'restore').
confirm: Confirmation flag required to execute modifications.
target_track: Name of track containing target device.
source_track: Name of track providing trigger source (sidechain operation).
device: Device index within target track.
tap: Sidechain tap point ('pre' or 'post').
expression: ElementTree path expression (attribute operation).
value: New attribute value or configure assignment string ('<index>=<name>; ...').
attribute: Attribute name to modify (attribute operation, defaults to 'Value').
index: Target element match index when expression matches multiple elements.
create: When True, creates attribute if missing.
backup: Backup filepath required for restore operation.
allow_live_running: Allow write when Live runs (auto-enabled if holding another set).
Returns:
Dictionary reporting write status, changes made, and verification report.
Note:
``sidechain`` is here for the set Live is not holding, someone else's project
wired on disk. Measured in a corpus of 174 projects: 74 of 82 in the
house/trance BPM window use sidechain compression, median 6 wirings each. For
the set on screen use ``lom_set`` and keep the read-back.
``configure`` fills a plugin's parameter strip, which no LOM call can do
whatever the strip currently holds. Measured 2026-09-01 against Live 12.4.5: two
parameters written into an instance whose strip held nothing came back on reopen
with their real values, writable through ``lom_set`` with ``read_back: applied``.
Live allocates 128 slots per instance and leaves them all in the file, so
nothing is inserted; three fields of an existing element are filled.
``attribute`` sets one attribute anywhere in the file, addressed by an
ElementTree expression. An expression matching more than one element is refused
unless ``index`` picks one.
| Name | Required | Description | Default |
|---|---|---|---|
| tap | No | post | |
| path | Yes | ||
| index | No | ||
| value | No | ||
| backup | No | ||
| create | No | ||
| device | No | ||
| confirm | No | ||
| attribute | No | Value | |
| operation | Yes | ||
| expression | No | ||
| source_track | No | ||
| target_track | No | ||
| allow_live_running | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well. It discloses the confirmation requirement, the open-file restriction, measured behavior for sidechain and configure operations, that configure fills plugin parameter strips which LOM calls cannot, that 128 slots are allocated with no insertion, and that attribute refuses ambiguous ElementTree matches unless index is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, requirement, and operations before the Args block. The Note section adds valuable behavioral detail but is somewhat cluttered with corpus statistics and a measured-date aside that are less directly actionable for tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 14-parameter tool with no annotations and no schema descriptions, the description covers most needed guidance: parameters, safety confirmations, file-open conditions, and behavioral notes. Gaps remain for the 'restore' operation, the exact meaning of 'backup', and how allow_live_running relates to the confirmed/unconfirmed open-file rule. The presence of an output schema offsets some need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by documenting all 14 parameters with purpose beyond field names. Most are clear, such as tap ('pre' or 'post'), expression as an ElementTree path, and value as a configure assignment string. However, 'backup' is only described as 'Backup filepath?' which is incomplete, and 'allow_live_running' is vague ('Whether Live may be running') given the earlier open-file condition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Edit a saved .als project file on disk.' It also lists the four supported operations ('sidechain', 'configure', 'attribute', 'restore'), so an agent can immediately see what the tool does and how it differs from live-set tools like lom_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditions: requires confirm=True, the target file must not be open in Live unless confirmed, and it explicitly directs on-screen set edits to lom_set instead. It does not fully explain when to choose among the four operations, nor does it compare against als_read for reading files, which leaves some selection guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrangeA
Duplicate a Session clip into the Arrangement timeline at a beat position.
Args:
track: Source track index in song.tracks.
slot: Source scene/slot index in track.clip_slots.
at_beat: Target start position on the Arrangement timeline in beats.
to_track: Destination track index (defaults to source track).
Returns:
Dictionary containing placement status and arrangement clip counts.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes | ||
| at_beat | Yes | ||
| to_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry behavioral disclosure. It does state the core behavior (duplicate, not move), the destination, and an expected return value ('placement status and arrangement clip counts'). However, it does not disclose what happens if a clip already exists at the target beat, whether the source remains untouched, or any permission/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 informative first sentence, followed by a compact Args block and a one-line Returns note. No wasted words; the most important action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single mutation with four params, no annotations, and an output schema, the description provides all calling details and return shape. The only notable gap is target-conflict/overwrite behavior, which keeps it just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully: it defines track as source index in song.tracks, slot as scene/slot index, at_beat as target start position in beats, and to_track as destination with source-track default. This gives real meaning beyond the schema's bare integer/anyOf types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (Duplicate), a specific resource (Session clip), and a precise destination (Arrangement timeline at a beat position). This clearly separates it from siblings like set_arrangement_time or create_clip even though no sibling is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the first line: use this to copy a Session clip into the Arrangement. There is no explicit when/when-not guidance or comparison with alternatives such as create_clip or write_clip_notes, so it meets but does not exceed the implied-usage bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_automationA
Delete automation envelopes on a Session clip. Requires confirm=True.
When confirm=False, inspects clip and reports envelope existence without deleting.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
parameter: Target DeviceParameter LOM path when clearing a single envelope.
all_envelopes: When True, clears all envelopes on the clip.
confirm: Confirmation flag required to execute clearing.
Returns:
Dictionary reporting clearance status or pending envelope details.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes | ||
| confirm | No | ||
| parameter | No | ||
| all_envelopes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 and handles it well. It explicitly states that deletion requires confirm=True, that confirm=False inspects instead of deleting, and that the return value reports either clearance status or pending envelope details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: a front-loaded behavioral summary, a two-line confirm-mode distinction, a concise Args list, and a one-line Returns note. Every sentence adds useful information 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?
Given that the tool has five parameters, no annotations, and dual destructive/inspection behavior, the description covers all essential invocation semantics. An output schema already exists for the return shape, so the brief Returns line is sufficient, and nothing needed to call the tool correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args block is essential and fully compensates. Every parameter is explained in meaningful terms: track and slot index positions, parameter as a DeviceParameter LOM path, all_envelopes selecting full clearance, and confirm as the mandatory execution gate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Delete automation envelopes on a Session clip.' It then clarifies the confirm-dependent dual behavior, which distinguishes it from sibling tools like read_automation, write_automation, and clip-level deletion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains two modes clearly: confirm=True executes deletion, confirm=False inspects and reports without deleting. However, it never names sibling alternatives or states when to prefer clear_automation over read_automation or write_automation, so routing guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clipA
Create an empty MIDI clip of specified length in a Session slot.
Args:
track: Track index in song.tracks (MIDI track required).
slot: Scene/slot index in track.clip_slots.
length_beats: Clip loop length in beats (defaults to 4.0).
name: Optional clip name.
Returns:
Dictionary containing clip creation status and read-back verification.
Note:
Does not overwrite occupied slots; call delete_clip first if replacing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| slot | Yes | ||
| track | Yes | ||
| length_beats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the MIDI-track requirement, the no-overwrite behavior, and the fact that the result is read-back verified. It does not state the exact error/failure mode for occupied slots or invalid inputs, which would make the behavior fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, then organized into compact Args, Returns, and Note sections. There is no filler; each section provides necessary operational 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 create operation with no annotations, the description covers the Session context, MIDI-track requirement, occupied-slot caveat, and verification return. It is complete for normal invocation; only edge-case failure behavior is left unspecified, 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 coverage is 0%, so the description must compensate, and it does: all four parameters are documented with semantic meaning beyond the schema. Track is an index into song.tracks and must be MIDI, slot is an index into track.clip_slots, length_beats is loop length in beats with a default, and name is optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: create an empty MIDI clip of specified length in a Session slot. It also clarifies that the target must be a MIDI track, which distinguishes it from general clip operations and siblings like write_clip_notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The core use case is clear from the first sentence, and the note adds an explicit when-not: it does not overwrite occupied slots and directs agents to call delete_clip first when replacing. It does not explicitly route to sibling tools such as write_clip_notes for workflows that need note content, so it stops just short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_trackA
Insert a MIDI, audio, or return track and return its resolved index.
Args:
kind: Track kind ('midi', 'audio', or 'return').
index: Insertion index (-1 inserts at the end without shifting existing track indices).
Ignored for return tracks.
name: Optional track name for MIDI or audio tracks.
Returns:
Dictionary reporting track creation status and before/after track counts.
Note:
Inserting before existing tracks renumbers subsequent track indices.
Measured 2026-08-30 against Live 12.4.5.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | midi | |
| name | No | ||
| index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It explains track renumbering, resolved-index semantics, returned status/counts, and the measured Live version. The first line promises a resolved index while the Returns section mentions a dictionary, leaving a minor ambiguity about where the index appears.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is organized into Args, Returns, and Note sections, front-loaded with the action, and every sentence contributes technical detail. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no annotations and zero schema descriptions, the description covers parameter semantics, edge cases, side effects, return shape, and version context. An agent can invoke it correctly without needing extra inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully explain the parameters. It does this clearly: kind choices, insertion-index behavior including -1, and name's optionality, all adding meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action, 'Insert a MIDI, audio, or return track', and states the output it returns. This clearly differentiates it from sibling tools like create_clip or delete_track by focusing on track creation and index resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit per-kind behavior and index semantics, including the special -1 case and the fact that index is ignored for return tracks. It does not name alternative sibling tools, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_clipA
Delete the clip in a Session slot. Requires confirm=True.
When confirm=False, inspects slot and reports clip details that would be deleted.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
confirm: Confirmation flag required to execute deletion.
Returns:
Dictionary reporting deletion status or pending loss report.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it succeeds: it discloses the destructive action, the mandatory confirmation flag, the dry-run behavior, and the return dictionary. This is strong transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, then the safety behavior, then concise parameter docs and return type. No filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with an output schema, the description covers selection, deletion, safety flag, parameters, and return value. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section explains track as an index in song.tracks, slot as an index in track.clip_slots, and confirm as the execution gate—adding meaning beyond bare property names. It could be slightly stronger with index base or default handling, but it is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete the clip in a Session slot') and clarifies the confirm-gated deletion behavior versus the dry-run inspection mode. This clearly distinguishes it from sibling tools like delete_track or delete_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says deletion requires confirm=True and that confirm=False inspects the slot and reports what would be deleted, which is concrete usage guidance. It does not name alternatives or state when not to use the tool, but the context is clear enough for an agent to select it for deleting clips.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_deviceA
Remove a device from a track device chain. Requires confirm=True.
When confirm=False, reports device details and parameter count that would be removed.
Args:
track: Track index in song.tracks.
device: Device index within track chain.
confirm: Confirmation flag required to execute deletion.
Returns:
Dictionary reporting deletion status or pending loss report.
Note:
Deleting a device shifts subsequent device indices down by one.
Measured 2026-08-30 against Live 12.4.5: Devices can be reordered via song.move_device.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | ||
| device | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses the destructive gate (confirm=True), the dry-run reporting mode (confirm=False reports device details and parameter count), the side effect that subsequent device indices shift down by one, and even the Live 12.4.5 measurement date. This is exactly the behavioral context an agent needs before invoking a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and the critical confirm requirement are front-loaded in the first two sentences, followed by scannable Args/Returns/Note sections. Each element — the index-shift warning, the pending-loss-report return, the version measurement — earns its place, and the whole description stays under roughly 100 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 three-parameter destructive tool with no annotations and an output schema present, the description is essentially complete: action, safety protocol, all parameter semantics, return summary ('Dictionary reporting deletion status or pending loss report'), post-deletion side effect, and an alternative operation. The output schema covers the return structure, so the slightly cryptic 'pending loss report' phrase is an acceptable summary rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args section fully compensates: track is mapped to 'Track index in song.tracks', device to 'Device index within track chain', and confirm to 'Confirmation flag required to execute deletion.' Every parameter receives domain meaning beyond its raw type, and the confirm default-of-false interacts correctly with the stated 'Requires confirm=True' behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair — 'Remove a device from a track device chain' — and the 'device chain' scoping distinguishes it from sibling deletes like delete_clip and delete_track. It stops short of 5 because the phrasing closely mirrors the tool name itself, so the clarity leans partly on the function name rather than on original framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The confirm=True requirement plus the explain-confirm=False-preview behavior imply a two-phase safe-usage pattern, and the note that devices can be reordered via song.move_device hints at an adjacent alternative. However, there is no explicit when-to-use versus when-not-to-use statement, and the move_device note covers reordering, not a competing deletion path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_trackA
Delete a track and renumber subsequent tracks. Requires confirm=True.
When confirm=False, reports track name, devices, filled Session slots,
and Arrangement clips that would be removed.
Args:
track: Track index in song.tracks.
confirm: Confirmation flag required to execute deletion.
Returns:
Dictionary reporting deletion status or pending loss report.
Note:
Deleting a track shifts all subsequent track indices down by one.
| Name | Required | Description | Default |
|---|---|---|---|
| track | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden. It discloses the destructive action, index-shift side effect, the confirm gate, and the exact preview contents (track name, devices, filled Session slots, Arrangement clips). This is far more transparent than a bare mutation note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well structured with Args/Returns/Note and the core action is front-loaded. Minor redundancy: 'renumber subsequent tracks' repeats in the Note, and 'Requires confirm=True' repeats in the Args.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 two-parameter tool, it covers invocation, preview behavior, return type, and side effects; the output schema fills in the exact return shape. No critical missing context remains despite the lack 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 0%, yet the description fully documents both parameters: track is the index into song.tracks, and confirm is the flag that must be true to delete while false yields a loss report. It compensates for the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence names the exact operation and resource: 'Delete a track' and adds the side-effect 'renumber subsequent tracks'. This distinguishes it from sibling delete_clip/delete_device and leaves no ambiguity about what is acted on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the invocation condition explicit: execution 'Requires confirm=True' and confirm=False acts as a dry-run loss report. It doesn't explicitly mention when to prefer delete_clip or delete_device, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describeA
Introspect any live object: class, properties, children, and methods.
This is the route to the dynamic surface: what a loaded plug-in actually exposes,
which no catalog can know in advance because it is decided at runtime and, for
third-party plug-ins, by what the user picked up in Configure mode.
Args:
path: a LOM path, e.g. ``song``, ``song.tracks[0]``,
``song.tracks[0].devices[1]``. Look shapes up in ``ableton://catalog``.
depth: how far to descend. Deep describes over a whole set can be slow
and the cost is unmeasured.
with_parameters: for a device path, survey every parameter (name, value,
min/max, quantized steps, display unit) instead of just the child
counts, and diagnose an unconfigured plug-in rather than returning a
useless one-entry list.
Methods are never callable through a path. Use ``lom_call``, and only names on the
script's own allowlist.
Measured caveat (Live 12.4.5): the parameter survey depends on
``lom_describe`` reporting a ``count`` for the ``parameters`` child, and a
Live ``Vector`` that refuses ``len()`` reports none, so the survey comes back
with zero parameters on a device that has them. When that happens this tool falls
back to probing parameter indices, reports the names it found, and says which
of the two answers you are looking at.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| depth | No | ||
| with_parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full disclosure burden and meets it: it states the Live 12.4.5 version requirement, the precondition that the connected set be loaded, that rack display is not implemented, that deep describes are slow with unmeasured cost, and that the tool falls back to probing parameter indices and reports which of two answer kinds it is returning. All of this is behavior beyond what the schema could 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?
Purpose statement is front-loaded, followed by context, a clean Args block, then behavioral constraints — a good scan order for an agent. It is long, but every sentence carries information an agent needs. The final paragraph is structurally garbled ('Live 12.4.5. When that happens this tool falls back...') and appears to belong with the with_parameters explanation, which hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a runtime-introspection tool with 3 parameters, no annotations, and an output schema, the description is nearly complete: purpose, all parameter semantics, performance risk, version/platform preconditions, fallback behavior, and routing to lom_call/lom_enums/browser. Notable gaps are the lack of any distinction from the lom_describe sibling and no statement of error behavior for invalid paths, though the presence of an output schema relaxes the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema provides no parameter help, so the description must compensate fully. It does: path gets concrete LOM examples (song.tracks[0].devices[1]) plus a pointer to ableton://catalog, depth gets a cost caveat, and with_parameters gets its complete effect (name, value, min/max, quantized steps, display unit) and its diagnostic purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Introspect any live object: class, properties, children, and methods,' which enumerates the exact outputs and separates it from get_* tools, lom_get, and lom_call. However, it never addresses the near-identically-named sibling lom_describe, so an agent cannot tell whether describe is an alias, a wrapper, or a distinct operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when this tool is the right choice ('the route to the dynamic surface...which no catalog can know in advance') and gives direct when-not guidance with named alternatives: 'Methods are never callable through a path. Use lom_call' and 'call lom_enums for rack.lom_parameters and browser for presets.' It also tells when to set with_parameters (diagnose an unconfigured plug-in).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clipA
Read one Session clip's properties: length, loop, warp, pitch, markers, flags.
Checks the slot is filled first, because a clip only exists while its slot
has one and every property read would otherwise fail one by one.
Notes are not properties; use ``read_clip_notes``. Automation is not a property
either; use ``read_automation``.
``warping``, ``warp_mode`` and ``pitch_coarse`` are reachable only through a generic
path, because a per-command bridge has no command for them and a missing command is
easily mistaken for a missing capability (docs/architecture.md, 'the restart tax').
Each was read, written, read back and restored on 2026-08-29 against Live 12.4.5, and
all three rows are ``verified``. ``pitch_fine`` is read-verified only, with no write
attempted on it, and the integer mapping behind ``warp_mode`` is still a hypothesis:
confirm it against ``clip.available_warp_modes``, which is the authoritative per-clip
list.
Writing ``warping`` invalidates every time field this tool just returned. Measured
2026-08-30 against Live 12.4.5 on a 1.14-unit audio clip at 120 BPM: turning warping
on took ``loop_end`` from 0.5704 to 1.1408 and ``end_marker`` from 1.1408 to 2.2816,
both doubled, while ``length`` did not follow. At 60 BPM the same toggle moved
neither. The mechanism is not established and is not claimed; what is established is
that the numbers move and that the factor tracks the tempo. Call this again after any
write to ``warping`` rather than reusing what it said before.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and over-delivers: it reveals the filled-slot precheck, the generic-bridge limitation for waring-mode fields, the verified vs. hypothesis status of specific fields, and the measured fact that writing waring changes time values. It also honestly notes what is and is not established about the mechanism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool purpose is front-loaded and later paragraphs are clearly structured by topic. The content is unusually long, but most of it is substantive caveat material; some measured-detail sentences could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain return values, and it covers the important behavioral complexity: missing bridge commands, verification status, warp_mode hypothesis, and invalidation of returned time fields. The main gap is that the parameters themselves are left essentially undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the description does not explain 'track' or 'slot' beyond mentioning 'slot' in the filled-slot check. It does not state indexing, coordinate meaning, valid ranges, or how the clip is addressed. For two unannotated integer parameters, more parameter guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb plus resource: 'Read one Session clip's properties' and lists the property groups. It also distinguishes itself from siblings by stating that notes and automation are not properties and routing those to read_clip_notes and read_automation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives ('read_clip_notes', 'read_automation') and states when they should be used instead. It also gives a direct after-write guideline: call this again after any write to 'warping' rather than reusing prior results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_devicesB
List a track's device chain: names, class names, on/off, parameter counts.
The parameter count is worth reading first. A third-party plug-in reporting exactly
one parameter has not been configured; see the ``configure_needed`` flag and the note
it carries. That is a limit in Live, not in this server, and it is lifted only in
Live's GUI.
The parameter probe here only has to settle "exactly one, or more than one",
which is what tells an unconfigured plug-in apart from a configured one. For
the full list call ``describe`` with ``with_parameters=True``.
Device order can be changed, though it is widely assumed to be fixed. The call sits
on the Song rather than on the Device, which is why it reads as missing:
``Song.move_device(device, target_chain, position)``, catalogued as
``song.move_device`` and reachable through ``lom_call``. Measured 2026-08-30 against
Live 12.4.5 on a scratch track: ``['Eq8', 'Compressor2', ...]`` became
``['Compressor2', 'Eq8', ...]``.
Loading order is still worth planning, because it decides what survives. Effects are
appended, and an instrument replaces the instrument already on the track (measured),
taking its settings and its clip envelopes with it. Reordering afterwards is a
convenience; a replaced instrument is not recoverable.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | track | |
| track | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The genuine get_devices content is highly transparent: it explains the configure_needed flag, why a one-parameter third-party plug-in signals an unconfigured device, that the probe only settles one-vs-many, that order can change, and that the call lives on the Song. With no annotations, however, the description carries the full burden, and the appended paragraph describing instrument replacement and non-recoverable loss misattributes destructive behavior to this listing call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is front-loaded in a clean first sentence, but the description then drifts into a move_device tangent, a garbled measured fragment, and a loading-order paragraph that appears to belong to load_device. Length without coherent structure makes the agent's parse more expensive, not less.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details need not be spelled out, and the core configure_needed semantics are covered thoroughly. Still, kind is never documented, edge cases like a missing track are absent, and the off-topic load_device content adds confusion rather than completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description was expected to compensate, but it never explains the kind parameter (default track) or how to address the track. The only parameter-related hint is 'a track's device chain', which adds nothing beyond the schema's track integer property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: it lists a track's device chain with names, class names, on/off, and parameter counts. It also distinguishes itself from describe by pointing to it for the full parameter list. However, the trailing paragraphs about move_device and loading order dilute the core purpose and could be mistaken for this tool's own responsibilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one explicit routing rule: call describe with with_parameters=True for the full parameter list, and it mentions lom_call for song.move_device. But it never says when get_devices is preferable to get_track or describe, and the final paragraph about loading order reads as advice for load_device, which is misleading in this context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionA
Survey the running set: script handshake, song fields, tracks, clips, devices.
Args:
clips: Sweep Session slots for active clips.
devices: Include device chains for each track.
max_scenes: Maximum number of scenes to probe for Session clips.
Returns:
Dictionary with script info, session snapshot, track counts, and notes.
Note:
Measured 2026-08-29 against Live 12.4.5: Round-trip handshake takes ~450 ms.
Group tracks do not support arm state ('armed' returns null).
If Live collection introspection reports zero tracks, index probing is used as a fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| clips | No | ||
| devices | No | ||
| max_scenes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds useful context: measured round-trip latency (~450 ms), group track arm state returning null, and a fallback probing strategy when Live reports zero tracks. It does not explicitly state read-only behavior, but 'Survey' strongly implies non-mutating intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into Args, Returns, and Note sections. Every sentence provides useful information: parameter meaning, return shape, performance characteristic, an edge case, and a fallback behavior. 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?
Even without annotations, the description covers the key behavioral details an agent needs: what the tool returns, how each parameter affects the call, a known edge case, and latency/fallback caveats. An output schema exists, so the return dictionary structure does not need to be spelled out here. This is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully document parameters, and it does. It explains clips as 'Sweep Session slots for active clips', devices as including device chains per track, and max_scenes as the cap on scenes probed. This adds genuine meaning beyond the bare boolean/integer schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Survey') with a clear resource ('the running set') and enumerates the components covered: script handshake, song fields, tracks, clips, devices. This makes it easy to distinguish from targeted siblings like get_track, get_clip, and get_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: call this when you need a session-wide snapshot including tracks, clips, devices, and script handshake state. It does not explicitly name alternatives or state when not to use it, but the whole-session scope is evident from the first sentence and the Returns summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackA
Read one track's mixer state, flags, device chain, sends and clip slots.
Args:
track: index in ``song.tracks`` (or ``song.return_tracks`` for
``kind="return"``). Ignored for ``kind="master"``.
kind: ``track`` | ``return`` | ``master``.
``volume`` and ``panning`` are normalised, not dB: 0.85 is 0 dB (measured),
and the scale is not linear. ``display`` carries the dB reading where Live
offered one.
``arm`` is read only after ``can_be_armed`` says the question applies, because
reading it on a group track raises inside Live and would break the whole batch
(measured). It comes back as ``null`` where it does not apply.
Device names, send values and which clip slots are filled are measured by
probing indices in one batch, because Live's collections report no length
(see ``notes``).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | track | |
| track | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 and does so excellently. It discloses non-linear volume/panning scale, dB display behavior, the guard for reading arm only when can_be_armed allows it, the null result when not applicable, and the index-probing batch strategy for device names and clip slots. This is rich, measured context beyond what any schema could 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?
The description is front-loaded with a one-sentence purpose, then uses short labeled paragraphs for arguments and behavior caveats. Every sentence adds essential information, and the structure makes the caveats easy to scan without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and only two parameters, the description is complete. It covers the main return categories, the special scaling of volume/panning, the arm edge case, and the probing limitation with Live's collections. An agent has everything needed to invoke it correctly and interpret 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 0%, so the description must fully explain the parameters. It does: track's interpretation changes based on kind, kind accepts track/return/master, and track is ignored for master. It also clarifies nuanced output semantics tied to these parameters, such as arm read restrictions and normalized volume/panning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Read one track's mixer state, flags, device chain, sends and clip slots.' This clearly distinguishes it from sibling tools like get_session, get_clip, and get_devices. The scope is precise and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when get_track is appropriate: when reading a single track's state, including mixer, flags, devices, sends, and clip slots. It does not explicitly name alternatives or state when not to use it, but the read-only, single-track focus is obvious enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_deviceA
Search Live's browser and load a device onto the currently selected track.
Two-step process: with confirm=False, searches browser and returns candidate items
along with currently selected track info. With confirm=True and a chosen uri or item_path,
loads the item.
Args:
query: Search string for browser items.
root: Optional browser root category to search within.
uri: Browser item URI returned from search step.
item_path: Direct filesystem or library item path.
limit: Maximum number of search candidates to return (defaults to 12).
confirm: Confirmation flag required to execute loading.
Returns:
Dictionary containing search candidates or device load verification details.
Note:
Browser.load_item targets the current selection rather than an explicit track argument.
Target track is determined by song.view.selected_track.
Inside racks or drum racks, target destination is determined by rack.view.selected_chain
or rack.view.selected_drum_pad.
Instruments replace the track instrument, whereas audio/MIDI effects are appended.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | No | ||
| root | No | ||
| limit | No | ||
| query | No | ||
| confirm | No | ||
| item_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly discloses that the tool targets the currently selected track rather than an explicit track argument, explains rack/drum rack destination behavior, and notes that instruments replace while effects append. This is valuable behavior not inferable from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized with a clear summary, step breakdown, Args list, Returns, and Notes. It is slightly lengthy but every section adds needed behavioral context. The most critical usage information is front-loaded in the first two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 6 parameters at 0% schema coverage, and an output schema present, the description provides a complete picture: how to search, how to confirm, what the parameters mean, the target-selection side effects, and the return value. An agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter's role (query, root, uri, item_path, limit, confirm) in the context of the two-step workflow, giving semantics beyond the bare schema names and defaults. It also clarifies the relationship between uri, item_path, and confirm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description has a clear verb+resource: 'Search Live's browser and load a device onto the currently selected track.' It explains a two-step search-then-confirm process, which distinguishes it from generic device operations and sibling tools like get_devices or lom_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two-step workflow: first call with confirm=False to search, then call with confirm=True and a uri/item_path to load. It does not explicitly name sibling tools as alternatives, but the workflow guidance is enough for an agent to understand when to use confirm and why.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_batchA
Execute multiple raw LOM operations (get, set, call) in a single round trip.
Args:
ops: List of operation dictionaries ({'op': 'get'|'set'|'call', 'path': ...}).
atomic: When True, stops execution on the first encountered error.
Returns:
Dictionary containing ordered results for each operation.
Note:
A batch runs inside one handler call, so nothing Live recomputes between
operations is visible to a later operation in the same batch. A read that
follows a transport jump in the same batch still reports the position from
before the move. Measured 2026-09-01 against Live 12.4.5: four jumps
interleaved with four reads returned four identical pre-jump values and no
error at all. That is the failure shape to expect here. It does not raise; it
returns a clean set of numbers that look like a measurement of a parameter which
never changes, and the conclusion drawn from them is wrong. Sample a moving
transport with one call per position, never inside a batch.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | ||
| atomic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does an excellent job: it discloses that Live does not recompute between operations, that reads after transport jumps return stale values, that this specific failure does not raise, and that it produces misleadingly clean results. This is precisely the behavioral context an agent 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?
The description is well-structured with clear Args, Returns, and Note sections. It is longer than average, but the extra detail about the batch stale-read failure mode earns its place because it prevents a subtle incorrect conclusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers execution semantics, return shape, atomic behavior, and the critical caveat about transport reads inside batches. Combined with the abundant schea parameter docs, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining ops as a list of operation dictionaries and clarifying atomic as stopping on first error. The schema covers the details of op, path, args, value, and method, so the high-level summary in the description is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes multiple raw LOM operations (get, set, call) in a single round trip. This is a specific verb+resource combination that differentiates it from the sibling single-operation tools lom_get, lom_set, and lom_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this is for batching multiple operations to reduce round trips and explicitly warns that moving transport should be sampled 'one call per position, never inside a batch.' It could name alternatives more explicitly, but the when-not guidance is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_callA
Invoke an allowlisted method on a Live object.
Args:
path: Dotted LOM path to target object.
method: Allowlisted method name to execute.
args: Optional list of positional arguments.
Returns:
Dictionary reporting method execution status.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| path | Yes | ||
| method | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses that the return value is a dictionary reporting execution status and that only allowlisted methods can be invoked, which is useful context. However, it does not mention potential side effects of calling methods, error behavior, or whether calls may mutate the Live session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and organized into Args and Returns sections. Every sentence provides useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential invocation inputs and return shape, and an output schema exists so return details need not be fully restated. However, for a generic method-calling tool with no annotations and many siblings, it leaves gaps: the allowlist itself is not defined or linked, side-effect risks are unaddressed, and no guidance is given for choosing between lom_call and related batch/get/set tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining each parameter: path is a dotted LOM path, method is an allowlisted method name, and args is an optional list of positionals. This adds meaning beyond the bare schema titles of 'Path', 'Method', and 'Args'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 invokes an allowlisted method on a Live object, which is a specific verb and resource. It is distinguishable from sibling tools like lom_get, lom_set, and lom_batch by focusing on method invocation, though it does not explicitly name or contrast those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used when a method on a LOM object needs to be called, rather than for reading or writing properties. However, it provides no explicit guidance on when to prefer lom_call over siblings like lom_get, lom_set, or lom_batch, and it does not define what qualifies as 'allowlisted'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_describeA
Introspect an object generically by LOM path.
Args:
path: Target LOM path.
depth: Traversal depth for nested child collections (defaults to 1).
Returns:
Dictionary reporting object class, properties, children, and allowed methods.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly indicates a read-only introspection operation, explains the effect of the 'depth' parameter on nested collections, and summarizes the return content. It does not mention error behavior or permissions, but 'Introspect' strongly implies non-mutation and the return schema is described adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and uses a clear Args/Returns structure. Every sentence yields information, and there is no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers the main inputs, the meaning of depth, and the return content; an output schema exists to clarify the exact dictionary structure. The only gaps are usage context and possible error behavior, but for a generic introspection tool the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by defining 'path' as the target LOM path and 'depth' as the traversal depth for nested child collections, with a note on its default. This adds meaning beyond the bare type definitions in the schema, though it lacks examples or syntax details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Introspect') and resource ('an object generically by LOM path'), and the Returns section clarifies that it reports class, properties, children, and allowed methods. It is clear about its generic scope, but it does not explicitly distinguish itself from the sibling tool 'describe', which could overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to choose this tool over alternatives like 'describe', 'lom_get', or 'lom_call'. The word 'generically' hints at a use case, but there are no exclusions or comparisons, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_enumsA
Query member names and integer values for Live enum types.
Args:
type_name: Dotted Live enum name (e.g. 'Song.Quantization'). Omit to list enum types.
Returns:
Dictionary of enum member names and mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| type_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It clearly signals a read-only query operation and describes the return shape and the effect of omitting type_name. It does not discuss invalid input behavior, but that is a minor gap for a simple query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence summary followed by Args and Returns sections. Every sentence adds useful information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter query tool with an output schema, the description is complete. It covers the parameter semantics, the default behavior, and the return type. Nothing critical 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?
The schema only provides a defaulted string parameter with no description. The tool description fully compensates by explaining the dotted enum name format, giving a concrete example ('Song.Quantization'), and stating the behavior when omitted. This is exactly what an agent needs to invoke it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Query') and resource ('Live enum types'), and mentions the returned data ('member names and integer values'). It is clear about what the tool does, though it does not explicitly differentiate itself from sibling tools like lom_describe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter-level guidance ('Omit to list enum types') and the purpose implies use when enum information is needed. However, it does not explicitly state when to prefer this tool over alternatives such as lom_describe or lom_get, leaving tool-selection comparisons implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_getA
Read a property value by LOM path.
Args:
path: Dotted LOM path starting with 'song', 'app', or 'song.view'.
Returns:
Dictionary containing path, value, type, and optional parameter display string.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states this is a read operation and describes the return dictionary. However, it doesn't disclose edge cases like invalid paths, permission requirements, or whether missing properties yield errors or null values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, followed by a concise Args/Returns structure. Every sentence contributes without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no annotations) and the presence of an output schema, the description covers the essential invocation details and return shape. It lacks usage context versus siblings, but that gap is already scored in usage_guidelines and doesn't undermine basic callability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does meaningfully explain the single parameter: 'Dotted LOM path starting with 'song', 'app', or 'song.view''. This adds real semantic value beyond the bare 'path' string in the schema, though exact value formats and examples are absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') with a clear resource ('property value by LOM path') and gives a concrete scope ('starting with 'song', 'app', or 'song.view''). This distinguishes it from most siblings by name/mechanism, though it doesn't explicitly contrast with get_track or get_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling getters, describe, or others. The allowed path prefixes imply a read context, but there are no explicit conditions, exclusions, or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lom_setA
Write a property value by LOM path and return verification read-back.
Args:
path: Settable dotted LOM path.
value: Value to set, or object reference dict {'__path__': '...'} for object properties.
Returns:
Dictionary reporting requested, before, after, clamped, and changed status. For a
device parameter it also carries ``display`` and ``is_quantized``.
Note:
Live does not accept an out-of-range value silently, however often that is given
as the reason to read back. Measured 2026-08-30 against Live 12.4.5: it refuses
them out loud and stores nothing. ``...mixer_device.volume.value = 1.4`` answers
``live_error "Invalid value. Check the parameters range with min/max"`` and the
value stays at 0.85; ``song.tempo = 5000`` answers "Tempo out of range"; a
panning of 5 is refused the same way.
What the read-back really catches, measured the same day, is quantised snap:
``<Compressor>.parameters[10].value = 0.4`` (Model: Peak / RMS / Expand) stored 0,
reporting ``before 1, after 0, clamped: true, changed: true, read_back:
"clamped", display: "Peak", is_quantized: true``. A caller who asks for a value
between two steps gets a different one and is told nowhere else.
Two more, measured separately: a write can apply asynchronously, so the first
read is stale (``read_back: "not_observed"``, which is not ``clamped``), and a
method call has no read-back at all. Live also ignores an unknown property name
silently and reports success for a write that did nothing.
A collection (``song.tracks``, ``device.parameters``) cannot be assigned. Address
an element and set one of its properties.
A Live object cannot travel as a plain value, and there are two cases behind
that. ``song.tracks[0].mixer_device.volume`` is a DeviceParameter and the wanted
value is one level down, so write ``...volume.value``. But a property whose value
really is an object (``song.view.selected_track``, ``song.view.selected_scene``,
``song.view.detail_clip``, ``browser.hotswap_target``, ``clip.groove``, and on a
device ``input_routing_type`` and ``input_routing_channel``) is written by passing
a reference: ``value={"__path__": "song.tracks[2]"}``, resolved through the same
resolver and guards as a ``lom_call`` argument (protocol §5.4). Handed a plain
JSON value the first five answer ``not_settable`` (measured 2026-08-29 against
Live 12.4.5). The two routing properties, a compressor's sidechain source and its
tap point, take their reference out of
``<device>.available_input_routing_types`` and
``...available_input_routing_channels``, never a name string, because RoutingType
carries ``category`` and ``display_name`` read-only and an ``attached_object``
pointing at the Track (measured 2026-08-30, same Live).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses many important behaviors: stale read-back, asynchronous writes, silently ignored unknown properties, collections not being assignable, and object-reference restrictions. However, the repeated out-of-range passages contain an internal inconsistency between 'does not accept an out-of-range value silently' and 'sometimes accepts out-of-range values silently,' which lowers reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is usefully front-loaded, but the description is very long and contains three near-identical paragraphs about out-of-range values and read-back. The duplication, contradictory wording, and garbled terms make it bloated and harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no annotations and no detailed output schema, the description covers most calling scenarios: scalar writes, object-property writes, routing-type references, collection limitations, stale reads, and failure modes. The main gap is the contradictory out-of-range note, which leaves an agent uncertain about one of the tool's core behavioral guarantees.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only real documentation for path and value. It explains dotted LOM paths, scalar values versus object reference dicts {'__path__': '...'}, and gives concrete examples such as song.view.selected_track and available_input_routing_types. This far exceeds what the bare input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Write a property value by LOM path and return verification read-back.' This clearly distinguishes lom_set from siblings like lom_get and lom_call, and names the write-plus-verification behavior without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context for when to set a scalar property versus an object property, warns that collections cannot be assigned, and explains how object references are resolved through the same mechanism as lom_call. It does not explicitly enumerate alternative tools or state 'use lom_call for method calls,' so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playA
Start transport playback and read back is_playing status.
Args:
from_beat: Optional timeline position in beats to cue before playback.
continue_playing: When True, resumes from current position rather than restarting.
Returns:
Dictionary reporting start status and is_playing confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| from_beat | No | ||
| continue_playing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well: it states the action, the conditional resume behavior, and the expected return. The explanation of continue_playing versus restarting adds useful behavioral nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and structured into Args and Returns sections. Every sentence contributes useful information without 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?
This is a simple two-parameter tool with an output schema available. The description covers the behavior, parameter semantics, and return status sufficiently. There are no missing prerequisites or edge-case warnings that an agent would need for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: 'from_beat' is explained as an optional beat-based cue position, and 'continue_playing' is explained as resuming from the current position rather than restarting. This adds real meaning beyond the schema's bare defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Start transport playback', and adds a distinct read-back behavior ('read back is_playing status'). This clearly differentiates it from sibling tools like 'stop' and 'arrange'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage: call it when you need to start transport playback and confirm playback state. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quantize_clipA
Quantize MIDI clip note positions and lengths to a specified beat grid.
Reads notes, calculates quantized positions, writes back using mode='replace',
and verifies the result.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
grid: Quantization grid in beats (0.25 = sixteenth notes, 0.5 = eighth notes).
strength: Quantization strength from 0.0 (no change) to 1.0 (full snap).
quantize_ends: When True, also quantizes note durations / end positions.
Returns:
Dictionary containing write result and quantization details.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | ||
| slot | Yes | ||
| track | Yes | ||
| strength | No | ||
| quantize_ends | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool uses mode='replace' and that it verifies the result, which tells the agent this is a mutating operation. It also explains the strength and quantize_ends behavior. A slight gap is that it doesn't state whether the operation is destructive to undo history or whether it can be applied to empty/session clips, but overall it gives meaningful behavioral detail beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action and target, followed by clear parameter explanations. Every sentence earns its place, including the write/verify behavior. Slight verbosity: 'Reads notes, calculates quantized positions, writes back using mode='replace', and verifies the result' could be tightened, but it is still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core workflow (read, quantize, write, verify), parameter meanings, and return value. An output schema exists, so the return dictionary details are not required. The tool is a mutation that replaces clip notes, and the description makes that clear. Minor gaps: no mention of what happens on invalid track/slot indices or whether the operation preserves note velocity/other note properties, but these are not critical for an agent selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the meaning of grid (with example values 0.25 and 0.5), strength (0.0 no change to 1.0 full snap), and quantize_ends (whether durations are quantized). track and slot are only referred to as 'Track index' and 'Scene/slot index', which matches their schema titles but adds the contextual detail that they are indices into song.tracks and track.clip_slots. This is strong compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Quantize') and resource ('MIDI clip note positions and lengths') with an explicit target ('to a specified beat grid'), and it distinguishes itself from related editing tools like transpose_clip and write_clip_notes by focusing on quantization. The action and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when a MIDI clip needs note positions/durations snapped to a beat grid. It does not explicitly name alternatives or exclusions, but the sibling context makes the differentiation clear (e.g., read_clip_notes/write_clip_notes for raw note editing). Lacks explicit 'use X instead' guidance, so it does not reach 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_automationA
Sample an envelope curve for a parameter on a Session clip.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
parameter: LOM path to the target DeviceParameter.
start: Optional start position in clip-local beats (default skips initial beat 0 guard).
end: Optional end position in clip-local beats.
points: Number of sample points to evaluate (clamped 2 to 512, default 64).
Returns:
Dictionary with sampled values, range, and envelope presence flags.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| slot | Yes | ||
| start | No | ||
| track | Yes | ||
| points | No | ||
| parameter | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains the optional start/end positions, the default behavior of skipping an initial beat 0 guard, the clamping of points to 2-512, and the return shape. It does not mention whether this is a pure read or whether it requires any specific state, but it is clearly a read operation and the return description adds meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, clearly structured with Args and Returns sections, and front-loads the core purpose. Every sentence adds information. It could be slightly more concise in the Returns line, but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return values need not be fully detailed) and 6 parameters, the description is largely complete. It covers parameter semantics, defaults, constraints, and return contents. The only minor gap is the exact format of the LOM path and whether any special track/slot indexing conventions apply, but these are not severe given the output schema and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. It explains track, slot, parameter, start, end, and points in plain terms, including that start is in clip-local beats and that points is clamped. It could add more detail on the LOM path format for parameter, but it covers all 6 parameters meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Sample') and resource ('envelope curve for a parameter on a Session clip'), clearly distinguishing it from sibling tools like write_automation and clear_automation. Its purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for reading automation/envelope data from a Session clip, and sibling names make the contrast with write_automation/clear_automation obvious. It does not explicitly state when to prefer it over alternatives such as read_clip_notes or lom_get, but the specific scoping to envelope curves provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_clip_notesA
Read MIDI notes of a Session clip, query a specific window, or count notes.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
from_time: Start beat of window to query. Omit to query from beat 0.
time_span: Window length in beats. Omit to query to the end of the clip.
count_only: When True, returns note count without transferring note data.
check: When True, performs validation checks on queried notes.
Returns:
Dictionary containing notes, count, window parameters, and validation report.
Note:
Times and positions are expressed in clip-local beats. Muted notes are included
and carry ``mute: true``. ``time_span`` is a length in beats, not an end beat:
beats 24 to 32 is ``from_time=24, time_span=8``.
Windowing and counting exist because there was otherwise no way to ask a small
question. Measured 2026-08-30: surveying note density across 59 drum clips meant
reading every note of every clip, and one clip alone came back as 384 notes and
57k characters, past the tool-result cap, so it spilled to a file. The LOM has no
``note_count`` on ``Clip`` at all, so counting meant transferring everything in
order to measure it. ``count_only=True`` counts inside Live and carries back one
integer.
With ``count_only`` there is nothing to validate, so ``check`` is ignored. With a
window, ``check`` sees the window and not the clip.
Returned notes are sorted by time, then pitch. Live hands its notes back ordered
by pitch, which is the one order a musical instruction never means: "the third
note", "every other note" and "the last note" are all about when a note sounds.
Measured 2026-08-30 against Live 12.4.5: four notes written at beats 0, 1, 2, 3
with pitches 72, 60, 67, 62 came back 60, 62, 67, 72, so taking every other entry
off the raw list picks alternating pitches rather than alternating beats, silently
and plausibly. For Live's own order call ``get_notes_extended`` through
``lom_call``.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| check | No | ||
| track | Yes | ||
| from_time | No | ||
| time_span | No | ||
| count_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers extensively: muted notes are included and marked, times are clip-local beats, time_span is a length not an end beat, and returned notes are sorted by time then pitch. It also documents Live's surprising pitch-first ordering with a dated measured example, which is exactly the kind of behavioral disclosure an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but structured with Args, Returns, and Note sections, and the core purpose is front-loaded. The extended Live ordering anecdote is verbose but earns its place by documenting a subtle, plausible bug that could silently corrupt musical interpretation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, no schema descriptions, no annotations, and subtle runtime behavior, the description is complete: every parameter is semantically covered, return contents are summarized, edge cases are disclosed, and the alternative for Live-native ordering is provided. Nothing required to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully. Each parameter is explained beyond its type: track and slot get index semantics, from_time/time_span get omit behavior and beat units, and count_only/check get precise behavioral meaning including ignored cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read MIDI notes of a Session clip, query a specific window, or count notes.' It clearly distinguishes this from sibling tools like write_clip_notes and read_automation, and even names get_notes_extended when contrasting ordering behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when windowing and counting are appropriate ('no way to ask a small question'), clarifies the semantics of check with and without a window or count_only, and explicitly directs users to get_notes_extended via lom_call when Live's native note order is desired. This gives an agent concrete decision rules rather than 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.
set_arrangement_timeA
Move the Arrangement playhead to a beat position and return read-back position.
Args:
at_beat: Target song time in beats from timeline start.
Returns:
Dictionary with write confirmation and read-back song time.
| Name | Required | Description | Default |
|---|---|---|---|
| at_beat | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the core side effect (moving the playhead) and mentions the return value includes a write confirmation and read-back time, which adds transparency beyond just 'set'. However, it does not disclose whether the operation affects playback state, whether fractional beats are accepted, or what happens if the target beat is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well structured: an action sentence followed by clearly labeled Args and Returns sections. Every sentence contributes meaning, with no repetition or filler. The core behavior is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is largely complete. It explains the input semantics and the type of return value, and the output schema covers the return structure. It lacks only optional behavioral context such as bounds or playback interaction, which is a minor gap for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the parameter explanation in the description is essential. The description defines 'at_beat' as 'Target song time in beats from timeline start', giving the unit (beats), the reference point (timeline start), and the intended meaning. This fully compensates for the bare schema property name 'At Beat'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: move the Arrangement playhead to a beat position and return a read-back position. It names a specific resource and operation, so an agent understands the tool's purpose. However, it does not explicitly differentiate it from sibling tools like 'arrange' or 'set_locator', which could overlap in function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to use it versus alternatives. Sibling tools such as 'set_locator', 'arrange', and 'set_loop' exist, but no conditions, exclusions, or preferred scenarios are provided. An agent must infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_locatorA
Place or remove an Arrangement cue locator. Requires confirm=True.
Live's song.set_or_delete_cue toggles: adds a locator if absent, or deletes if present.
When confirm=False, reports current locator positions and requires confirmation.
Args:
at_beat: Timeline position in beats.
name: Optional name for newly created locator.
confirm: Confirmation flag required to execute locator toggle.
Returns:
Dictionary reporting locator status and resulting cue points.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| at_beat | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden, and it delivers. It clearly states that the operation toggles via song.set_or_delete_cue, can either add or delete a locator, requires confirmation, and reports current positions when confirmation fails. This is unusually transparent for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the core action appears first, followed by the critical confirmation caveat, then parameter details and return behavior. Every sentence adds useful information and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the presence of an output schema, the description covers the essential ground: what the tool does, its toggling behavior, the confirmation requirement, argument semantics, and return format. The only minor gap is explicit sibling-tool differentiation, but the operation is self-contained and well-specified enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Each parameter receives an explanatory line: at_beat is a timeline position in beats, name is optional for the new locator, and confirm is a required flag for execution. The explanations are correct but somewhat brief; for example, the description could clarify whether at_beat accepts fractional values or how missing names behave, so it is not a perfect 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Place or remove an Arrangement cue locator.' It also explains the underlying toggle behavior, so the purpose is unambiguous. It does not explicitly distinguish itself from sibling tools, but the operation is specific enough that an agent can understand what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the confirmation semantics ('Requires confirm=True') and what happens when confirm=False, which guides correct invocation. It does not, however, discuss when to use this tool versus alternatives such as set_arrangement_time or other arrangement-related tools. Usage context for the tool itself is implied rather than explicitly contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_loopA
Configure Arrangement loop brace parameters (enabled, start, length).
Args:
enabled: Optional loop enabled state boolean.
start: Optional loop start position in beats.
length: Optional loop length in beats.
Returns:
Dictionary reporting write status and before/after verification values.
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | ||
| length | No | ||
| enabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must disclose side effects. It does state that it returns a dictionary with 'write status and before/after verification values,' confirming the operation persists a change and self-reports results. However, it does not mention failure conditions, constraints, reversibility, or what happens if the loop is currently disabled, so it only partially carries the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized into purpose, args, and returns sections. Each sentence contributes either a parameter definition or the response contract, with no filler or repetition. The main clause is front-loaded and immediately reveals the tool's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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 optional-parameter setter, the description covers the core action, parameter semantics, and the verification-style return contract, and an output schema exists to fill in structured details. It does not address when the loop brace applies during playback or how enabled interacts with start and length, leaving a modest gap for an agent choosing among many set_* 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 coverage is 0%; the property definitions contain no descriptive text. The description compensates by explaining each argument: enabled is a boolean state, start and length are in beats, and all are optional. It stops short of specifying constraints such as non-negative values or the interaction between enabled and start/length, but the added semantic detail is material.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Configure') tied to a precise resource ('Arrangement loop brace parameters') and enumerates the three settings. This clearly identifies what the tool does and helps distinguish it from siblings like set_tempo or set_mix, though it does not explicitly compare with set_arrangement_time or arrange.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus related siblings such as set_arrangement_time, arrange, or set_locator. The description implies the loop-brace context by naming it, but offers no conditions, exclusions, or alternative directions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_mixA
Set mixer parameters (volume, pan, sends, mute, solo) in a single round trip.
Args:
track: Track index in song.tracks (or song.return_tracks). Ignored for kind="master".
volume: Normalized volume level 0.0 to 1.0 (0.85 corresponds to 0 dB).
pan: Panning position from -1.0 (hard left) to 1.0 (hard right).
sends: Dictionary of send amounts 0.0 to 1.0 keyed by send letter ('A', 'B') or index.
mute: Track mute state boolean (unsupported on master track).
solo: Track solo state boolean (unsupported on master track).
kind: Track kind ('track', 'return', or 'master').
Returns:
Dictionary reporting mixer adjustments and before/after verification readings.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | ||
| kind | No | track | |
| mute | No | ||
| solo | No | ||
| sends | No | ||
| track | Yes | ||
| volume | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 a solid job: it notes mute/solo are unsupported on master, track is ignored for master, volume uses normalized scaling with a 0 dB reference, and the return includes before/after verification readings. It does not disclose failure behavior or atomicity, but the essentials are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense: one purpose sentence, a complete parameter list, and a brief returns statement. Every line earns its place, and the most important scoping fact ('single round trip') 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?
An output schema exists, so the description correctly avoids re-explaining return structure while still noting the verification nature of the response. All seven parameters, edge cases, and normalization conventions are covered. For a 7-parameter tool with zero annotation coverage, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by defining every parameter: track indexing, volume normalization, pan range, sends keying, mute/solo applicability, and kind values. This is exactly the semantic enrichment an agent needs beyond bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set mixer parameters (volume, pan, sends, mute, solo) in a single round trip,' giving a specific verb, resource, and named mixer dimensions. It clearly distinguishes itself from siblings like lom_set or set_parameter by framing this as an aggregate mixer setter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the primary use case: updating multiple mixer parameters efficiently in one call. It implies when this tool is appropriate through the 'single round trip' phrasing, but it does not explicitly name alternatives or state when not to use it. The master-track caveats are more parameter semantics than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parameterA
Set a device parameter by numeric index or name/glob and verify read-back.
Args:
track: Track index in song.tracks (or song.return_tracks). Ignored for kind="master".
device: Device index within track chain.
parameter: Parameter index (as string e.g. "1") or parameter name/glob pattern.
value: Parameter target value.
kind: Track kind ('track', 'return', or 'master').
Returns:
Dictionary reporting write status, resolved parameter index, and read-back value.
Note:
Parameter values are normalised, not the unit the device displays. Read ``min``
and ``max`` (``describe`` with ``with_parameters=True``) rather than assuming
a range.
The curve from 0..1 onto the displayed unit is not linear and differs per
device. On one third-party compressor Attack is ``v^4 * 1000 ms``, so writing
"10 ms" linearly lands at 316 ms, a factor of 30, silently. Where the device
reports a display, aim with the display; where it does not (all VST2), write
normalised and calibrate by eye once.
Measured 2026-08-30 against Live 12.4.5: a quantized parameter takes discrete
steps, so a written 0.5 can legitimately read back as something else, and that
is reported as a clamp rather than as a failure.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | track | |
| track | Yes | ||
| value | Yes | ||
| device | Yes | ||
| parameter | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels. It discloses that parameter values are normalized, not displayed units; that the curve from 0..1 is nonlinear and device-specific, illustrated with a concrete example; that quantization can cause read-back to differ; and that such discrepancies are reported as clamps. It also states the return format. These are precisely the kind of behavioral facts an agent needs to avoid silent mistakes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It is structured with clear sections: purpose, args, returns, and a note. The note's density is justified because silent factor-of-30 errors and quantization clamps are critical for correct use. No filler or redundant repetition exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, normalization, nonlinear mapping, quantization, no annotations) the description is remarkably complete. It covers parameter addressing, kind handling, return content, precondition to check min/max, nonlinear curve caveat, and quantization behavior. An agent has everything needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is0%, so the description must compensate — and it does. It explains each parameter: track is interpreted in song. tracks or song.return_tracks and ignored for master; device is an index within the chain; parameter is a string index or glob; value is target value; kind accepts 'track', 'return', or 'master'. This adds semantic depth far beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set a device parameter by numeric index or name/glob and verify read-back.' This clearly distinguishes it from siblings like lom_set (generic LOM setter) and set_mix (mixer). The method of addressing parameters is also explicit, leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on how to use the tool: how to specify track, device, parameter, value, and kind, including the special case of master. It also advises using 'describe' to read min/max instead of assuming a range. However, it does not explicitly state when to prefer this tool over alternatives like lom_set or set_mix, or when not to use it. That keeps it one step below a fully explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tempoA
Set song tempo in BPM and read back stored value.
Args:
bpm: Target tempo in beats per minute (catalog validated 20.0 to 999.0).
Returns:
Dictionary reporting tempo write and read-back result.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 does disclose that the operation writes and reads back the tempo, and mentions catalog validation with a numeric range. However, it doesn't discuss side effects, persistence, reversibility, or any session/context requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a direct summary sentence, then an Args block, then a Returns block. Every sentence adds useful 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?
For a one-parameter mutation tool with an output schema present, the description covers the action, the parameter's meaning and range, and the return shape. It could be more complete by noting whether the tempo applies globally, to a session, or to an arrangement, but the core invocation information is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args section fully explains the single parameter: units (BPM), meaning (target tempo), and validated range (20.0 to 999.0). This goes well beyond the bare number type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Set') and the resource ('song tempo in BPM'), and adds the read-back behavior. It doesn't explicitly distinguish from siblings like set_parameter, but the tempo-specific scope makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool rather than related tools such as set_mix or set_parameter. The usage is only implied through the tool name and short description, not explicitly stated with conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopA
Stop transport playback and optionally stop all active Session clips.
Args:
clips: When True, also stops active Session clips via song.stop_all_clips.
quantized: Whether clip stop adheres to global launch quantization.
Returns:
Dictionary reporting stop status and is_playing confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| clips | No | ||
| quantized | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and mostly meets it: it states the transport stop, optional clip stopping via song.stop_all_clips, the quantization effect, and the returned status dictionary. It does not expand on what 'adheres to global launch quantization' means in timing terms, but the main side effects are visible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear Args/Returns structure. Every sentence earns its place and no boilerplate is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-boolean stop tool with an output schema, the description covers the core behavior, both parameters, and the return contract. The only mild gap, explicit alternative routing, is already reflected in usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain both parameters, and it does: clips is tied to song.stop_all_clips, and quantized is tied to global launch quantization. The Args section adds behavioral meaning that the bare boolean schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Stop transport playback' and clearly marks the optional Session-clip behavior. This is unmistakably distinct from sibling tools such as play and make_clip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb ('Stop transport playback'), but the description never explicitly says when to prefer this tool over alternatives or when not to use it. It offers no direct routing to sibling tools such as play or get_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transpose_clipA
Transpose a MIDI clip by note pitch or an audio clip via pitch_coarse.
Args:
track: Track index in song.tracks.
slot: Scene/slot index in track.clip_slots.
semitones: Number of semitones to transpose (positive or negative).
out_of_range: Action when transposed notes exceed MIDI range 0..127
('error', 'clamp', or 'drop').
Returns:
Dictionary reporting transposition status and details.
Note:
Measured 2026-08-29 against Live 12.4.5: Audio clips are transposed by setting
clip.pitch_coarse (-48..48 semitones).
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes | ||
| semitones | Yes | ||
| out_of_range | No | error |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It provides concrete behavior: MIDI notes are transposed, audio uses pitch_coarse, out-of-range notes can error/clamp/drop, and the return value is a dict. It adds a measured version-specific detail for Live 12.4.5, but doesn't explicitly mention in-place mutation or side effects beyond the transposition itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line summary, a concise Args block, a Returns line, and a short measured note. Every section earns its place and the core purpose is front-loaded without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no schema param descriptions, but an output schema, the description covers the input semantics, return type, and an implementation constraint. Minor gaps remain, such as what happens if audio semitones exceed the -48..48 pitch_coarse range, but overall an agent can invoke 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 description coverage is 0%, so the description must fully document parameters. It does: track is an index into song.tracks, slot into track.clip_slots, semitones can be positive or negative, and out_of_range lists the three allowed actions. This is exactly the meaning an agent needs beyond the bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Transpose') and resource ('clip'), and clearly scopes the operation to MIDI clips via note pitch and audio clips via pitch_coarse. This distinguishes it from sibling tools like quantize_clip or write_clip_notes without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states what the tool operates on (MIDI or audio clips) and how transposition is performed, giving an agent solid context for invocation. It does not explicitly name alternatives or list when-not-to-use conditions, but no transpose sibling exists among the provided tools, so this is still clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_automationA
Write an automation envelope curve into a Session clip and verify read-back.
Args:
track: Track index in song.tracks (Session clip).
slot: Scene/slot index in track.clip_slots.
parameter: LOM path to DeviceParameter (e.g. 'song.tracks[0].mixer_device.volume').
points: Breakpoint coordinates as [[beat, value], ...] in clip-local beats.
interpolation: Interpolation mode ('linear', 'hold', 'exponential', 'ease_in', 'ease_out').
exponent: Exponent for non-linear interpolation shapes.
resolution: Sampling step size in beats (defaults to 0.0625 = 1/16th note).
clear_first: When True, clears prior envelope points before writing.
verify: When True, samples envelope back and compares with generated curve.
Returns:
Dictionary reporting write status, sampling metrics, and verification comparison.
Note:
Automation envelopes can be written directly to Session clips;
subsequently arrange the clip to transfer automation to the Arrangement timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | ||
| track | Yes | ||
| points | Yes | ||
| verify | No | ||
| exponent | No | ||
| parameter | Yes | ||
| resolution | No | ||
| clear_first | No | ||
| interpolation | No | linear |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses destructive behavior via clear_first, the verify/read-back comparison mechanism, and the shape of the returned dictionary. This goes well beyond a bare 'write' statement, though it doesn't discuss failure modes or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the remaining content is organized into Args, Returns, and Note sections. Every sentence adds practical value, including the workflow note about arrangement, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with an output schema, the description documents all parameters, summarizes the return dictionary, and explains the post-write arrangement workflow. There is no meaningful gap that would prevent an agent from calling 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 property descriptions cover 0%, so the description must carry parameter meaning, and it does. The Args block defines track/slot indices, parameter as a LOM path with an example, points format with units, interpolation options, exponent semantics, resolution units/default, and clear_first/verify behavior. This fully compensates for the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence says exactly what it does: 'Write an automation envelope curve into a Session clip and verify read-back.' This names a specific verb, resource, and target, and the verify-read-back behavior distinguishes it from writing clip notes or setting a single parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow context: automation envelopes can be written directly to Session clips, and the note advises arranging afterward to transfer automation to the Arrangement timeline. It doesn't explicitly name alternative tools like set_parameter or read_automation, but the intended use case is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_clip_notesA
Write MIDI notes into a Session clip. Replaces notes by default.
Args:
track: Track index in song.tracks (MIDI track).
slot: Scene/slot index in track.clip_slots.
notes: List of note dictionaries with pitch, start_time, duration, velocity,
and optional probability, velocity_deviation, release_velocity, mute.
mode: Write mode, 'replace' (clears prior notes and writes) or 'append'.
verify: When True, reads back notes and compares with input using diff.
Returns:
Dictionary containing write confirmation, validation reports, and optional diff.
Note:
Times are in beats and clip-local, so beat 0 is the clip's own start.
A list straight from ``read_clip_notes`` can be written back. Live adds
``note_id`` to every note it hands out, which is identity rather than content,
so the keys in :data:`~ableton_maestro.music.notes.TOLERATED_NOTE_KEYS` are
dropped instead of refused and reported as ``input_keys_ignored``. Every other
unrecognised key is an error.
``pitch``, ``start_time`` and ``duration`` are never defaulted. A reader that
substitutes ``start_time=0.0`` and ``duration=0.25`` for missing keys turns a
list built with ``pos``/``dur`` (the humanise spelling) into a pile of
sixteenths stacked on beat 0, and reports success while doing it. Wrong keys are
refused before anything is sent.
``replace`` is remove-then-write inside one handler call. Live's own
``set_notes`` appends, so a second write silently doubles a melody instead of
correcting it (measured: 63 + 23 = 86 notes). Ask for ``append`` by name when
adding is the intent. An empty list with ``mode="replace"`` clears the clip.
A note does not come back bit-identical to the note sent. Times and durations
return with a small deviation in both directions. Measured 2026-09-01 against
Live 12.4.5: a sent 0.29 read back as 0.29000010406260407 and a sent 0.18 as
0.17999994796869798, about 4e-7 relative. Re-measured 2026-09-02 against Live
12.4.5 at 124 BPM: both values reproduced to every digit, a ``start_time`` of
2.29 came back as 2.290000104062604, and a duration of 0.5 came back exactly.
The cause is not established: it is not a tick grid (no grid of 96, 192, 480 or
960 per quarter produces those numbers) and not a single float32 conversion
(float32 of 0.29 is 0.28999999). That 0.5 survives while 0.29 does not is
consistent with a binary-representable value passing through untouched, but the
mechanism is not claimed here. At 124 BPM the error is around 50 nanoseconds, so
musically it is nothing. It matters only for comparison: never test a note time
for equality. The diff run here already uses a tolerance, which is why it
reports ``0 changed`` for values that differ in the seventh decimal.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | replace | |
| slot | Yes | ||
| notes | Yes | ||
| track | Yes | ||
| verify | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses remove-then-write semantics, the silent-doubling risk with append, tolerance-based verification, handling of note_id and unknown keys, and measured floating-point deviations in times and durations. It even explains why equality testing should never be used. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is tightly structured: a one-line summary, an Args block, Returns, and a Note section. Every paragraph addresses a real failure mode or clarification an agent would need before calling the tool. The detailed precision measurements may be verbose, but they directly support the warning never to test note times for equality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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, the description is complete: it covers replacement vs. append behavior, clearing, verification semantics, key validation, round-tripping from read_clip_notes, time units, and numeric precision. An agent has everything needed to call this tool correctly and interpret its 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 0%, so the description must explain parameters, and it does thoroughly: track and slot indices, notes as dictionaries with required and optional keys, mode values, and verify's read-back diff behavior. It adds meaning well beyond bare parameter names, including the clip-local beat convention and which keys are tolerated versus refused.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'Write MIDI notes into a Session clip.' It also immediately distinguishes default behavior ('Replaces notes by default') from the sibling read tool. No ambiguity remains about what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit mode guidance: use 'replace' by default, 'ask for append by name when adding is the intent,' and notes that an empty list with 'replace' clears the clip. It also warns that Live's own set_notes appends, explaining why the default replacement behavior matters. This is actionable guidance for choosing behavior within the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
35 tool updates
v0.1.0- First observed
als_read - First observed
als_write - First observed
arrange - First observed
clear_automation - First observed
create_clip - First observed
create_track - First observed
delete_clip - First observed
delete_device - First observed
delete_track - First observed
describe - First observed
get_clip - First observed
get_devices - First observed
get_session - First observed
get_track - First observed
load_device - First observed
lom_batch - First observed
lom_call - First observed
lom_describe - First observed
lom_enums - First observed
lom_get - First observed
lom_set - First observed
play - First observed
quantize_clip - First observed
read_automation - First observed
read_clip_notes - First observed
set_arrangement_time - First observed
set_locator - First observed
set_loop - First observed
set_mix - First observed
set_parameter - First observed
set_tempo - First observed
stop - First observed
transpose_clip - First observed
write_automation - First observed
write_clip_notes
TDQS
Most tools target distinct resources, but describe and lom_describe cover nearly identical introspection territory, and set_parameter/lom_set plus clear_automation/write_automation(clear_first=True) have overlapping paths. The detailed descriptions reduce misselection, but the boundaries are not crisp.
The dominant verb_noun pattern is present (get_track, create_clip, set_tempo, delete_device), but it is mixed with bare verbs (describe, arrange, play), get/read synonym pairs, and prefixed groups (lom_*, als_*). Still readable, but not a single consistent convention.
35 tools is above the coherent-set threshold, and many high-level functions duplicate what the generic lom_get/lom_set/lom_call/lom_batch tools already cover. The broad Ableton scope justifies some size, but the surface feels heavy and would benefit from consolidation.
The surface covers session, track, clip, device, mixer, automation, arrangement, transport, tempo, and on-disk .als editing, with the lom_* tools as a general escape hatch. Missing high-level operations like launching a clip, saving, or arrangement clip editing are minor because lom_call can often reach them.
Maintenance
Related MCP Connectors
Convert projects between Logic, Ableton, FL Studio and REAPER; generate, separate, transcribe
- mozonicOAuthcom.mozonic
AI mixing and mastering: analyze your mixes, run DSP autofix, render stems, and master tracks.
AI music production assistant — audio profiling, AI mixing sessions, and service inquiries.
- VocunoOAuthcom.vocuno
AI music studio: song generation with vocals, covers, stems, voice conversion, mastering, editing.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects Ableton Live to AI assistants through Model Context Protocol (MCP), enabling natural language control of music production tasks like track creation, MIDI editing, instrument loading, and playback control.15MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language control over Ableton Live for generating musical patterns, melodies, and full song arrangements. It also provides tools for sample searching and mixing assistance through an OSC-based connection with Claude Desktop.1MIT
- AlicenseNot gradedqualityAmaintenanceAI copilot for Ableton Live 12 — 104 MCP tools for music production, sound design, and mixing. Talk to your DAW. Create tracks, program MIDI, load instruments, tweak parameters, arrange songs, and mix — all through natural language. LivePilot connects any MCP-compatible AI client (Claude, Cursor, VS Code Copilot) to Ableton Live and gives it full control over your session.54365Business Source 1.1
- AlicenseNot gradedqualityDmaintenanceControl Ableton Live using natural language via AI assistants like Claude or Cursor.9MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/romanstark/ableton-maestro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server