clips · May change state · Review destructive effects
REPLACES the clip's entire note content with the given notes. Use edit_notes
to add or remove a subset without touching the rest.
notes: list of {"pitch": 0-127 (60 = C3 in Live's naming), "start_time": beats
from clip start (float), "duration": beats, "velocity": 1-127, "mute": bool}.
Precondition: the clip must exist (create_clip first).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"notes": {
"items": {
"additionalProperties": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"type": "object"
},
"title": "Notes",
"type": "array"
}
},
"required": [
"track_index",
"clip_index",
"notes"
],
"title": "add_notes_to_clipArguments",
"type": "object"
}
offline · Read-only hint
Full offline analysis of a .adg rack or .adv preset: named macros
(name/value), the chain + device tree (recursive, incl. racks-inside-racks
with each device's kind/name/on-state and any sample), legacy macro->
parameter mappings, every referenced sample (name + relative path), the
required Live edition, and — for drum racks — the pad map (pad -> MIDI note,
label, and sample). No Live required.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "adg_analyzeArguments",
"type": "object"
}
offline · Read-only hint
Classify the Live edition a saved .adg/.adv needs, offline: 'suite' if any
Suite-only device is present (Operator, Wavetable, Echo, Drift, Meld,
Sampler, Collision, ...), else 'standard' if any Standard-only device is
present (EQ Eight, Compressor, Simpler, Impulse, Drum Rack, ...), else
'intro'. Returns the verdict plus which devices drove it, so an agent can
tell whether a preset will load on the user's edition before loading it.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "adg_editionArguments",
"type": "object"
}
offline · Read-only hint
Summarize a saved .adg rack or .adv device preset WITHOUT Live running:
name, rack type, total device count, top-level chain count, named-macro
count, required Live edition (intro/standard/suite), and whether it is a drum
kit (`is_drum_rack` is true when the preset is or wraps a Drum Rack — factory
kits ship wrapped in an Instrument Rack). `path` is a filesystem path to a
.adg or .adv file.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "adg_summaryArguments",
"type": "object"
}
offline · Read-only hint
Read mixing and arrangement detail from a saved .als, offline: the set's
locators (name + beat time) and each track's fader volume, pan, and number of
automation lanes. Complements als_summary for reviewing a mix without Live.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "als_detailsArguments",
"type": "object"
}
analysis · Read-only hint
Detect the key/scale of a saved .als file WITHOUT Live running
(Krumhansl-Kessler). Pools notes from every MIDI clip in the set, or only
one track when `track_index` is given. `weight` selects the histogram
weighting ("duration", "velocity", "product", "count"). `path` is a
filesystem path to a .als file.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"track_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Track Index"
},
"weight": {
"default": "duration",
"title": "Weight",
"type": "string"
}
},
"required": [
"path"
],
"title": "als_detect_keyArguments",
"type": "object"
}
offline · Read-only hint
Diff two saved .als files (e.g. song_v4.als vs song_v5.als) offline:
tempo/time-signature changes, tracks added/removed by name, and per-track
deltas in device chain, clip count, note count, and mute state. Great for
logging what changed between versions.
Input schema
{
"properties": {
"path_a": {
"title": "Path A",
"type": "string"
},
"path_b": {
"title": "Path B",
"type": "string"
}
},
"required": [
"path_a",
"path_b"
],
"title": "als_diffArguments",
"type": "object"
}
offline · Read-only hint
Lint a saved .als for likely-unfinished work, offline: no master
limiter/compressor, MIDI track with no instrument, MIDI clip with no notes,
empty audio track, or muted tracks. Returns machine-readable issues so an
agent can decide what to fix before rendering.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "als_find_unfinishedArguments",
"type": "object"
}
offline · Read-only hint
List every track in a saved .als file with its clips (name, MIDI/audio,
start, length, looping, sample path, note count). No Live required.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "als_list_tracksArguments",
"type": "object"
}
offline · Read-only hint
Summarize a saved .als file WITHOUT Live running: version/creator, tempo,
time signature, and each track's kind, name, mute/solo, device names, clip
count, and note count. `path` is a filesystem path to a .als file.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "als_summaryArguments",
"type": "object"
}
analysis · Read-only hint
Measure local WAV (integer/float), AIFF/AIFF-C, FLAC, Ogg Vorbis, MP3,
AAC or M4A/MP4 (AAC/ALAC) without Live: per-channel sample peak/RMS dBFS,
DC offset, crest factor and full-scale samples. Analyzes the first max_seconds
(default 30, maximum 120); marks partial results. Not LUFS or true peak. No upload.
Compressed files are measured after decoding; this does not recover lost audio.
Files are read locally without modification, normalization or upload.
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
},
"max_seconds": {
"default": 30,
"title": "Max Seconds",
"type": "number"
}
},
"required": [
"path"
],
"title": "analyze_audio_fileArguments",
"type": "object"
}
analysis · Read-only hint
Heuristic session-state checks, NOT audio, peak, LUFS or headroom measurements.
Scan the current live set for inspection leads: several high faders, a muted
or empty Session track, or a MIDI track without devices. External routing and
Arrangement audio may explain these states. Returns machine-readable
findings so you can decide what to fix. Reads the session; changes nothing.
Input schema
{
"properties": {},
"title": "analyze_mixArguments",
"type": "object"
}
recipes · May change state · Review destructive effects
Scaffold a genre starter in one call: set the tempo, add Drums, Bass, and
Chords MIDI tracks, try to load fitting instruments, and write generated
parts. `name` is one from list_recipes (e.g. "lofi_beat", "house_groove").
tempo/key/scale/bars override the recipe defaults. Adds new tracks; it does
not overwrite existing ones.
Input schema
{
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"tempo": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Tempo"
},
"key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key"
},
"scale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Scale"
},
"bars": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bars"
}
},
"required": [
"name"
],
"title": "apply_recipeArguments",
"type": "object"
}
session · May change state
Return playback control to the Arrangement (after Session clips have
overridden arrangement content - the orange 'Back to Arrangement' state).
Input schema
{
"properties": {},
"title": "back_to_arrangerArguments",
"type": "object"
}
session · May change state · Review destructive effects
Run several commands in ONE round-trip and ONE undo step (atomic-ish:
stops at the first error; completed steps are a single undo away).
commands = [{"type": "<command>", "params": {...}}, ...]. Command names match
the MCP tool names (the few that differ are auto-translated), e.g.
[{"type": "set_tempo", "params": {"tempo": 80}},
{"type": "create_midi_track", "params": {"index": -1}}].
Composite tools (record_section, load_drum_kit, apply_recipe, save_set, the
generate_* tools) are NOT batchable - they orchestrate multiple commands
server-side. Prefer this for multi-step edits: fewer round-trips, one undo
reverts all.
Input schema
{
"properties": {
"commands": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Commands",
"type": "array"
}
},
"required": [
"commands"
],
"title": "batch_commandsArguments",
"type": "object"
}
session · May change state
Snapshot the currently playing Session clips into a new scene - the
'keep that combination' workflow.
Input schema
{
"properties": {},
"title": "capture_and_insert_sceneArguments",
"type": "object"
}
session · May change state
Grab recently played MIDI into a new clip (Live's Capture MIDI). Requires
that MIDI was recently played into an armed/monitored track.
Input schema
{
"properties": {},
"title": "capture_midiArguments",
"type": "object"
}
arrangement · May change state · Review destructive effects
Delete one device parameter's entire automation envelope from a clip.
Resolve the device and parameter with get_device_parameters first. This
removes every automation point for that parameter, not a time range; manual
parameter state remains. Use write_automation to replace the envelope with
new points, or undo immediately to recover an accidental clear.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
},
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.",
"title": "Parameter"
}
},
"required": [
"track_index",
"clip_index",
"device_index",
"parameter"
],
"title": "clear_automationArguments",
"type": "object"
}
clips · May change state · Review destructive effects
Structural clip edits. op: "duplicate_loop" (double the loop, duplicating
notes - extend 2 bars to 4 before adding variation), "crop" (discard
material outside the loop), "duplicate_region" (copy notes from
region_start/region_length to destination_time, optionally transposing by
transposition_amount semitones; pitch=-1 means all pitches).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"op": {
"title": "Op",
"type": "string"
},
"region_start": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Region Start"
},
"region_length": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Region Length"
},
"destination_time": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Destination Time"
},
"pitch": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch"
},
"transposition_amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Transposition Amount"
}
},
"required": [
"track_index",
"clip_index",
"op"
],
"title": "clip_operationArguments",
"type": "object"
}
session · May change state
Resume playback from the current position (start_playback restarts from
the playhead's last start point instead).
Input schema
{
"properties": {},
"title": "continue_playingArguments",
"type": "object"
}
clips · May change state
Create a new audio clip in an audio track's clip slot by importing a file.
Requires Ableton Live 12.0.5 or newer - the underlying
ClipSlot.create_audio_clip Live API was introduced in 12.0.5 and is not
available in earlier 12.0.x releases.
Parameters:
- track_index: The index of the audio track to create the clip in
- clip_index: The index of the clip slot to create the clip in
- path: Absolute path to a supported audio file (e.g. a .wav). The target
track must be an audio track and the clip slot must be empty.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"track_index",
"clip_index",
"path"
],
"title": "create_audio_clipArguments",
"type": "object"
}
tracks · May change state
Insert an empty audio track at a chosen position, or append with `-1`.
Non-negative indices insert before the current track at that position and
shift it and later track indices up. Use create_midi_track for instruments
and MIDI clips, or create_return_track for a shared send-effect bus.
Input schema
{
"properties": {
"index": {
"default": -1,
"description": "Insertion position among regular tracks; -1 appends at the end.",
"minimum": -1,
"title": "Index",
"type": "integer"
}
},
"title": "create_audio_trackArguments",
"type": "object"
}
clips · May change state
Create an empty MIDI clip in a Session slot. Fails if the slot already has
a clip (pick another clip_index or delete_clip first) or the track is an
audio track. length is in beats (4.0 = one 4/4 bar).
Typical chain: create_clip -> add_notes_to_clip -> fire_clip or
duplicate_to_arrangement.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"length": {
"default": 4,
"title": "Length",
"type": "number"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "create_clipArguments",
"type": "object"
}
session · May change state
Create or rename an Arrangement locator at an absolute beat position.
SIDE EFFECT: first moves the Arrangement playhead to `time`, because Live
creates cues at the playhead. If a locator already exists there, it is reused
and renamed when `name` is provided. Use set_arrangement_time when only the
playhead should move, and get_locators to inspect existing markers.
Input schema
{
"properties": {
"time": {
"description": "Position in beats from the start of the Arrangement.",
"minimum": 0,
"title": "Time",
"type": "number"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional display name; omit it to keep Live's generated name.",
"title": "Name"
}
},
"required": [
"time"
],
"title": "create_locatorArguments",
"type": "object"
}
tracks · May change state
Create a new MIDI track in the Ableton session.
Parameters:
- index: The index to insert the track at (-1 = end of list)
Input schema
{
"properties": {
"index": {
"default": -1,
"title": "Index",
"type": "integer"
}
},
"title": "create_midi_trackArguments",
"type": "object"
}
tracks · May change state
Create a new return track (a send bus, e.g. for shared reverb or delay).
Input schema
{
"properties": {},
"title": "create_return_trackArguments",
"type": "object"
}
session · May change state
Create a new scene (row of clip slots). index -1 appends at the end.
Input schema
{
"properties": {
"index": {
"default": -1,
"title": "Index",
"type": "integer"
}
},
"title": "create_sceneArguments",
"type": "object"
}
tracks · May change state
Add a take lane to a track (for comping multiple recorded takes on one
track). Returns the new take-lane count.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "create_take_laneArguments",
"type": "object"
}
arrangement · May change state · Review destructive effects
Delete a clip from the Arrangement timeline by its position in
get_arrangement_clips' list. NOTE: indices of later clips on the same track
shift down by one after each delete - re-read get_arrangement_clips between
deletes.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"arrangement_clip_index": {
"title": "Arrangement Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"arrangement_clip_index"
],
"title": "delete_arrangement_clipArguments",
"type": "object"
}
clips · May change state · Review destructive effects
Delete the existing Session-view clip in a slot, including its content.
This leaves the slot empty and does not shift other slot indices. It fails
for an empty slot. Use stop_clip if the intent is only to stop playback;
use undo immediately if the deletion was accidental.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "delete_clipArguments",
"type": "object"
}
tracks · May change state · Review destructive effects
Delete a device from a track's chain by its position (0-based). Shifts the
indices of later devices, so re-read the chain afterwards.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"track_index",
"device_index"
],
"title": "delete_deviceArguments",
"type": "object"
}
tracks · May change state · Review destructive effects
Delete a return track by index (0 = Return A). Later returns shift down.
Input schema
{
"properties": {
"return_index": {
"title": "Return Index",
"type": "integer"
}
},
"required": [
"return_index"
],
"title": "delete_return_trackArguments",
"type": "object"
}
session · May change state · Review destructive effects
Delete a scene (row). Later scene indices shift down by one.
Input schema
{
"properties": {
"scene_index": {
"title": "Scene Index",
"type": "integer"
}
},
"required": [
"scene_index"
],
"title": "delete_sceneArguments",
"type": "object"
}
tracks · May change state · Review destructive effects
Delete a track. NOTE: indices of all later tracks shift down by one.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "delete_trackArguments",
"type": "object"
}
analysis · Read-only hint
A high-level map of this server: the tool groups and what each covers, plus
the conventions to follow, so you can orient before your first call. Set
ABLETON_TOOLSETS to load only some groups. For the current live state, call
get_session_snapshot; for mix problems, analyze_mix.
Input schema
{
"properties": {},
"title": "describe_capabilitiesArguments",
"type": "object"
}
devices · Read-only hint
Return curated guidance for a common Ableton native device: which parameters
matter, their units (note `curve` = perceptual, not proportional), sensible
values, and mixing tips. `device_name` is case-insensitive (e.g. "EQ Eight",
"Compressor", "Glue Compressor", "Reverb", "Auto Filter", "Saturator",
"Utility", "Limiter", "Delay"). Pair with get_device_parameters for the live
indices and ranges.
Input schema
{
"properties": {
"device_name": {
"title": "Device Name",
"type": "string"
}
},
"required": [
"device_name"
],
"title": "describe_deviceArguments",
"type": "object"
}
analysis · Read-only hint
Detect the key/scale of one Session MIDI clip (Krumhansl-Kessler). Reads
the clip's notes and returns the best-fit key with a confidence (-1..1),
margin over the runner-up, and the runner-up key. `weight` is how notes are
weighted into the pitch-class histogram: "duration" (default), "velocity",
"product", or "count". Reads only; changes nothing.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"weight": {
"default": "duration",
"title": "Weight",
"type": "string"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "detect_clip_keyArguments",
"type": "object"
}
analysis · Read-only hint
Detect the overall key/scale of the whole set by pooling the notes of
every MIDI track's Session clips (Krumhansl-Kessler). Gives the harmonic
center of the arrangement as a whole. `weight` selects the histogram
weighting ("duration", "velocity", "product", "count"). Reads only.
Input schema
{
"properties": {
"weight": {
"default": "duration",
"title": "Weight",
"type": "string"
}
},
"title": "detect_session_keyArguments",
"type": "object"
}
analysis · Read-only hint
Detect the key/scale of a whole track by pooling the notes of every
Session clip it holds (Krumhansl-Kessler). Useful when a part is spread
across several clips. `weight` selects the histogram weighting ("duration",
"velocity", "product", "count"). Reads only; changes nothing.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"weight": {
"default": "duration",
"title": "Weight",
"type": "string"
}
},
"required": [
"track_index"
],
"title": "detect_track_keyArguments",
"type": "object"
}
clips · May change state · Review destructive effects
Copy a Session clip to any other track/scene slot (overwrites the
destination slot). The cross-track way to build variations.
Input schema
{
"properties": {
"src_track": {
"title": "Src Track",
"type": "integer"
},
"src_scene": {
"title": "Src Scene",
"type": "integer"
},
"dst_track": {
"title": "Dst Track",
"type": "integer"
},
"dst_scene": {
"title": "Dst Scene",
"type": "integer"
}
},
"required": [
"src_track",
"src_scene",
"dst_track",
"dst_scene"
],
"title": "duplicate_clip_toArguments",
"type": "object"
}
session · May change state
Insert a copy of one Session scene, including every clip in its row.
This creates new content and increases the scene count; later scene indices
shift to make room. Use duplicate_track for a whole track or duplicate_clip_to
for one clip. Use the new scene as an editable section variation.
Input schema
{
"properties": {
"scene_index": {
"description": "Zero-based Session-view scene (row) index.",
"minimum": 0,
"title": "Scene Index",
"type": "integer"
}
},
"required": [
"scene_index"
],
"title": "duplicate_sceneArguments",
"type": "object"
}
arrangement · May change state · Review destructive effects
Copy a Session-view clip into the Arrangement timeline.
OVERWRITES whatever already occupies the destination range on that track
(like recording over tape) - this is also the supported way to REPLACE a
section. Uses Live's track.duplicate_clip_to_arrangement() API (Live 11/12).
The clip is placed at destination_time beats from the start of the
arrangement on the same track it lives in.
Typical workflow:
1. create_clip / add_notes_to_clip to build a Session clip
2. Call duplicate_to_arrangement once per bar/section you need
3. Call switch_to_arrangement_view to confirm the result in Live
Parameters:
- track_index: Index of the track that owns the Session clip
- clip_index: Index of the clip slot in that track (Session view)
- destination_time: Beat position in the arrangement to place the clip
(e.g. 0.0 = start, 8.0 = bar 3 in 4/4)
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"destination_time": {
"title": "Destination Time",
"type": "number"
}
},
"required": [
"track_index",
"clip_index",
"destination_time"
],
"title": "duplicate_to_arrangementArguments",
"type": "object"
}
tracks · May change state
Insert a copy of one regular track, including its devices and clips.
This creates new content and increases the track count; later track indices
shift to make room. Use duplicate_scene for a Session row or duplicate_clip_to
for one clip. Rename or edit the copy to create a variation.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "duplicate_trackArguments",
"type": "object"
}
clips · May change state
Edit a subset of notes in a MIDI clip without rewriting all of them.
add = [{pitch,start_time,duration,velocity,mute}], remove = [{pitch,start_time}] (matched by pitch+start).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"add": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Add"
},
"remove": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Remove"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "edit_notesArguments",
"type": "object"
}
clips · May change state
Launch one existing Session-view clip using Live's launch quantization.
The slot must contain a clip. Launching it takes Session control of that
track and replaces any other playing Session clip on the same track; firing
an already-playing clip may retrigger it according to its launch settings.
Use fire_scene to launch a whole row, or continue_playing for transport only.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "fire_clipArguments",
"type": "object"
}
session · May change state
Launch a Session-view scene using Live's launch quantization.
This fires the row's clips together and can replace or stop clips currently
playing on the affected tracks according to each slot's launch behavior.
Use fire_clip to launch only one track's clip, or start_playback when the
intent is Arrangement transport rather than Session launching.
Input schema
{
"properties": {
"scene_index": {
"description": "Zero-based Session-view scene (row) index.",
"minimum": 0,
"title": "Scene Index",
"type": "integer"
}
},
"required": [
"scene_index"
],
"title": "fire_sceneArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a Philip-Glass additive process into a Session clip. REPLACES the
clip's notes if it already exists.
Builds a short one-voice motif (each pitch a ``note_length``-beat note, back
to back) from ``pitches`` -- a space-/comma-separated list of MIDI numbers.
Then plays the first 1 note, then the first 2, then the first 3 ...
concatenated end to end, so the phrase audibly grows one note per stage.
``steps`` is how many stages to build (0 = use every note; capped at the
number of pitches).
If ``source_clip_index`` is given, the motif is read from that clip on the
same track instead of built from ``pitches``. Returns a short summary.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"pitches": {
"default": "60 62 64 65 67 69",
"title": "Pitches",
"type": "string"
},
"note_length": {
"default": 0.5,
"title": "Note Length",
"type": "number"
},
"steps": {
"default": 0,
"title": "Steps",
"type": "integer"
},
"velocity": {
"default": 90,
"title": "Velocity",
"type": "integer"
},
"source_clip_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Clip Index"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "generate_additiveArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a bassline following a chord progression. REPLACES existing notes.
progression: same syntax as generate_chord_progression.
style: "roots" (long root notes), "root_fifth" (root + fifth bounce),
"walking" (root, approach tones), "eighth_pump" (driving 8ths on the root).
octave: 1 = very low (C1=24), 2 = typical bass (C2=36).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"progression": {
"title": "Progression",
"type": "string"
},
"style": {
"default": "roots",
"title": "Style",
"type": "string"
},
"octave": {
"default": 2,
"title": "Octave",
"type": "integer"
},
"beats_per_chord": {
"default": 4,
"title": "Beats Per Chord",
"type": "number"
},
"velocity": {
"default": 88,
"title": "Velocity",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index",
"progression"
],
"title": "generate_basslineArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Generate voiced chords and write them into one Session-view MIDI clip.
DESTRUCTIVE: creates a clip when the slot is empty; otherwise resizes its loop
and replaces every existing note. The track must accept MIDI. Progressions
accept dash/comma/space-separated symbols such as `Am9-Fmaj7-Cmaj9-G13`;
supported qualities include maj7, m7, m9, 9, 13, 7#9, sus4, dim, and add9.
Use add_notes_to_clip for exact notes or edit_notes to preserve existing ones.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
},
"progression": {
"description": "Dash-, comma-, or space-separated chord symbols, e.g. \"Dm7-G7-Cmaj7\".",
"minLength": 1,
"title": "Progression",
"type": "string"
},
"beats_per_chord": {
"default": 4,
"description": "Positive number of beats allocated to each chord.",
"exclusiveMinimum": 0,
"title": "Beats Per Chord",
"type": "number"
},
"center_pitch": {
"default": 60,
"description": "MIDI pitch around which chord voicings are centered.",
"maximum": 127,
"minimum": 0,
"title": "Center Pitch",
"type": "integer"
},
"velocity": {
"default": 62,
"description": "Base MIDI note velocity (1-127).",
"maximum": 127,
"minimum": 1,
"title": "Velocity",
"type": "integer"
},
"strum": {
"default": 0.02,
"description": "Beat offset between chord tones; 0 produces block chords.",
"minimum": 0,
"title": "Strum",
"type": "number"
},
"rhythm": {
"default": "held",
"description": "Chord rhythm: held, two stabs per slot, or quarter-note hits.",
"enum": [
"held",
"stabs",
"quarters"
],
"title": "Rhythm",
"type": "string"
}
},
"required": [
"track_index",
"clip_index",
"progression"
],
"title": "generate_chord_progressionArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a genre drum pattern into a Session clip on a Drum Rack track.
REPLACES the clip's notes if the clip exists.
style: lofi | boom_bap | house | techno | trap | dnb | ambient.
swing: beats to delay 8th-note offbeats (0.0-0.1; 0.06 ≈ MPC-ish).
humanize: max random velocity deviation (0 = machine-perfect).
Uses the standard Live drum map (36 kick, 38 snare, 42/46 hats...).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"style": {
"default": "lofi",
"title": "Style",
"type": "string"
},
"bars": {
"default": 2,
"title": "Bars",
"type": "integer"
},
"swing": {
"default": 0.06,
"title": "Swing",
"type": "number"
},
"humanize": {
"default": 6,
"title": "Humanize",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "generate_drum_patternArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a Euclidean (Bjorklund) rhythm for one drum voice into a Session clip.
REPLACES the clip's notes if the clip exists.
Distributes `pulses` hits as evenly as possible across `steps` slots spanning
one bar (steps=8 -> 8th notes, 16 -> 16th notes), repeated for `bars`.
pulses=3, steps=8 is the tresillo. `rotate` shifts the pattern left by that
many steps. instrument: a drum-map name (kick/snare/chat/ohat/clap/ride/...) or
a raw MIDI number. `humanize` is max +/- velocity jitter.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"instrument": {
"default": "kick",
"title": "Instrument",
"type": "string"
},
"pulses": {
"default": 3,
"title": "Pulses",
"type": "integer"
},
"steps": {
"default": 8,
"title": "Steps",
"type": "integer"
},
"bars": {
"default": 2,
"title": "Bars",
"type": "integer"
},
"rotate": {
"default": 0,
"title": "Rotate",
"type": "integer"
},
"velocity": {
"default": 100,
"title": "Velocity",
"type": "integer"
},
"humanize": {
"default": 6,
"title": "Humanize",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "generate_euclidean_drumsArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Build a genre-idiomatic chord progression and write it as voiced chords.
REPLACES existing notes.
genre: lofi/boom_bap/hip_hop/trap/house/deep_house/techno/trance/dnb/rnb/
neo_soul/jazz/bossa_nova/ambient/synthwave/pop/afrobeats/amapiano/... (fuzzy
matched). The genre's scale-degree grammar is transposed into key+scale, then
voiced (see generate_voiced_progression for the style options). bars = number
of chords (the grammar loops). Returns the chord symbols it used.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"genre": {
"title": "Genre",
"type": "string"
},
"key": {
"default": "C",
"title": "Key",
"type": "string"
},
"scale": {
"default": "minor",
"title": "Scale",
"type": "string"
},
"bars": {
"default": 4,
"title": "Bars",
"type": "integer"
},
"style": {
"default": "rootless",
"title": "Style",
"type": "string"
},
"beats_per_chord": {
"default": 4,
"title": "Beats Per Chord",
"type": "number"
},
"center_pitch": {
"default": 60,
"title": "Center Pitch",
"type": "integer"
},
"velocity": {
"default": 64,
"title": "Velocity",
"type": "integer"
},
"voices": {
"default": 4,
"title": "Voices",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index",
"genre"
],
"title": "generate_genre_progressionArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a pocketed drum groove into a Session clip. REPLACES existing notes.
style: lofi | boom_bap | house | trap | jazz | funk. pocket: beats to lay
every hit behind the beat (0.0-0.1). swing: off-beat hat delay (0.5 straight
.. ~0.66). ghost: 0-1 probability of soft ghost snares between backbeats.
humanize: max +/- velocity deviation. Uses the standard Live drum map.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"style": {
"default": "lofi",
"title": "Style",
"type": "string"
},
"bars": {
"default": 2,
"title": "Bars",
"type": "integer"
},
"pocket": {
"default": 0.02,
"title": "Pocket",
"type": "number"
},
"swing": {
"default": 0.55,
"title": "Swing",
"type": "number"
},
"ghost": {
"default": 0.3,
"title": "Ghost",
"type": "number"
},
"humanize": {
"default": 8,
"title": "Humanize",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "generate_grooveArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a voice-led melody over a chord progression. REPLACES existing notes.
Notes come from key+scale, biased to chord tones on strong beats, chosen by
nearest-pitch voice-leading (small steps), with optional chromatic approach
notes. progression: dash-/comma-separated symbols. key: e.g. "C", "F#", "Bb".
scale: major/minor/dorian/lydian/mixolydian/blues/bebop/minor_pentatonic/...
density: low|medium|high (note rate). phrase_arc: rising|arch|ascend_descend|
static (register contour). chromatic: 0-1 approach-note probability. low/high
bound the register (MIDI). swing: 0.5 straight .. ~0.66.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"progression": {
"title": "Progression",
"type": "string"
},
"key": {
"default": "C",
"title": "Key",
"type": "string"
},
"scale": {
"default": "minor",
"title": "Scale",
"type": "string"
},
"beats_per_chord": {
"default": 4,
"title": "Beats Per Chord",
"type": "number"
},
"density": {
"default": "medium",
"title": "Density",
"type": "string"
},
"low": {
"default": 60,
"title": "Low",
"type": "integer"
},
"high": {
"default": 84,
"title": "High",
"type": "integer"
},
"phrase_arc": {
"default": "arch",
"title": "Phrase Arc",
"type": "string"
},
"chromatic": {
"default": 0.15,
"title": "Chromatic",
"type": "number"
},
"swing": {
"default": 0.5,
"title": "Swing",
"type": "number"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index",
"progression"
],
"title": "generate_melodyArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a Steve-Reich phasing pattern into a Session clip. REPLACES the
clip's notes if it already exists.
Builds a short one-voice motif (each pitch a ``note_length``-beat note, back
to back) from ``pitches`` -- a space-/comma-separated list of MIDI numbers,
e.g. "60 62 64 67 69". Then stacks ``repeats`` copies of that motif, each copy
starting ``shift`` beats later than the last, so the copies drift against one
another. A ``shift`` smaller than the motif length (len(pitches)*note_length)
gives the classic overlapping phase texture; ``shift`` == motif length is a
plain loop.
If ``source_clip_index`` is given, the motif is read from that clip on the
same track instead of built from ``pitches``. Returns a short summary.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"pitches": {
"default": "60 62 64 67 69",
"title": "Pitches",
"type": "string"
},
"note_length": {
"default": 0.5,
"title": "Note Length",
"type": "number"
},
"repeats": {
"default": 8,
"title": "Repeats",
"type": "integer"
},
"shift": {
"default": 0.25,
"title": "Shift",
"type": "number"
},
"velocity": {
"default": 90,
"title": "Velocity",
"type": "integer"
},
"source_clip_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Clip Index"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "generate_phaseArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write voice-led jazz chord voicings into a Session clip. REPLACES existing notes.
progression: dash-/comma-separated symbols, e.g. "Am9-Dm7-G13-Cmaj7".
style: rootless (3-7-9-13 stack, no root), quartal (stacked 4ths), shell
(root-3-7), or block (close-position). Smooth voice-leading is applied between
chords. center_pitch biases register (60 = C3 in Live). voices caps notes per
chord; humanize is max +/- velocity jitter.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"progression": {
"title": "Progression",
"type": "string"
},
"style": {
"default": "rootless",
"title": "Style",
"type": "string"
},
"beats_per_chord": {
"default": 4,
"title": "Beats Per Chord",
"type": "number"
},
"center_pitch": {
"default": 60,
"title": "Center Pitch",
"type": "integer"
},
"velocity": {
"default": 64,
"title": "Velocity",
"type": "integer"
},
"voices": {
"default": 4,
"title": "Voices",
"type": "integer"
},
"humanize": {
"default": 4,
"title": "Humanize",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index",
"progression"
],
"title": "generate_voiced_progressionArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write a quarter-note walking bass line under a progression. REPLACES notes.
Root on beat 1, chord/scale tones through the bar, chromatic approach into the
next chord's root on the last beat, with occasional soft ghost notes.
progression: dash-/comma-separated symbols. key/scale set the passing-tone
pool. octave: 1 = very low (C1), 2 = typical bass (C2). ghost: 0-1 offbeat
ghost-note probability.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"progression": {
"title": "Progression",
"type": "string"
},
"key": {
"default": "C",
"title": "Key",
"type": "string"
},
"scale": {
"default": "minor",
"title": "Scale",
"type": "string"
},
"beats_per_chord": {
"default": 4,
"title": "Beats Per Chord",
"type": "number"
},
"octave": {
"default": 2,
"title": "Octave",
"type": "integer"
},
"ghost": {
"default": 0.15,
"title": "Ghost",
"type": "number"
},
"velocity": {
"default": 90,
"title": "Velocity",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index",
"progression"
],
"title": "generate_walking_bassArguments",
"type": "object"
}
arrangement · Read-only hint
List all clips placed in the Arrangement timeline for a track.
Returns each clip's name, start_time, end_time, length, and type.
Parameters:
- track_index: The index of the track to inspect
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "get_arrangement_clipsArguments",
"type": "object"
}
browser · Read-only hint
Get browser items at a specific path in Ableton's browser.
Parameters:
- path: Path in the format "category/folder/subfolder"
where category is one of the available browser categories in Ableton
Input schema
{
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "get_browser_items_at_pathArguments",
"type": "object"
}
browser · Read-only hint
List the browser's top-level categories and their immediate entries.
NOTE: returns a shallow listing (no deep hierarchy) - drill down with
get_browser_items_at_path("instruments"), ...("sounds/Piano & Keys"), etc.,
or skip straight to search_browser when you know a name.
category_type: "all", "instruments", "sounds", "drums", "audio_effects", "midi_effects".
Input schema
{
"properties": {
"category_type": {
"default": "all",
"title": "Category Type",
"type": "string"
}
},
"title": "get_browser_treeArguments",
"type": "object"
}
clips · Read-only hint
Full clip state: loop points, markers, playing position, per-clip time
signature; for audio clips also file path, gain display, and warp markers.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "get_clip_infoArguments",
"type": "object"
}
clips · Read-only hint
Return every MIDI note in an existing Session-view MIDI clip.
Each note includes pitch, start time, duration, velocity, and mute state;
newer Live versions may add expression fields. This is read-only and fails
for an empty slot or audio clip. Use get_clip_info for clip properties.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "get_clip_notesArguments",
"type": "object"
}
devices · Read-only hint
List all parameters of a device on a track: names, values, ranges, display strings.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"track_index",
"device_index"
],
"title": "get_device_parametersArguments",
"type": "object"
}
devices · Read-only hint
Read a device's audio-input (sidechain) routing: current input type/channel
and the available options. Only sidechain-capable devices (Compressor, Gate)
have this. Use the options with set_device_routing to pick a sidechain source.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"track_index",
"device_index"
],
"title": "get_device_routingArguments",
"type": "object"
}
devices · Read-only hint
List a Drum Rack's occupied pads (MIDI note, name, mute, solo).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"track_index",
"device_index"
],
"title": "get_drum_padsArguments",
"type": "object"
}
clips · Read-only hint
List grooves in the Groove Pool (index + name) and the global groove amount.
Input schema
{
"properties": {},
"title": "get_groovesArguments",
"type": "object"
}
tracks · Read-only hint
Report a track's group state: whether it is a foldable group track, whether
it is inside a group, its fold state, and its parent group's name.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "get_group_infoArguments",
"type": "object"
}
session · Read-only hint
List arrangement locators (index, name, beat time) for structure-aware
navigation. Jump with jump_to_locator.
Input schema
{
"properties": {},
"title": "get_locatorsArguments",
"type": "object"
}
devices · Read-only hint
List parameters of a device on the Master track.
Input schema
{
"properties": {
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"device_index"
],
"title": "get_master_device_parametersArguments",
"type": "object"
}
tracks · Read-only hint
Read the Master track's output meters - values pinned near 1.0 during
playback mean the master is clipping; pull set_master_volume down.
Input schema
{
"properties": {},
"title": "get_master_metersArguments",
"type": "object"
}
devices · Read-only hint
List an Instrument/Effect Rack's chains and the devices inside each -
previously unreachable nested devices. Use set_chain_device_parameter to
control them.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"track_index",
"device_index"
],
"title": "get_rack_chainsArguments",
"type": "object"
}
devices · Read-only hint
List parameters of a device on a Return track: names, values, min/max,
display strings. Call before set_return_device_parameter.
Input schema
{
"properties": {
"return_index": {
"title": "Return Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
}
},
"required": [
"return_index",
"device_index"
],
"title": "get_return_device_parametersArguments",
"type": "object"
}
tracks · Read-only hint
List return tracks (index + name).
Input schema
{
"properties": {},
"title": "get_return_tracksArguments",
"type": "object"
}
session · Read-only hint
Read the song's scale and tuning: scale name, root note, scale intervals, and
the active tuning system (microtonal, Live 12.3+) if any. Set the scale with
set_song_scale; tune device parameters (e.g. Wavetable) with set_device_parameter.
Input schema
{
"properties": {},
"title": "get_scale_infoArguments",
"type": "object"
}
session · Read-only hint
Return global Live-set and transport state without modifying the set.
Includes tempo, song time signature, playback position/state, Arrangement
loop, track/return/scene counts, scene names, key/scale, record mode, launch
quantization, Master volume/pan, and Live version. Use get_track_info for a
single track's clips/devices, or get_session_snapshot for a compact overview
of every track.
Input schema
{
"properties": {},
"title": "get_session_infoArguments",
"type": "object"
}
session · Read-only hint
One-call overview of the whole set: tempo, time signature, play state, and
for every track its name, type, mute/solo/arm, volume, clip count, and device
names, plus return-track names. Prefer this over many get_track_info calls.
Input schema
{
"properties": {},
"title": "get_session_snapshotArguments",
"type": "object"
}
tracks · Read-only hint
Return detailed state for one regular track without modifying the set.
Includes name/type, mixer and arm/mute/solo state, sends, freeze/color state,
playing/fired slot indices, every Session slot's basic clip state, and the
device-chain names/types. Use get_session_info for global transport state,
get_device_parameters for parameter values, or get_clip_info for full clip
properties.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "get_track_infoArguments",
"type": "object"
}
tracks · Read-only hint
Read a track's output level meters (post-fader): left/right 0.0-1.0ish
(0.85 ≈ 0 dB, like faders). Poll during playback to judge balance/clipping -
this is how you 'listen' without exporting.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "get_track_metersArguments",
"type": "object"
}
tracks · Read-only hint
Read a track's input/output routing (current + all available options)
and monitoring state (0=In, 1=Auto, 2=Off). Routing options are identified
by display_name - use those strings with set_track_routing.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
}
},
"required": [
"track_index"
],
"title": "get_track_routingArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Read a MIDI clip, apply timing + velocity humanization, and write it back.
REPLACES the clip's notes with the jittered version.
timing: max +/- start-time deviation in beats. velocity: max +/- velocity
deviation. Pitches are preserved; times stay non-negative. seed makes it
reproducible.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"timing": {
"default": 0.02,
"title": "Timing",
"type": "number"
},
"velocity": {
"default": 8,
"title": "Velocity",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "humanize_clipArguments",
"type": "object"
}
session · May change state
Move the playhead by a relative number of beats (negative moves back).
Works during playback for on-the-fly navigation.
Input schema
{
"properties": {
"beats": {
"title": "Beats",
"type": "number"
}
},
"required": [
"beats"
],
"title": "jump_byArguments",
"type": "object"
}
session · May change state
Jump the playhead to the next locator/cue (direction >= 0) or the previous
one (direction < 0).
Input schema
{
"properties": {
"direction": {
"default": 1,
"title": "Direction",
"type": "integer"
}
},
"title": "jump_to_cueArguments",
"type": "object"
}
session · May change state
Move the playhead to a locator (index from get_locators).
Input schema
{
"properties": {
"locator_index": {
"title": "Locator Index",
"type": "integer"
}
},
"required": [
"locator_index"
],
"title": "jump_to_locatorArguments",
"type": "object"
}
devices · Read-only hint
List the devices that describe_device has curated guidance for.
Input schema
{
"properties": {},
"title": "list_known_devicesArguments",
"type": "object"
}
recipes · Read-only hint
List the built-in composition recipes (name, description, and default
tempo/key/scale/bars), for use with apply_recipe.
Input schema
{
"properties": {},
"title": "list_recipesArguments",
"type": "object"
}
devices · May change state
Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).
Input schema
{
"properties": {
"item_uri": {
"title": "Item Uri",
"type": "string"
}
},
"required": [
"item_uri"
],
"title": "load_device_to_masterArguments",
"type": "object"
}
devices · May change state
Append one loadable browser device or preset to a return track's chain.
Obtain `item_uri` from search_browser. Loading selects the return track in
Live and creates a new device, so repeated calls add duplicates. Prefer audio
effects on returns; use load_instrument_or_effect for a regular track or
load_device_to_master for the Master chain.
Input schema
{
"properties": {
"return_index": {
"description": "Zero-based return-track index; 0 is Return A.",
"minimum": 0,
"title": "Return Index",
"type": "integer"
},
"item_uri": {
"description": "Loadable browser-item URI returned by search_browser.",
"title": "Item Uri",
"type": "string"
}
},
"required": [
"return_index",
"item_uri"
],
"title": "load_device_to_returnArguments",
"type": "object"
}
browser · May change state
Load a Drum Rack, then the first loadable kit at a browser path.
Use search_browser to obtain the rack URI and get_browser_items_at_path to
verify the kit path. This is a two-step mutation: it appends the rack first,
then loads the first loadable item found at `kit_path`. If path lookup fails,
the new empty rack remains on the track; repeated calls add more racks. Use
load_instrument_or_effect when one known browser URI is sufficient.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"rack_uri": {
"description": "Loadable browser-item URI returned by search_browser.",
"title": "Rack Uri",
"type": "string"
},
"kit_path": {
"description": "Slash-separated Live browser path, such as \"drums/acoustic\".",
"title": "Kit Path",
"type": "string"
}
},
"required": [
"track_index",
"rack_uri",
"kit_path"
],
"title": "load_drum_kitArguments",
"type": "object"
}
devices · May change state
Load an instrument or effect onto a track using its URI.
Parameters:
- track_index: The index of the track to load the instrument on
- uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"uri": {
"title": "Uri",
"type": "string"
}
},
"required": [
"track_index",
"uri"
],
"title": "load_instrument_or_effectArguments",
"type": "object"
}
browser · May change state
Audition a browser item (a sample, instrument, or preset) through Live's
preview tab WITHOUT loading it onto a track. `item_uri` comes from
search_browser or get_browser_items_at_path. Use stop_browser_preview to stop.
Input schema
{
"properties": {
"item_uri": {
"title": "Item Uri",
"type": "string"
}
},
"required": [
"item_uri"
],
"title": "preview_browser_itemArguments",
"type": "object"
}
clips · May change state
Quantize a MIDI clip. grid: quarter/eighth/eighth_triplet/sixteenth/sixteenth_triplet/thirtysecond.
amount 0.0-1.0 (use <1.0 to humanize toward the grid without full snap).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"grid": {
"default": "sixteenth",
"title": "Grid",
"type": "string"
},
"amount": {
"default": 1,
"title": "Amount",
"type": "number"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "quantize_clipArguments",
"type": "object"
}
devices · May change state
Rack macro snapshots. action: "store" (save current macros as a
variation), "recall" (restore variation `index`), "randomize" (randomize
all macro knobs - instant sound-design exploration).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"action": {
"title": "Action",
"type": "string"
},
"index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Index"
}
},
"required": [
"track_index",
"device_index",
"action"
],
"title": "rack_variationArguments",
"type": "object"
}
session · May change state
Restore automation that was overridden by manual parameter changes.
IMPORTANT: setting a device parameter that has an envelope overrides the
envelope until this is called.
Input schema
{
"properties": {},
"title": "re_enable_automationArguments",
"type": "object"
}
audio · May change state · Review destructive effects
Bounce a section of the arrangement to an audio file WITHOUT the Export
dialog, so you can hear an internal signal. Creates a temporary audio track,
routes its input to `source` ("Resampling" = the master output, or a track's
name for that track's output), arms it, and records from start_beat to end_beat
in REAL TIME (a 4-bar section takes about 4 bars of wall-clock; capped at
5 minutes). Returns the recorded WAV path. Set cleanup=False to keep the
recording track. Runs the transport and adds an arrangement clip.
Input schema
{
"properties": {
"start_beat": {
"title": "Start Beat",
"type": "number"
},
"end_beat": {
"title": "End Beat",
"type": "number"
},
"source": {
"default": "Resampling",
"title": "Source",
"type": "string"
},
"cleanup": {
"default": true,
"title": "Cleanup",
"type": "boolean"
}
},
"required": [
"start_beat",
"end_beat"
],
"title": "record_sectionArguments",
"type": "object"
}
session · May change state
Redo the last undone action in Live.
Input schema
{
"properties": {},
"title": "redoArguments",
"type": "object"
}
devices · May change state · Review destructive effects
Replace a Simpler sample with an absolute local audio-file path. Requires Live 12.4+
AND runtime API support; otherwise fails before writing. Replaces musical content:
confirm the target and preserve the original set. Readback is not an audio audition.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"track_index",
"device_index",
"path"
],
"title": "replace_simpler_sampleArguments",
"type": "object"
}
session · May change state
Save the current Live set to its existing file, if the Live API supports it
(it does not on most versions). Returns whether the API call is available and
whether the save succeeded. To save under a new name/path, use the GUI Save-As.
Input schema
{
"properties": {},
"title": "save_setArguments",
"type": "object"
}
browser · Read-only hint
Search the Ableton browser by display name (case-insensitive substring).
Returns loadable items with their URIs for load_instrument_or_effect /
load_device_to_master / load_device_to_return.
category: optionally limit to one of "instruments", "sounds", "drums",
"audio_effects", "midi_effects", "packs" (default: search all of them).
Prefer this over walking get_browser_items_at_path when you know a name.
Input schema
{
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"max_results": {
"default": 25,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_browserArguments",
"type": "object"
}
analysis · Read-only hint
Report what changed in the set since the LAST time you called this tool:
tempo/time-signature/play-state, tracks added, removed, renamed or reordered, and per-track volume,
mute, solo, arm, clip-count, and device changes. The first call records a
baseline (no diff). Track IDs are scoped to the running bridge; older bridges
cannot identify renames reliably. Call it before and after an edit to verify it took effect.
Input schema
{
"properties": {},
"title": "session_diffArguments",
"type": "object"
}
session · May change state
Enable or disable Ableton Link, which syncs tempo and phase with other
Link-enabled apps and devices on the local network.
Input schema
{
"properties": {
"enabled": {
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_ableton_linkArguments",
"type": "object"
}
session · May change state
Toggle arrangement overdub: recording layers MIDI onto existing
arrangement clips instead of replacing them.
Input schema
{
"properties": {
"enabled": {
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_arrangement_overdubArguments",
"type": "object"
}
arrangement · May change state
Move the arrangement playhead to a specific position.
Parameters:
- time: Position in beats from the start of the arrangement (e.g. 8.0 = bar 3 in 4/4)
Input schema
{
"properties": {
"time": {
"title": "Time",
"type": "number"
}
},
"required": [
"time"
],
"title": "set_arrangement_timeArguments",
"type": "object"
}
devices · May change state
Set a parameter on a device INSIDE a rack chain (indices from
get_rack_chains). Values clamp to the parameter's native range.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"chain_index": {
"title": "Chain Index",
"type": "integer"
},
"chain_device_index": {
"title": "Chain Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"title": "Parameter"
},
"value": {
"title": "Value",
"type": "number"
}
},
"required": [
"track_index",
"device_index",
"chain_index",
"chain_device_index",
"parameter",
"value"
],
"title": "set_chain_device_parameterArguments",
"type": "object"
}
clips · May change state
Set audio-clip properties. gain 0-1, pitch_coarse semitones (-48..48), pitch_fine cents,
warping on/off, warp_mode 0=Beats 1=Tones 2=Texture 3=Re-Pitch 4=Complex 6=Complex Pro.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"gain": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Gain"
},
"pitch_coarse": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch Coarse"
},
"pitch_fine": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Pitch Fine"
},
"warping": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Warping"
},
"warp_mode": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Warp Mode"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "set_clip_audioArguments",
"type": "object"
}
clips · May change state
Set an existing Session clip's palette color without changing its content.
This is a visual organization change only. Use set_track_color to recolor
the track header instead. Repeating the same color has no additional effect.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
},
"color_index": {
"description": "Color index in Live's 70-color palette (0-69).",
"maximum": 69,
"minimum": 0,
"title": "Color Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index",
"color_index"
],
"title": "set_clip_colorArguments",
"type": "object"
}
clips · May change state
Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"groove_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Groove Index"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "set_clip_grooveArguments",
"type": "object"
}
clips · May change state
Update selected loop and launch markers on one existing Session clip.
Provide at least one optional field; omitted fields stay unchanged. `start`
and `end` are loop-brace positions in clip-relative beats and end must be
after start. `start_marker` controls where non-looped launch begins;
`looping` enables or disables repetition. Use set_loop for the Arrangement's
global loop region, not a clip, and get_clip_info to inspect current values.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
},
"start": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional position in beats from the start of the clip.",
"title": "Start"
},
"end": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional position in beats from the start of the clip.",
"title": "End"
},
"start_marker": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional position in beats from the start of the clip.",
"title": "Start Marker"
},
"looping": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional state change: true turns it on, false turns it off.",
"title": "Looping"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "set_clip_loopArguments",
"type": "object"
}
clips · May change state
Rename an existing Session-view clip without changing its notes or audio.
The slot must contain a clip. Use this for the clip label; use set_track_name
for the track label. Repeating the same name has no additional effect.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"description": "Zero-based Session-view clip-slot index on the track.",
"minimum": 0,
"title": "Clip Index",
"type": "integer"
},
"name": {
"description": "New display name for the Live object.",
"title": "Name",
"type": "string"
}
},
"required": [
"track_index",
"clip_index",
"name"
],
"title": "set_clip_nameArguments",
"type": "object"
}
clips · May change state
Set a clip's own time signature (polymeter / odd-bar loops).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"numerator": {
"title": "Numerator",
"type": "integer"
},
"denominator": {
"title": "Denominator",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index",
"numerator",
"denominator"
],
"title": "set_clip_signatureArguments",
"type": "object"
}
session · May change state
Global launch quantization for firing clips/scenes. 0=None (instant,
good for auditioning), 4=1 bar (default), 7=1/4 note, 13=1/32.
Input schema
{
"properties": {
"value": {
"title": "Value",
"type": "integer"
}
},
"required": [
"value"
],
"title": "set_clip_trigger_quantizationArguments",
"type": "object"
}
tracks · May change state
Assign one regular track to crossfader side A, neither side, or side B.
This configures which side affects the track; it does not move the crossfader
or change track volume immediately. Use set_crossfader afterward to blend the
A/B groups. Repeating the same assignment has no additional effect.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"assign": {
"description": "Crossfader assignment: 0 is A, 1 is none, 2 is B.",
"maximum": 2,
"minimum": 0,
"title": "Assign",
"type": "integer"
}
},
"required": [
"track_index",
"assign"
],
"title": "set_crossfade_assignArguments",
"type": "object"
}
tracks · May change state
Set the master crossfader (-1.0 = full A, 0 = center, 1.0 = full B).
Input schema
{
"properties": {
"value": {
"title": "Value",
"type": "number"
}
},
"required": [
"value"
],
"title": "set_crossfaderArguments",
"type": "object"
}
devices · May change state
Enable or bypass one device on a regular track.
`true` turns the device on; `false` bypasses its processing while preserving
the device and parameter values. This changes audible signal flow but not
clip content. Use set_track_mute to silence the whole track, or
set_device_parameter to change one control.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"enabled": {
"description": "True turns the requested state on; false turns it off.",
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"track_index",
"device_index",
"enabled"
],
"title": "set_device_enabledArguments",
"type": "object"
}
devices · May change state
Set a parameter after reading get_device_parameters. Numbers use the native range;
strings use display units ('250 Hz', '-6 dB') or exact enum labels. Unsupported
display mappings fail before writing. Returns Live's actual readback and warnings.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.",
"title": "Parameter"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Native number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.",
"title": "Value"
}
},
"required": [
"track_index",
"device_index",
"parameter",
"value"
],
"title": "set_device_parameterArguments",
"type": "object"
}
devices · May change state
Set a device's sidechain audio input. `field` is "input_routing_type" (the
source track/return) or "input_routing_channel" (Pre FX / Post FX / Post Mixer);
`display_name` is one of the options from get_device_routing. For ducking, also
enable the device's Sidechain parameter via set_device_parameter.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"field": {
"title": "Field",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
}
},
"required": [
"track_index",
"device_index",
"field",
"display_name"
],
"title": "set_device_routingArguments",
"type": "object"
}
devices · May change state
Mute/solo/rename a single Drum Rack pad by its MIDI note (e.g. 36=kick).
Per-pad muting = instant beat variations without touching the notes.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"note": {
"title": "Note",
"type": "integer"
},
"mute": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Mute"
},
"solo": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Solo"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
}
},
"required": [
"track_index",
"device_index",
"note"
],
"title": "set_drum_padArguments",
"type": "object"
}
tracks · May change state
Fold (collapse) or unfold a group track. Errors if the track is not a group
track (see get_group_info).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"folded": {
"default": true,
"title": "Folded",
"type": "boolean"
}
},
"required": [
"track_index"
],
"title": "set_fold_stateArguments",
"type": "object"
}
session · May change state
Set the global Groove Amount (0.0 to 1.0), which scales how strongly every
clip's assigned groove is applied across the whole set.
Input schema
{
"properties": {
"amount": {
"title": "Amount",
"type": "number"
}
},
"required": [
"amount"
],
"title": "set_groove_amountArguments",
"type": "object"
}
session · May change state
Set the global Arrangement loop region and its enabled state.
`start` is an absolute beat and `length` is a positive beat duration. The
region is updated even when `enabled=false`; playback simply will not repeat
it. Use set_clip_loop for a Session clip's loop braces, not the Arrangement.
Input schema
{
"properties": {
"start": {
"description": "Position in beats from the start of the Arrangement.",
"minimum": 0,
"title": "Start",
"type": "number"
},
"length": {
"description": "Positive duration or region length in beats.",
"exclusiveMinimum": 0,
"title": "Length",
"type": "number"
},
"enabled": {
"default": true,
"description": "True turns the requested state on; false turns it off.",
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"start",
"length"
],
"title": "set_loopArguments",
"type": "object"
}
devices · May change state
Set one enabled parameter on a device in the Master track's chain.
Call get_master_device_parameters first and use its parameter name/index and
native min/max; numeric out-of-range values are clamped. Display strings with
supported units or exact enum labels also work; unsupported mappings fail
before writing. This affects the full mix. Read back the resulting display.
Use set_device_parameter for a regular track or
set_return_device_parameter for a return track.
Input schema
{
"properties": {
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.",
"title": "Parameter"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Native number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.",
"title": "Value"
}
},
"required": [
"device_index",
"parameter",
"value"
],
"title": "set_master_device_parameterArguments",
"type": "object"
}
tracks · May change state
Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB.
Input schema
{
"properties": {
"volume": {
"title": "Volume",
"type": "number"
}
},
"required": [
"volume"
],
"title": "set_master_volumeArguments",
"type": "object"
}
session · May change state
Turn Live's metronome click on/off.
Input schema
{
"properties": {
"enabled": {
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_metronomeArguments",
"type": "object"
}
session · May change state
Arm or disarm Live's global Arrangement Record state.
`true` enables Arrangement recording; `false` disables it. Enabling alone
does not record: arm the intended tracks with set_track_arm, then use
start_playback. Use set_session_record or trigger_session_record for Session
slots instead. Repeating the current state has no additional effect.
Input schema
{
"properties": {
"enabled": {
"description": "True turns the requested state on; false turns it off.",
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_record_modeArguments",
"type": "object"
}
devices · May change state
Set one enabled parameter on a device in a return track's chain.
Call get_return_device_parameters first and use its parameter name/index and
native min/max; numeric out-of-range values are clamped. Supported display-unit
strings and exact enum labels also work; unsupported mappings fail before writing.
Use set_device_parameter for
a regular track or set_master_device_parameter for the full-mix chain.
Input schema
{
"properties": {
"return_index": {
"description": "Zero-based return-track index; 0 is Return A.",
"minimum": 0,
"title": "Return Index",
"type": "integer"
},
"device_index": {
"description": "Zero-based device position in the target track's device chain.",
"minimum": 0,
"title": "Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Parameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.",
"title": "Parameter"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Native number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.",
"title": "Value"
}
},
"required": [
"return_index",
"device_index",
"parameter",
"value"
],
"title": "set_return_device_parameterArguments",
"type": "object"
}
session · May change state
Rename one Session-view scene without changing any clips in the row.
Use set_clip_name for an individual clip. Repeating the same name has no
additional effect.
Input schema
{
"properties": {
"scene_index": {
"description": "Zero-based Session-view scene (row) index.",
"minimum": 0,
"title": "Scene Index",
"type": "integer"
},
"name": {
"description": "New display name for the Live object.",
"title": "Name",
"type": "string"
}
},
"required": [
"scene_index",
"name"
],
"title": "set_scene_nameArguments",
"type": "object"
}
tracks · May change state
Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"send_index": {
"title": "Send Index",
"type": "integer"
},
"value": {
"title": "Value",
"type": "number"
}
},
"required": [
"track_index",
"send_index",
"value"
],
"title": "set_sendArguments",
"type": "object"
}
session · May change state
Toggle recording of parameter changes into Session clip envelopes -
an alternative to write_automation for captured knob rides.
Input schema
{
"properties": {
"enabled": {
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_session_automation_recordArguments",
"type": "object"
}
session · May change state
Toggle Session record (records into armed tracks' selected Session slots;
also enables MIDI overdub into playing clips).
Input schema
{
"properties": {
"enabled": {
"title": "Enabled",
"type": "boolean"
}
},
"required": [
"enabled"
],
"title": "set_session_recordArguments",
"type": "object"
}
devices · May change state
Set a Simpler device's playback mode: 0 = Classic, 1 = One-Shot, 2 = Slicing.
Slicing chops the sample into playable slices, central to lofi/hip-hop
sampling. Errors if the device at that index is not a Simpler.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"mode": {
"title": "Mode",
"type": "integer"
}
},
"required": [
"track_index",
"device_index",
"mode"
],
"title": "set_simpler_playback_modeArguments",
"type": "object"
}
session · May change state
Set the song's key context. root_note 0-11 (0=C, 2=D...), scale_name e.g.
"Major", "Minor", "Dorian". Read current values via get_session_info.
Input schema
{
"properties": {
"root_note": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Root Note"
},
"scale_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Scale Name"
}
},
"title": "set_song_scaleArguments",
"type": "object"
}
session · May change state
Set the global swing amount (0.0 to 1.0) used when quantizing with swing.
Input schema
{
"properties": {
"amount": {
"title": "Amount",
"type": "number"
}
},
"required": [
"amount"
],
"title": "set_swing_amountArguments",
"type": "object"
}
session · May change state
Set the tempo of the Ableton session.
Parameters:
- tempo: The new tempo in BPM
Input schema
{
"properties": {
"tempo": {
"title": "Tempo",
"type": "number"
}
},
"required": [
"tempo"
],
"title": "set_tempoArguments",
"type": "object"
}
session · May change state
Set the Live set's global time signature, such as 4/4, 3/4, or 6/8.
This changes bar/grid and metronome interpretation but does not rewrite clip
notes. Use set_clip_signature instead when only one clip needs a different
meter for polymeter. Repeating the same signature has no additional effect.
Input schema
{
"properties": {
"numerator": {
"description": "Number of beats per bar, such as 4 in 4/4.",
"minimum": 1,
"title": "Numerator",
"type": "integer"
},
"denominator": {
"description": "Beat-note denominator, such as 4 in 4/4 or 8 in 6/8.",
"minimum": 1,
"title": "Denominator",
"type": "integer"
}
},
"required": [
"numerator",
"denominator"
],
"title": "set_time_signatureArguments",
"type": "object"
}
tracks · May change state
Arm or disarm a track for recording (fails on tracks that can't be armed,
e.g. group/return tracks).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"arm": {
"title": "Arm",
"type": "boolean"
}
},
"required": [
"track_index",
"arm"
],
"title": "set_track_armArguments",
"type": "object"
}
tracks · May change state
Set a track's color by index (0-69 in Live's palette).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"color_index": {
"title": "Color Index",
"type": "integer"
}
},
"required": [
"track_index",
"color_index"
],
"title": "set_track_colorArguments",
"type": "object"
}
tracks · May change state
Set input monitoring: 0=In (always hear input), 1=Auto, 2=Off.
Required for resampling/bounce workflows.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"state": {
"title": "State",
"type": "integer"
}
},
"required": [
"track_index",
"state"
],
"title": "set_track_monitoringArguments",
"type": "object"
}
tracks · May change state
Set one regular track's mute state (`true` mutes; `false` unmutes).
Muting silences that track in Live but preserves its clips, devices, and
mixer settings. Use set_track_solo to audition a track relative to the rest,
or stop_clip when only Session clip playback should stop.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"mute": {
"description": "True turns the requested state on; false turns it off.",
"title": "Mute",
"type": "boolean"
}
},
"required": [
"track_index",
"mute"
],
"title": "set_track_muteArguments",
"type": "object"
}
tracks · May change state
Set the name of a track.
Parameters:
- track_index: The index of the track to rename
- name: The new name for the track
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"name": {
"title": "Name",
"type": "string"
}
},
"required": [
"track_index",
"name"
],
"title": "set_track_nameArguments",
"type": "object"
}
tracks · May change state
Set one regular track's stereo pan position; 0.0 is centered.
Live clamps the value to the track's native range. This changes mixer state,
not the audio file or clip content. Use set_master_device_parameter for a
device control, and set_crossfader for A/B crossfading.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"pan": {
"description": "Pan position from -1.0 (left) to 1.0 (right).",
"maximum": 1,
"minimum": -1,
"title": "Pan",
"type": "number"
}
},
"required": [
"track_index",
"pan"
],
"title": "set_track_panArguments",
"type": "object"
}
tracks · May change state
Set track routing by display name. field: input_routing_type |
output_routing_type | input_routing_channel | output_routing_channel.
Enables sidechain sources, bus routing, and resampling (route a track's
output into another track's input, arm, record). Get options from
get_track_routing first.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"field": {
"title": "Field",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
}
},
"required": [
"track_index",
"field",
"display_name"
],
"title": "set_track_routingArguments",
"type": "object"
}
tracks · May change state
Set one regular track's solo state (`true` solos; `false` unsolos).
Solo changes monitoring relative to other tracks and does not alter clip or
device content. Other tracks may remain soloed, so clear them separately when
exclusive auditioning is required. Use set_track_mute to silence this track.
Input schema
{
"properties": {
"track_index": {
"description": "Zero-based index of a regular track in the Live set.",
"minimum": 0,
"title": "Track Index",
"type": "integer"
},
"solo": {
"description": "True turns the requested state on; false turns it off.",
"title": "Solo",
"type": "boolean"
}
},
"required": [
"track_index",
"solo"
],
"title": "set_track_soloArguments",
"type": "object"
}
tracks · May change state
Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain).
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"volume": {
"title": "Volume",
"type": "number"
}
},
"required": [
"track_index",
"volume"
],
"title": "set_track_volumeArguments",
"type": "object"
}
generators · May change state
Bootstrap a session in one call: set tempo and create named MIDI tracks,
optionally loading an instrument found by name for each.
tracks: [{"name": "Drums", "instrument": "drum kit"}, {"name": "Bass",
"instrument": "upright bass"}, ...]. "instrument" is a search_browser query
(best match is loaded); omit it to create an empty track.
Returns a per-track report with the loaded item names.
Input schema
{
"properties": {
"tempo": {
"title": "Tempo",
"type": "number"
},
"tracks": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Tracks",
"type": "array"
}
},
"required": [
"tempo",
"tracks"
],
"title": "setup_sessionArguments",
"type": "object"
}
session · May change state
Start Arrangement playback from the current song time. NOTE: the response
reports the PRE-command state (may say playing=false right after starting) -
confirm with get_session_info.
Input schema
{
"properties": {},
"title": "start_playbackArguments",
"type": "object"
}
session · May change state
Stop every playing Session clip (does not stop the transport).
Input schema
{
"properties": {},
"title": "stop_all_clipsArguments",
"type": "object"
}
browser · May change state
Stop the browser preview started by preview_browser_item.
Input schema
{
"properties": {},
"title": "stop_browser_previewArguments",
"type": "object"
}
clips · May change state
Stop playing a clip.
Parameters:
- track_index: The index of the track containing the clip
- clip_index: The index of the clip slot containing the clip
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
}
},
"required": [
"track_index",
"clip_index"
],
"title": "stop_clipArguments",
"type": "object"
}
session · May change state
Stop playback. NOTE: the response reports the PRE-command state - confirm
with get_session_info.
Input schema
{
"properties": {},
"title": "stop_playbackArguments",
"type": "object"
}
arrangement · May change state
Switch Ableton's main window to the Arrangement view.
Parameters:
Input schema
{
"properties": {},
"title": "switch_to_arrangement_viewArguments",
"type": "object"
}
session · May change state
Tap the tempo once. Tapping repeatedly at a beat sets the tempo to that
rate; a single tap nudges the transport. Returns the resulting tempo.
Input schema
{
"properties": {},
"title": "tap_tempoArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Read a MIDI clip's notes, apply a classical motif transformation, and write
the result. Overwrites the source clip unless ``dest_clip_index`` is given
(in which case that destination slot is REPLACED instead).
op (one of):
transpose - shift every pitch by ``amount`` semitones (integer; may be
negative). Timing unchanged; out-of-range pitches clamped.
invert - mirror pitches about the first note's pitch (up-motion becomes
down-motion). ``amount`` is ignored.
retrograde - play the motif backwards in time (onset order reversed,
durations preserved). ``amount`` is ignored.
augment - scale start times and durations by ``amount`` (a factor > 1
stretches/slows, 0 < ``amount`` < 1 compresses/speeds up).
Requires ``amount`` > 0.
``amount`` therefore means semitones for transpose and a time factor for
augment. Returns a short summary of what was written.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"op": {
"title": "Op",
"type": "string"
},
"amount": {
"default": 0,
"title": "Amount",
"type": "number"
},
"dest_clip_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Dest Clip Index"
}
},
"required": [
"track_index",
"clip_index",
"op"
],
"title": "transform_clipArguments",
"type": "object"
}
session · May change state
Start Session recording into armed tracks; record_length in beats records
a fixed-length loop (e.g. 16.0 = 4 bars) then auto-switches to playback.
Input schema
{
"properties": {
"record_length": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Record Length"
}
},
"title": "trigger_session_recordArguments",
"type": "object"
}
session · May change state
Revert the most recent undoable Live-set action.
This mutates the set and may remove newly created content or restore deleted
content. It has no target parameter: Live chooses the top undo-history entry.
Use redo to reapply an accidental undo. Prefer batch_commands for related
edits so one undo reverts the group.
Input schema
{
"properties": {},
"title": "undoArguments",
"type": "object"
}
arrangement · May change state
Write clip automation for a device parameter. points = [{"time": beats, "value": v}, ...].
Replaces any existing envelope for that parameter on the clip.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"device_index": {
"title": "Device Index",
"type": "integer"
},
"parameter": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"title": "Parameter"
},
"points": {
"items": {
"additionalProperties": {
"type": "number"
},
"type": "object"
},
"title": "Points",
"type": "array"
}
},
"required": [
"track_index",
"clip_index",
"device_index",
"parameter",
"points"
],
"title": "write_automationArguments",
"type": "object"
}
generators · May change state · Review destructive effects
Write drums from an ASCII grid (16th-note steps). REPLACES existing notes.
grid: one line per instrument: "name: pattern" where pattern chars are
'X' (accent, vel 105), 'x' (normal, 85), 'o' (soft, 55), '.' or '-' (rest).
Line length = number of 16th steps (16 = one 4/4 bar; 32 = two bars...).
Instruments: kick snare rim clap chat phat ohat ltom mtom htom crash ride perc shaker,
or a raw MIDI number ("36: x...").
Example (one bar of lofi):
kick: X..x......X.....
snare: ....x.......x...
chat: x.o.x.o.x.o.x.o.
Input schema
{
"properties": {
"track_index": {
"title": "Track Index",
"type": "integer"
},
"clip_index": {
"title": "Clip Index",
"type": "integer"
},
"grid": {
"title": "Grid",
"type": "string"
},
"swing": {
"default": 0,
"title": "Swing",
"type": "number"
}
},
"required": [
"track_index",
"clip_index",
"grid"
],
"title": "write_drum_gridArguments",
"type": "object"
}