AbletonMCP tool reference.

All 156 tools in the MCP server, grouped by category. Open a tool to see its description, arguments and input schema.

156 tools · 11 toolsetsGenerated from package 1.8.1Download JSON catalog

156 of 156 tools · all toolsets

Exact server definitions

Session & transport

Playback, tempo, recording, scenes and the state of your Live set.

40 tools

Back to arrangerback_to_arranger

Return playback control to the Arrangement (after Session clips have0 arguments
Session & transport

May change state

Return playback control to the Arrangement (after Session clips have overridden arrangement content - the orange 'Back to Arrangement' state).

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "back_to_arrangerArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Batch commandsbatch_commands

Run several commands in ONE round-trip and ONE undo step (atomic-ish:1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
commandsobject[]Required
Exact input schema JSON
{
  "properties": {
    "commands": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Commands",
      "type": "array"
    }
  },
  "required": [
    "commands"
  ],
  "title": "batch_commandsArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Capture and insert scenecapture_and_insert_scene

Snapshot the currently playing Session clips into a new scene - the0 arguments
Session & transport

May change state

Snapshot the currently playing Session clips into a new scene - the 'keep that combination' workflow.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "capture_and_insert_sceneArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Capture MIDIcapture_midi

Grab recently played MIDI into a new clip (Live's Capture MIDI). Requires0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "capture_midiArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Continue playingcontinue_playing

Resume playback from the current position (start_playback restarts from0 arguments
Session & transport

May change state

Resume playback from the current position (start_playback restarts from the playhead's last start point instead).

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "continue_playingArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Create locatorcreate_locator

Create or rename an Arrangement locator at an absolute beat position.2 arguments
Session & transport

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.

Arguments 2
NameTypeRequired / default
timePosition in beats from the start of the Arrangement.numberRequired
nameOptional display name; omit it to keep Live's generated name.string | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Create scenecreate_scene

Create a new scene (row of clip slots). index -1 appends at the end.1 argument
Session & transport

May change state

Create a new scene (row of clip slots). index -1 appends at the end.

Arguments 1
NameTypeRequired / default
indexintegerDefault-1
Exact input schema JSON
{
  "properties": {
    "index": {
      "default": -1,
      "title": "Index",
      "type": "integer"
    }
  },
  "title": "create_sceneArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Delete scenedelete_scene

Delete a scene (row). Later scene indices shift down by one.1 argument
Session & transport

May change state · Review destructive effects

Delete a scene (row). Later scene indices shift down by one.

Arguments 1
NameTypeRequired / default
scene_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "scene_index": {
      "title": "Scene Index",
      "type": "integer"
    }
  },
  "required": [
    "scene_index"
  ],
  "title": "delete_sceneArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Duplicate sceneduplicate_scene

Insert a copy of one Session scene, including every clip in its row.1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
scene_indexZero-based Session-view scene (row) index.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Fire scenefire_scene

Launch a Session-view scene using Live's launch quantization.1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
scene_indexZero-based Session-view scene (row) index.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Get locatorsget_locators

List arrangement locators (index, name, beat time) for structure-aware0 arguments
Session & transport

Read-only hint

List arrangement locators (index, name, beat time) for structure-aware navigation. Jump with jump_to_locator.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_locatorsArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get scale infoget_scale_info

Read the song's scale and tuning: scale name, root note, scale intervals, and0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_scale_infoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get session infoget_session_info

Return global Live-set and transport state without modifying the set.0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_session_infoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "idempotentHint": true
}

Get session snapshotget_session_snapshot

One-call overview of the whole set: tempo, time signature, play state, and0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_session_snapshotArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Jump byjump_by

Move the playhead by a relative number of beats (negative moves back).1 argument
Session & transport

May change state

Move the playhead by a relative number of beats (negative moves back). Works during playback for on-the-fly navigation.

Arguments 1
NameTypeRequired / default
beatsnumberRequired
Exact input schema JSON
{
  "properties": {
    "beats": {
      "title": "Beats",
      "type": "number"
    }
  },
  "required": [
    "beats"
  ],
  "title": "jump_byArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Jump to cuejump_to_cue

Jump the playhead to the next locator/cue (direction >= 0) or the previous1 argument
Session & transport

May change state

Jump the playhead to the next locator/cue (direction >= 0) or the previous one (direction < 0).

Arguments 1
NameTypeRequired / default
directionintegerDefault1
Exact input schema JSON
{
  "properties": {
    "direction": {
      "default": 1,
      "title": "Direction",
      "type": "integer"
    }
  },
  "title": "jump_to_cueArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Jump to locatorjump_to_locator

Move the playhead to a locator (index from get_locators).1 argument
Session & transport

May change state

Move the playhead to a locator (index from get_locators).

Arguments 1
NameTypeRequired / default
locator_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "locator_index": {
      "title": "Locator Index",
      "type": "integer"
    }
  },
  "required": [
    "locator_index"
  ],
  "title": "jump_to_locatorArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Re enable automationre_enable_automation

Restore automation that was overridden by manual parameter changes.0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "re_enable_automationArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Redoredo

Redo the last undone action in Live.0 arguments
Session & transport

May change state

Redo the last undone action in Live.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "redoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Save setsave_set

Save the current Live set to its existing file, if the Live API supports it0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "save_setArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set ableton linkset_ableton_link

Enable or disable Ableton Link, which syncs tempo and phase with other1 argument
Session & transport

May change state

Enable or disable Ableton Link, which syncs tempo and phase with other Link-enabled apps and devices on the local network.

Arguments 1
NameTypeRequired / default
enabledbooleanRequired
Exact input schema JSON
{
  "properties": {
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "set_ableton_linkArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set arrangement overdubset_arrangement_overdub

Toggle arrangement overdub: recording layers MIDI onto existing1 argument
Session & transport

May change state

Toggle arrangement overdub: recording layers MIDI onto existing arrangement clips instead of replacing them.

Arguments 1
NameTypeRequired / default
enabledbooleanRequired
Exact input schema JSON
{
  "properties": {
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "set_arrangement_overdubArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set clip trigger quantizationset_clip_trigger_quantization

Global launch quantization for firing clips/scenes. 0=None (instant,1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
valueintegerRequired
Exact input schema JSON
{
  "properties": {
    "value": {
      "title": "Value",
      "type": "integer"
    }
  },
  "required": [
    "value"
  ],
  "title": "set_clip_trigger_quantizationArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set groove amountset_groove_amount

Set the global Groove Amount (0.0 to 1.0), which scales how strongly every1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
amountnumberRequired
Exact input schema JSON
{
  "properties": {
    "amount": {
      "title": "Amount",
      "type": "number"
    }
  },
  "required": [
    "amount"
  ],
  "title": "set_groove_amountArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set loopset_loop

Set the global Arrangement loop region and its enabled state.3 arguments
Session & transport

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.

Arguments 3
NameTypeRequired / default
startPosition in beats from the start of the Arrangement.numberRequired
lengthPositive duration or region length in beats.numberRequired
enabledTrue turns the requested state on; false turns it off.booleanDefaulttrue
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set metronomeset_metronome

Turn Live's metronome click on/off.1 argument
Session & transport

May change state

Turn Live's metronome click on/off.

Arguments 1
NameTypeRequired / default
enabledbooleanRequired
Exact input schema JSON
{
  "properties": {
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "set_metronomeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set record modeset_record_mode

Arm or disarm Live's global Arrangement Record state.1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
enabledTrue turns the requested state on; false turns it off.booleanRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set scene nameset_scene_name

Rename one Session-view scene without changing any clips in the row.2 arguments
Session & transport

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.

Arguments 2
NameTypeRequired / default
scene_indexZero-based Session-view scene (row) index.integerRequired
nameNew display name for the Live object.stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set session automation recordset_session_automation_record

Toggle recording of parameter changes into Session clip envelopes -1 argument
Session & transport

May change state

Toggle recording of parameter changes into Session clip envelopes - an alternative to write_automation for captured knob rides.

Arguments 1
NameTypeRequired / default
enabledbooleanRequired
Exact input schema JSON
{
  "properties": {
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "set_session_automation_recordArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set session recordset_session_record

Toggle Session record (records into armed tracks' selected Session slots;1 argument
Session & transport

May change state

Toggle Session record (records into armed tracks' selected Session slots; also enables MIDI overdub into playing clips).

Arguments 1
NameTypeRequired / default
enabledbooleanRequired
Exact input schema JSON
{
  "properties": {
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "set_session_recordArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set song scaleset_song_scale

Set the song's key context. root_note 0-11 (0=C, 2=D...), scale_name e.g.2 arguments
Session & transport

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.

Arguments 2
NameTypeRequired / default
root_noteinteger | nullDefaultnull
scale_namestring | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set swing amountset_swing_amount

Set the global swing amount (0.0 to 1.0) used when quantizing with swing.1 argument
Session & transport

May change state

Set the global swing amount (0.0 to 1.0) used when quantizing with swing.

Arguments 1
NameTypeRequired / default
amountnumberRequired
Exact input schema JSON
{
  "properties": {
    "amount": {
      "title": "Amount",
      "type": "number"
    }
  },
  "required": [
    "amount"
  ],
  "title": "set_swing_amountArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set temposet_tempo

Set the tempo of the Ableton session.1 argument
Session & transport

May change state

Set the tempo of the Ableton session. Parameters: - tempo: The new tempo in BPM

Arguments 1
NameTypeRequired / default
temponumberRequired
Exact input schema JSON
{
  "properties": {
    "tempo": {
      "title": "Tempo",
      "type": "number"
    }
  },
  "required": [
    "tempo"
  ],
  "title": "set_tempoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set time signatureset_time_signature

Set the Live set's global time signature, such as 4/4, 3/4, or 6/8.2 arguments
Session & transport

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.

Arguments 2
NameTypeRequired / default
numeratorNumber of beats per bar, such as 4 in 4/4.integerRequired
denominatorBeat-note denominator, such as 4 in 4/4 or 8 in 6/8.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Start playbackstart_playback

Start Arrangement playback from the current song time. NOTE: the response0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "start_playbackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Stop all clipsstop_all_clips

Stop every playing Session clip (does not stop the transport).0 arguments
Session & transport

May change state

Stop every playing Session clip (does not stop the transport).

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "stop_all_clipsArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Stop playbackstop_playback

Stop playback. NOTE: the response reports the PRE-command state - confirm0 arguments
Session & transport

May change state

Stop playback. NOTE: the response reports the PRE-command state - confirm with get_session_info.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "stop_playbackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Tap tempotap_tempo

Tap the tempo once. Tapping repeatedly at a beat sets the tempo to that0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "tap_tempoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Trigger session recordtrigger_session_record

Start Session recording into armed tracks; record_length in beats records1 argument
Session & transport

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.

Arguments 1
NameTypeRequired / default
record_lengthnumber | nullDefaultnull
Exact input schema JSON
{
  "properties": {
    "record_length": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Record Length"
    }
  },
  "title": "trigger_session_recordArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Undoundo

Revert the most recent undoable Live-set action.0 arguments
Session & transport

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "undoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Tracks & mixer

Create tracks, set levels and sends, and inspect routing.

28 tools

Create audio trackcreate_audio_track

Insert an empty audio track at a chosen position, or append with `-1`.1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
indexInsertion position among regular tracks; -1 appends at the end.integerDefault-1
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Create MIDI trackcreate_midi_track

Create a new MIDI track in the Ableton session.1 argument
Tracks & mixer

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)

Arguments 1
NameTypeRequired / default
indexintegerDefault-1
Exact input schema JSON
{
  "properties": {
    "index": {
      "default": -1,
      "title": "Index",
      "type": "integer"
    }
  },
  "title": "create_midi_trackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Create return trackcreate_return_track

Create a new return track (a send bus, e.g. for shared reverb or delay).0 arguments
Tracks & mixer

May change state

Create a new return track (a send bus, e.g. for shared reverb or delay).

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "create_return_trackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Create take lanecreate_take_lane

Add a take lane to a track (for comping multiple recorded takes on one1 argument
Tracks & mixer

May change state

Add a take lane to a track (for comping multiple recorded takes on one track). Returns the new take-lane count.

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "create_take_laneArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Delete devicedelete_device

Delete a device from a track's chain by its position (0-based). Shifts the2 arguments
Tracks & mixer

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Delete return trackdelete_return_track

Delete a return track by index (0 = Return A). Later returns shift down.1 argument
Tracks & mixer

May change state · Review destructive effects

Delete a return track by index (0 = Return A). Later returns shift down.

Arguments 1
NameTypeRequired / default
return_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "return_index": {
      "title": "Return Index",
      "type": "integer"
    }
  },
  "required": [
    "return_index"
  ],
  "title": "delete_return_trackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Delete trackdelete_track

Delete a track. NOTE: indices of all later tracks shift down by one.1 argument
Tracks & mixer

May change state · Review destructive effects

Delete a track. NOTE: indices of all later tracks shift down by one.

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "delete_trackArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Duplicate trackduplicate_track

Insert a copy of one regular track, including its devices and clips.1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Get group infoget_group_info

Report a track's group state: whether it is a foldable group track, whether1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "get_group_infoArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get master metersget_master_meters

Read the Master track's output meters - values pinned near 1.0 during0 arguments
Tracks & mixer

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_master_metersArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get return tracksget_return_tracks

List return tracks (index + name).0 arguments
Tracks & mixer

Read-only hint

List return tracks (index + name).

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_return_tracksArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get track infoget_track_info

Return detailed state for one regular track without modifying the set.1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "idempotentHint": true
}

Get track metersget_track_meters

Read a track's output level meters (post-fader): left/right 0.0-1.0ish1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "get_track_metersArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get track routingget_track_routing

Read a track's input/output routing (current + all available options)1 argument
Tracks & mixer

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.

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "get_track_routingArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Set crossfade assignset_crossfade_assign

Assign one regular track to crossfader side A, neither side, or side B.2 arguments
Tracks & mixer

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
assignCrossfader assignment: 0 is A, 1 is none, 2 is B.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set crossfaderset_crossfader

Set the master crossfader (-1.0 = full A, 0 = center, 1.0 = full B).1 argument
Tracks & mixer

May change state

Set the master crossfader (-1.0 = full A, 0 = center, 1.0 = full B).

Arguments 1
NameTypeRequired / default
valuenumberRequired
Exact input schema JSON
{
  "properties": {
    "value": {
      "title": "Value",
      "type": "number"
    }
  },
  "required": [
    "value"
  ],
  "title": "set_crossfaderArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set fold stateset_fold_state

Fold (collapse) or unfold a group track. Errors if the track is not a group2 arguments
Tracks & mixer

May change state

Fold (collapse) or unfold a group track. Errors if the track is not a group track (see get_group_info).

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
foldedbooleanDefaulttrue
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "folded": {
      "default": true,
      "title": "Folded",
      "type": "boolean"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "set_fold_stateArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set master volumeset_master_volume

Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB.1 argument
Tracks & mixer

May change state

Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB.

Arguments 1
NameTypeRequired / default
volumenumberRequired
Exact input schema JSON
{
  "properties": {
    "volume": {
      "title": "Volume",
      "type": "number"
    }
  },
  "required": [
    "volume"
  ],
  "title": "set_master_volumeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set sendset_send

Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0.3 arguments
Tracks & mixer

May change state

Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
send_indexintegerRequired
valuenumberRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track armset_track_arm

Arm or disarm a track for recording (fails on tracks that can't be armed,2 arguments
Tracks & mixer

May change state

Arm or disarm a track for recording (fails on tracks that can't be armed, e.g. group/return tracks).

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
armbooleanRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "arm": {
      "title": "Arm",
      "type": "boolean"
    }
  },
  "required": [
    "track_index",
    "arm"
  ],
  "title": "set_track_armArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track colorset_track_color

Set a track's color by index (0-69 in Live's palette).2 arguments
Tracks & mixer

May change state

Set a track's color by index (0-69 in Live's palette).

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
color_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track monitoringset_track_monitoring

Set input monitoring: 0=In (always hear input), 1=Auto, 2=Off.2 arguments
Tracks & mixer

May change state

Set input monitoring: 0=In (always hear input), 1=Auto, 2=Off. Required for resampling/bounce workflows.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
stateintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "state": {
      "title": "State",
      "type": "integer"
    }
  },
  "required": [
    "track_index",
    "state"
  ],
  "title": "set_track_monitoringArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track muteset_track_mute

Set one regular track's mute state (`true` mutes; `false` unmutes).2 arguments
Tracks & mixer

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
muteTrue turns the requested state on; false turns it off.booleanRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set track nameset_track_name

Set the name of a track.2 arguments
Tracks & mixer

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

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
namestringRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "track_index",
    "name"
  ],
  "title": "set_track_nameArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track panset_track_pan

Set one regular track's stereo pan position; 0.0 is centered.2 arguments
Tracks & mixer

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
panPan position from -1.0 (left) to 1.0 (right).numberRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set track routingset_track_routing

Set track routing by display name. field: input_routing_type |3 arguments
Tracks & mixer

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.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
fieldstringRequired
display_namestringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set track soloset_track_solo

Set one regular track's solo state (`true` solos; `false` unsolos).2 arguments
Tracks & mixer

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
soloTrue turns the requested state on; false turns it off.booleanRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set track volumeset_track_volume

Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain).2 arguments
Tracks & mixer

May change state

Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain).

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
volumenumberRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "volume": {
      "title": "Volume",
      "type": "number"
    }
  },
  "required": [
    "track_index",
    "volume"
  ],
  "title": "set_track_volumeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Clips & MIDI

Create and launch clips, edit MIDI notes, and shape clip timing.

19 tools

Add notes to clipadd_notes_to_clip

REPLACES the clip's entire note content with the given notes. Use edit_notes3 arguments

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

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
notesobject[]Required
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Clip operationclip_operation

Structural clip edits. op: "duplicate_loop" (double the loop, duplicating8 arguments

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

Arguments 8
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
opstringRequired
region_startnumber | nullDefaultnull
region_lengthnumber | nullDefaultnull
destination_timenumber | nullDefaultnull
pitchinteger | nullDefaultnull
transposition_amountinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Create audio clipcreate_audio_clip

Create a new audio clip in an audio track's clip slot by importing a file.3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
pathstringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Create clipcreate_clip

Create an empty MIDI clip in a Session slot. Fails if the slot already has3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
lengthnumberDefault4
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Delete clipdelete_clip

Delete the existing Session-view clip in a slot, including its content.2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Duplicate clip toduplicate_clip_to

Copy a Session clip to any other track/scene slot (overwrites the4 arguments

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.

Arguments 4
NameTypeRequired / default
src_trackintegerRequired
src_sceneintegerRequired
dst_trackintegerRequired
dst_sceneintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Edit notesedit_notes

Edit a subset of notes in a MIDI clip without rewriting all of them.4 arguments

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

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
addobject[] | nullDefaultnull
removeobject[] | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Fire clipfire_clip

Launch one existing Session-view clip using Live's launch quantization.2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Get clip infoget_clip_info

Full clip state: loop points, markers, playing position, per-clip time2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get clip notesget_clip_notes

Return every MIDI note in an existing Session-view MIDI clip.2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "idempotentHint": true
}

Get groovesget_grooves

List grooves in the Groove Pool (index + name) and the global groove amount.0 arguments

Read-only hint

List grooves in the Groove Pool (index + name) and the global groove amount.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "get_groovesArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Quantize clipquantize_clip

Quantize a MIDI clip. grid: quarter/eighth/eighth_triplet/sixteenth/sixteenth_triplet/thirtysecond.4 arguments

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

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
gridstringDefault"sixteenth"
amountnumberDefault1
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set clip audioset_clip_audio

Set audio-clip properties. gain 0-1, pitch_coarse semitones (-48..48), pitch_fine cents,7 arguments

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.

Arguments 7
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
gainnumber | nullDefaultnull
pitch_coarseinteger | nullDefaultnull
pitch_finenumber | nullDefaultnull
warpingboolean | nullDefaultnull
warp_modeinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set clip colorset_clip_color

Set an existing Session clip's palette color without changing its content.3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
color_indexColor index in Live's 70-color palette (0-69).integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set clip grooveset_clip_groove

Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear.3 arguments

May change state

Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
groove_indexinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set clip loopset_clip_loop

Update selected loop and launch markers on one existing Session clip.6 arguments

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.

Arguments 6
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
startOptional position in beats from the start of the clip.number | nullDefaultnull
endOptional position in beats from the start of the clip.number | nullDefaultnull
start_markerOptional position in beats from the start of the clip.number | nullDefaultnull
loopingOptional state change: true turns it on, false turns it off.boolean | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set clip nameset_clip_name

Rename an existing Session-view clip without changing its notes or audio.3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
nameNew display name for the Live object.stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set clip signatureset_clip_signature

Set a clip's own time signature (polymeter / odd-bar loops).4 arguments

May change state

Set a clip's own time signature (polymeter / odd-bar loops).

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
numeratorintegerRequired
denominatorintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Stop clipstop_clip

Stop playing a clip.2 arguments

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

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Devices & racks

Inspect parameters, work with racks, and control instruments and effects.

21 tools

Describe devicedescribe_device

Return curated guidance for a common Ableton native device: which parameters1 argument
Devices & racks

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.

Arguments 1
NameTypeRequired / default
device_namestringRequired
Exact input schema JSON
{
  "properties": {
    "device_name": {
      "title": "Device Name",
      "type": "string"
    }
  },
  "required": [
    "device_name"
  ],
  "title": "describe_deviceArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get device parametersget_device_parameters

List all parameters of a device on a track: names, values, ranges, display strings.2 arguments
Devices & racks

Read-only hint

List all parameters of a device on a track: names, values, ranges, display strings.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get device routingget_device_routing

Read a device's audio-input (sidechain) routing: current input type/channel2 arguments
Devices & racks

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get drum padsget_drum_pads

List a Drum Rack's occupied pads (MIDI note, name, mute, solo).2 arguments
Devices & racks

Read-only hint

List a Drum Rack's occupied pads (MIDI note, name, mute, solo).

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get master device parametersget_master_device_parameters

List parameters of a device on the Master track.1 argument
Devices & racks

Read-only hint

List parameters of a device on the Master track.

Arguments 1
NameTypeRequired / default
device_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "device_index": {
      "title": "Device Index",
      "type": "integer"
    }
  },
  "required": [
    "device_index"
  ],
  "title": "get_master_device_parametersArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get rack chainsget_rack_chains

List an Instrument/Effect Rack's chains and the devices inside each -2 arguments
Devices & racks

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Get return device parametersget_return_device_parameters

List parameters of a device on a Return track: names, values, min/max,2 arguments
Devices & racks

Read-only hint

List parameters of a device on a Return track: names, values, min/max, display strings. Call before set_return_device_parameter.

Arguments 2
NameTypeRequired / default
return_indexintegerRequired
device_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

List known deviceslist_known_devices

List the devices that describe_device has curated guidance for.0 arguments
Devices & racks

Read-only hint

List the devices that describe_device has curated guidance for.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "list_known_devicesArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Load device to masterload_device_to_master

Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).1 argument
Devices & racks

May change state

Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).

Arguments 1
NameTypeRequired / default
item_uristringRequired
Exact input schema JSON
{
  "properties": {
    "item_uri": {
      "title": "Item Uri",
      "type": "string"
    }
  },
  "required": [
    "item_uri"
  ],
  "title": "load_device_to_masterArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Load device to returnload_device_to_return

Append one loadable browser device or preset to a return track's chain.2 arguments
Devices & racks

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.

Arguments 2
NameTypeRequired / default
return_indexZero-based return-track index; 0 is Return A.integerRequired
item_uriLoadable browser-item URI returned by search_browser.stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Load instrument or effectload_instrument_or_effect

Load an instrument or effect onto a track using its URI.2 arguments
Devices & racks

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')

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
uristringRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "uri": {
      "title": "Uri",
      "type": "string"
    }
  },
  "required": [
    "track_index",
    "uri"
  ],
  "title": "load_instrument_or_effectArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Rack variationrack_variation

Rack macro snapshots. action: "store" (save current macros as a4 arguments
Devices & racks

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

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
actionstringRequired
indexinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Replace simpler samplereplace_simpler_sample

Replace a Simpler sample with an absolute local audio-file path. Requires Live 12.4+3 arguments
Devices & racks

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.

Arguments 3
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
device_indexZero-based device position in the target track's device chain.integerRequired
pathstringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true,
  "idempotentHint": true
}

Set chain device parameterset_chain_device_parameter

Set a parameter on a device INSIDE a rack chain (indices from6 arguments
Devices & racks

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.

Arguments 6
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
chain_indexintegerRequired
chain_device_indexintegerRequired
parameterstring | integerRequired
valuenumberRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set device enabledset_device_enabled

Enable or bypass one device on a regular track.3 arguments
Devices & racks

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.

Arguments 3
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
device_indexZero-based device position in the target track's device chain.integerRequired
enabledTrue turns the requested state on; false turns it off.booleanRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set device parameterset_device_parameter

Set a parameter after reading get_device_parameters. Numbers use the native range;4 arguments
Devices & racks

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.

Arguments 4
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
device_indexZero-based device position in the target track's device chain.integerRequired
parameterParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.string | integerRequired
valueNative 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.number | stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set device routingset_device_routing

Set a device's sidechain audio input. `field` is "input_routing_type" (the4 arguments
Devices & racks

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.

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
fieldstringRequired
display_namestringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set drum padset_drum_pad

Mute/solo/rename a single Drum Rack pad by its MIDI note (e.g. 36=kick).6 arguments
Devices & racks

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.

Arguments 6
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
noteintegerRequired
muteboolean | nullDefaultnull
soloboolean | nullDefaultnull
namestring | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Set master device parameterset_master_device_parameter

Set one enabled parameter on a device in the Master track's chain.3 arguments
Devices & racks

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.

Arguments 3
NameTypeRequired / default
device_indexZero-based device position in the target track's device chain.integerRequired
parameterParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.string | integerRequired
valueNative 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.number | stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set return device parameterset_return_device_parameter

Set one enabled parameter on a device in a return track's chain.4 arguments
Devices & racks

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.

Arguments 4
NameTypeRequired / default
return_indexZero-based return-track index; 0 is Return A.integerRequired
device_indexZero-based device position in the target track's device chain.integerRequired
parameterParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.string | integerRequired
valueNative 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.number | stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": true
}

Set simpler playback modeset_simpler_playback_mode

Set a Simpler device's playback mode: 0 = Classic, 1 = One-Shot, 2 = Slicing.3 arguments
Devices & racks

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.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
device_indexintegerRequired
modeintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Browser

Find sounds, samples, instruments and effects in Live’s browser.

6 tools

Get browser items at pathget_browser_items_at_path

Get browser items at a specific path in Ableton's browser.1 argument

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

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "get_browser_items_at_pathArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Get browser treeget_browser_tree

List the browser's top-level categories and their immediate entries.1 argument

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".

Arguments 1
NameTypeRequired / default
category_typestringDefault"all"
Exact input schema JSON
{
  "properties": {
    "category_type": {
      "default": "all",
      "title": "Category Type",
      "type": "string"
    }
  },
  "title": "get_browser_treeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Load drum kitload_drum_kit

Load a Drum Rack, then the first loadable kit at a browser path.3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
rack_uriLoadable browser-item URI returned by search_browser.stringRequired
kit_pathSlash-separated Live browser path, such as "drums/acoustic".stringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false,
  "idempotentHint": false
}

Preview browser itempreview_browser_item

Audition a browser item (a sample, instrument, or preset) through Live's1 argument

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.

Arguments 1
NameTypeRequired / default
item_uristringRequired
Exact input schema JSON
{
  "properties": {
    "item_uri": {
      "title": "Item Uri",
      "type": "string"
    }
  },
  "required": [
    "item_uri"
  ],
  "title": "preview_browser_itemArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Search browsersearch_browser

Search the Ableton browser by display name (case-insensitive substring).3 arguments

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.

Arguments 3
NameTypeRequired / default
querystringRequired
categorystring | nullDefaultnull
max_resultsintegerDefault25
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Stop browser previewstop_browser_preview

Stop the browser preview started by preview_browser_item.0 arguments

May change state

Stop the browser preview started by preview_browser_item.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "stop_browser_previewArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Arrangement

Move ideas onto the timeline and work with automation.

7 tools

Clear automationclear_automation

Delete one device parameter's entire automation envelope from a clip.4 arguments

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.

Arguments 4
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
device_indexZero-based device position in the target track's device chain.integerRequired
parameterParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.string | integerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true,
  "idempotentHint": true
}

Delete arrangement clipdelete_arrangement_clip

Delete a clip from the Arrangement timeline by its position in2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
arrangement_clip_indexintegerRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Duplicate to arrangementduplicate_to_arrangement

Copy a Session-view clip into the Arrangement timeline.3 arguments

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)

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
destination_timenumberRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Get arrangement clipsget_arrangement_clips

List all clips placed in the Arrangement timeline for a track.1 argument

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

Arguments 1
NameTypeRequired / default
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "get_arrangement_clipsArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Set arrangement timeset_arrangement_time

Move the arrangement playhead to a specific position.1 argument

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)

Arguments 1
NameTypeRequired / default
timenumberRequired
Exact input schema JSON
{
  "properties": {
    "time": {
      "title": "Time",
      "type": "number"
    }
  },
  "required": [
    "time"
  ],
  "title": "set_arrangement_timeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Switch to arrangement viewswitch_to_arrangement_view

Switch Ableton's main window to the Arrangement view.0 arguments

May change state

Switch Ableton's main window to the Arrangement view. Parameters:

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "switch_to_arrangement_viewArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Write automationwrite_automation

Write clip automation for a device parameter. points = [{"time": beats, "value": v}, ...].5 arguments

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.

Arguments 5
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
device_indexintegerRequired
parameterstring | integerRequired
pointsobject[]Required
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Music generators

Generate rhythms, chords, melodies, basslines and variations.

15 tools

Generate additivegenerate_additive

Write a Philip-Glass additive process into a Session clip. REPLACES the7 arguments
Music 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.

Arguments 7
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
pitchesstringDefault"60 62 64 65 67 69"
note_lengthnumberDefault0.5
stepsintegerDefault0
velocityintegerDefault90
source_clip_indexinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate basslinegenerate_bassline

Write a bassline following a chord progression. REPLACES existing notes.7 arguments
Music 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).

Arguments 7
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
progressionstringRequired
stylestringDefault"roots"
octaveintegerDefault2
beats_per_chordnumberDefault4
velocityintegerDefault88
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate chord progressiongenerate_chord_progression

Generate voiced chords and write them into one Session-view MIDI clip.8 arguments
Music 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.

Arguments 8
NameTypeRequired / default
track_indexZero-based index of a regular track in the Live set.integerRequired
clip_indexZero-based Session-view clip-slot index on the track.integerRequired
progressionDash-, comma-, or space-separated chord symbols, e.g. "Dm7-G7-Cmaj7".stringRequired
beats_per_chordPositive number of beats allocated to each chord.numberDefault4
center_pitchMIDI pitch around which chord voicings are centered.integerDefault60
velocityBase MIDI note velocity (1-127).integerDefault62
strumBeat offset between chord tones; 0 produces block chords.numberDefault0.02
rhythmChord rhythm: held, two stabs per slot, or quarter-note hits."held" | "stabs" | "quarters"Default"held"
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true,
  "idempotentHint": false
}

Generate drum patterngenerate_drum_pattern

Write a genre drum pattern into a Session clip on a Drum Rack track.7 arguments
Music 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...).

Arguments 7
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
stylestringDefault"lofi"
barsintegerDefault2
swingnumberDefault0.06
humanizeintegerDefault6
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate euclidean drumsgenerate_euclidean_drums

Write a Euclidean (Bjorklund) rhythm for one drum voice into a Session clip.10 arguments
Music 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.

Arguments 10
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
instrumentstringDefault"kick"
pulsesintegerDefault3
stepsintegerDefault8
barsintegerDefault2
rotateintegerDefault0
velocityintegerDefault100
humanizeintegerDefault6
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate genre progressiongenerate_genre_progression

Build a genre-idiomatic chord progression and write it as voiced chords.12 arguments
Music 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.

Arguments 12
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
genrestringRequired
keystringDefault"C"
scalestringDefault"minor"
barsintegerDefault4
stylestringDefault"rootless"
beats_per_chordnumberDefault4
center_pitchintegerDefault60
velocityintegerDefault64
voicesintegerDefault4
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate groovegenerate_groove

Write a pocketed drum groove into a Session clip. REPLACES existing notes.9 arguments
Music 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.

Arguments 9
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
stylestringDefault"lofi"
barsintegerDefault2
pocketnumberDefault0.02
swingnumberDefault0.55
ghostnumberDefault0.3
humanizeintegerDefault8
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate melodygenerate_melody

Write a voice-led melody over a chord progression. REPLACES existing notes.13 arguments
Music 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.

Arguments 13
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
progressionstringRequired
keystringDefault"C"
scalestringDefault"minor"
beats_per_chordnumberDefault4
densitystringDefault"medium"
lowintegerDefault60
highintegerDefault84
phrase_arcstringDefault"arch"
chromaticnumberDefault0.15
swingnumberDefault0.5
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate phasegenerate_phase

Write a Steve-Reich phasing pattern into a Session clip. REPLACES the8 arguments
Music 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.

Arguments 8
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
pitchesstringDefault"60 62 64 67 69"
note_lengthnumberDefault0.5
repeatsintegerDefault8
shiftnumberDefault0.25
velocityintegerDefault90
source_clip_indexinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate voiced progressiongenerate_voiced_progression

Write voice-led jazz chord voicings into a Session clip. REPLACES existing notes.10 arguments
Music 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.

Arguments 10
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
progressionstringRequired
stylestringDefault"rootless"
beats_per_chordnumberDefault4
center_pitchintegerDefault60
velocityintegerDefault64
voicesintegerDefault4
humanizeintegerDefault4
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Generate walking bassgenerate_walking_bass

Write a quarter-note walking bass line under a progression. REPLACES notes.10 arguments
Music 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.

Arguments 10
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
progressionstringRequired
keystringDefault"C"
scalestringDefault"minor"
beats_per_chordnumberDefault4
octaveintegerDefault2
ghostnumberDefault0.15
velocityintegerDefault90
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Humanize cliphumanize_clip

Read a MIDI clip, apply timing + velocity humanization, and write it back.5 arguments
Music 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.

Arguments 5
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
timingnumberDefault0.02
velocityintegerDefault8
seedinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Setup sessionsetup_session

Bootstrap a session in one call: set tempo and create named MIDI tracks,2 arguments
Music 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.

Arguments 2
NameTypeRequired / default
temponumberRequired
tracksobject[]Required
Exact input schema JSON
{
  "properties": {
    "tempo": {
      "title": "Tempo",
      "type": "number"
    },
    "tracks": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Tracks",
      "type": "array"
    }
  },
  "required": [
    "tempo",
    "tracks"
  ],
  "title": "setup_sessionArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "destructiveHint": false
}

Transform cliptransform_clip

Read a MIDI clip's notes, apply a classical motif transformation, and write5 arguments
Music 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.

Arguments 5
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
opstringRequired
amountnumberDefault0
dest_clip_indexinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Write drum gridwrite_drum_grid

Write drums from an ASCII grid (16th-note steps). REPLACES existing notes.4 arguments
Music 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.

Arguments 4
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
gridstringRequired
swingnumberDefault0
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Audio capture

Record a section of the set to an audio file.

1 tools

Record sectionrecord_section

Bounce a section of the arrangement to an audio file WITHOUT the Export4 arguments

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.

Arguments 4
NameTypeRequired / default
start_beatnumberRequired
end_beatnumberRequired
sourcestringDefault"Resampling"
cleanupbooleanDefaulttrue
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

Analysis

Inspect audio, musical key, mix state and changes to a session.

8 tools

ALS detect keyals_detect_key

Detect the key/scale of a saved .als file WITHOUT Live running3 arguments

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.

Arguments 3
NameTypeRequired / default
pathstringRequired
track_indexinteger | nullDefaultnull
weightstringDefault"duration"
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Analyze audio fileanalyze_audio_file

Measure local WAV (integer/float), AIFF/AIFF-C, FLAC, Ogg Vorbis, MP3,2 arguments

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.

Arguments 2
NameTypeRequired / default
pathstringRequired
max_secondsnumberDefault30
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "max_seconds": {
      "default": 30,
      "title": "Max Seconds",
      "type": "number"
    }
  },
  "required": [
    "path"
  ],
  "title": "analyze_audio_fileArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Analyze mixanalyze_mix

Heuristic session-state checks, NOT audio, peak, LUFS or headroom measurements.0 arguments

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "analyze_mixArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Describe capabilitiesdescribe_capabilities

A high-level map of this server: the tool groups and what each covers, plus0 arguments

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "describe_capabilitiesArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Detect clip keydetect_clip_key

Detect the key/scale of one Session MIDI clip (Krumhansl-Kessler). Reads3 arguments

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.

Arguments 3
NameTypeRequired / default
track_indexintegerRequired
clip_indexintegerRequired
weightstringDefault"duration"
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Detect session keydetect_session_key

Detect the overall key/scale of the whole set by pooling the notes of1 argument

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.

Arguments 1
NameTypeRequired / default
weightstringDefault"duration"
Exact input schema JSON
{
  "properties": {
    "weight": {
      "default": "duration",
      "title": "Weight",
      "type": "string"
    }
  },
  "title": "detect_session_keyArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Detect track keydetect_track_key

Detect the key/scale of a whole track by pooling the notes of every2 arguments

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.

Arguments 2
NameTypeRequired / default
track_indexintegerRequired
weightstringDefault"duration"
Exact input schema JSON
{
  "properties": {
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    },
    "weight": {
      "default": "duration",
      "title": "Weight",
      "type": "string"
    }
  },
  "required": [
    "track_index"
  ],
  "title": "detect_track_keyArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Session diffsession_diff

Report what changed in the set since the LAST time you called this tool:0 arguments

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.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "session_diffArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

Offline projects

Read saved .als, .adg and .adv files with Live closed.

9 tools

ADG analyzeadg_analyze

Full offline analysis of a .adg rack or .adv preset: named macros1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "adg_analyzeArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ADG editionadg_edition

Classify the Live edition a saved .adg/.adv needs, offline: 'suite' if any1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "adg_editionArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ADG summaryadg_summary

Summarize a saved .adg rack or .adv device preset WITHOUT Live running:1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "adg_summaryArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS detailsals_details

Read mixing and arrangement detail from a saved .als, offline: the set's1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "als_detailsArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS diffals_diff

Diff two saved .als files (e.g. song_v4.als vs song_v5.als) offline:2 arguments
Offline projects

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.

Arguments 2
NameTypeRequired / default
path_astringRequired
path_bstringRequired
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS extract MIDIals_extract_midi

Extract MIDI notes from a track in a saved .als file, as2 arguments
Offline projects

Read-only hint

Extract MIDI notes from a track in a saved .als file, as {pitch,start,duration,velocity} dicts per clip. `track_index` is the track's position in the set (see als_summary). No Live required.

Arguments 2
NameTypeRequired / default
pathstringRequired
track_indexintegerRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    },
    "track_index": {
      "title": "Track Index",
      "type": "integer"
    }
  },
  "required": [
    "path",
    "track_index"
  ],
  "title": "als_extract_midiArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS find unfinishedals_find_unfinished

Lint a saved .als for likely-unfinished work, offline: no master1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "als_find_unfinishedArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS list tracksals_list_tracks

List every track in a saved .als file with its clips (name, MIDI/audio,1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "als_list_tracksArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

ALS summaryals_summary

Summarize a saved .als file WITHOUT Live running: version/creator, tempo,1 argument
Offline projects

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.

Arguments 1
NameTypeRequired / default
pathstringRequired
Exact input schema JSON
{
  "properties": {
    "path": {
      "title": "Path",
      "type": "string"
    }
  },
  "required": [
    "path"
  ],
  "title": "als_summaryArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Production recipes

Explore genre starters and coordinated production operations.

2 tools

Apply recipeapply_recipe

Scaffold a genre starter in one call: set the tempo, add Drums, Bass, and5 arguments
Production 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.

Arguments 5
NameTypeRequired / default
namestringRequired
temponumber | nullDefaultnull
keystring | nullDefaultnull
scalestring | nullDefaultnull
barsinteger | nullDefaultnull
Exact input schema JSON
{
  "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"
}
Exact behavior hints JSON
{
  "destructiveHint": true
}

List recipeslist_recipes

List the built-in composition recipes (name, description, and default0 arguments
Production recipes

Read-only hint

List the built-in composition recipes (name, description, and default tempo/key/scale/bars), for use with apply_recipe.

Arguments 0

This tool takes no arguments.

Exact input schema JSON
{
  "properties": {},
  "title": "list_recipesArguments",
  "type": "object"
}
Exact behavior hints JSON
{
  "readOnlyHint": true
}

All 156 tools are included. Set ABLETON_TOOLSETS to register a smaller selection in your MCP client.

Most tools support Live 11 and 12. create_audio_clip requires Live 12.0.5 or newer. Read compatibility details.