AbletonMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_session_infoA | 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. |
| set_tempoA | Set the tempo of the Ableton session. Parameters:
|
| start_playbackA | 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. |
| stop_playbackA | Stop playback. NOTE: the response reports the PRE-command state - confirm with get_session_info. |
| create_sceneA | Create a new scene (row of clip slots). index -1 appends at the end. |
| create_locatorA | Create or rename an Arrangement locator at an absolute beat position. SIDE EFFECT: first moves the Arrangement playhead to |
| fire_sceneA | 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. |
| set_scene_nameA | 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. |
| set_time_signatureA | 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. |
| set_loopA | Set the global Arrangement loop region and its enabled state.
|
| undoA | 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. |
| redoA | Redo the last undone action in Live. |
| batch_commandsA | 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": "", "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. |
| capture_midiA | Grab recently played MIDI into a new clip (Live's Capture MIDI). Requires that MIDI was recently played into an armed/monitored track. |
| set_song_scaleA | 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. |
| set_metronomeA | Turn Live's metronome click on/off. |
| stop_all_clipsA | Stop every playing Session clip (does not stop the transport). |
| back_to_arrangerA | Return playback control to the Arrangement (after Session clips have overridden arrangement content - the orange 'Back to Arrangement' state). |
| set_record_modeA | Arm or disarm Live's global Arrangement Record state.
|
| set_session_recordA | Toggle Session record (records into armed tracks' selected Session slots; also enables MIDI overdub into playing clips). |
| continue_playingA | Resume playback from the current position (start_playback restarts from the playhead's last start point instead). |
| set_clip_trigger_quantizationA | Global launch quantization for firing clips/scenes. 0=None (instant, good for auditioning), 4=1 bar (default), 7=1/4 note, 13=1/32. |
| delete_sceneA | Delete a scene (row). Later scene indices shift down by one. |
| duplicate_sceneA | 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. |
| capture_and_insert_sceneA | Snapshot the currently playing Session clips into a new scene - the 'keep that combination' workflow. |
| get_locatorsA | List arrangement locators (index, name, beat time) for structure-aware navigation. Jump with jump_to_locator. |
| jump_to_locatorA | Move the playhead to a locator (index from get_locators). |
| re_enable_automationA | 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. |
| set_arrangement_overdubA | Toggle arrangement overdub: recording layers MIDI onto existing arrangement clips instead of replacing them. |
| set_session_automation_recordA | Toggle recording of parameter changes into Session clip envelopes - an alternative to write_automation for captured knob rides. |
| trigger_session_recordA | 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. |
| tap_tempoA | 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. |
| set_groove_amountA | 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. |
| set_swing_amountA | Set the global swing amount (0.0 to 1.0) used when quantizing with swing. |
| jump_byA | Move the playhead by a relative number of beats (negative moves back). Works during playback for on-the-fly navigation. |
| jump_to_cueA | Jump the playhead to the next locator/cue (direction >= 0) or the previous one (direction < 0). |
| set_ableton_linkA | Enable or disable Ableton Link, which syncs tempo and phase with other Link-enabled apps and devices on the local network. |
| get_session_snapshotA | 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. |
| get_scale_infoA | 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. |
| save_setA | 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. |
| get_track_infoA | 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. |
| create_midi_trackA | Create a new MIDI track in the Ableton session. Parameters:
|
| set_track_nameA | Set the name of a track. Parameters:
|
| delete_trackA | Delete a track. NOTE: indices of all later tracks shift down by one. |
| set_track_volumeA | Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain). |
| set_track_panA | 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. |
| set_track_muteA | Set one regular track's mute state ( 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. |
| set_track_soloA | Set one regular track's solo state ( 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. |
| set_master_volumeA | Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB. |
| set_sendA | Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0. |
| create_return_trackA | Create a new return track (a send bus, e.g. for shared reverb or delay). |
| delete_return_trackA | Delete a return track by index (0 = Return A). Later returns shift down. |
| create_audio_trackA | Insert an empty audio track at a chosen position, or append with 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. |
| get_return_tracksA | List return tracks (index + name). |
| set_track_colorA | Set a track's color by index (0-69 in Live's palette). |
| duplicate_trackA | 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. |
| set_track_armA | Arm or disarm a track for recording (fails on tracks that can't be armed, e.g. group/return tracks). |
| get_track_metersA | 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. |
| get_master_metersA | Read the Master track's output meters - values pinned near 1.0 during playback mean the master is clipping; pull set_master_volume down. |
| get_track_routingA | 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. |
| set_track_routingA | 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. |
| set_track_monitoringA | Set input monitoring: 0=In (always hear input), 1=Auto, 2=Off. Required for resampling/bounce workflows. |
| set_crossfaderA | Set the master crossfader (-1.0 = full A, 0 = center, 1.0 = full B). |
| set_crossfade_assignA | 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. |
| delete_deviceA | 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. |
| create_take_laneA | Add a take lane to a track (for comping multiple recorded takes on one track). Returns the new take-lane count. |
| get_group_infoA | 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. |
| set_fold_stateA | Fold (collapse) or unfold a group track. Errors if the track is not a group track (see get_group_info). |
| create_clipA | 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. |
| create_audio_clipA | 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:
|
| add_notes_to_clipA | 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). |
| set_clip_nameA | 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. |
| fire_clipA | 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. |
| stop_clipA | Stop playing a clip. Parameters:
|
| delete_clipA | 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. |
| get_clip_notesA | 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. |
| get_groovesA | List grooves in the Groove Pool (index + name) and the global groove amount. |
| set_clip_grooveA | Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear. |
| quantize_clipA | 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). |
| set_clip_audioA | 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. |
| set_clip_loopA | Update selected loop and launch markers on one existing Session clip. Provide at least one optional field; omitted fields stay unchanged. |
| edit_notesA | 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). |
| set_clip_colorA | 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. |
| get_clip_infoA | Full clip state: loop points, markers, playing position, per-clip time signature; for audio clips also file path, gain display, and warp markers. |
| duplicate_clip_toA | Copy a Session clip to any other track/scene slot (overwrites the destination slot). The cross-track way to build variations. |
| clip_operationA | 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). |
| set_clip_signatureA | Set a clip's own time signature (polymeter / odd-bar loops). |
| load_instrument_or_effectA | Load an instrument or effect onto a track using its URI. Parameters:
|
| get_device_parametersA | List all parameters of a device on a track: names, values, ranges, display strings. |
| set_device_parameterA | 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. |
| set_device_enabledA | Enable or bypass one device on a regular track.
|
| load_device_to_returnA | Append one loadable browser device or preset to a return track's chain. Obtain |
| load_device_to_masterA | Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering). |
| get_master_device_parametersA | List parameters of a device on the Master track. |
| set_master_device_parameterA | 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. |
| set_return_device_parameterA | 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. |
| get_return_device_parametersA | List parameters of a device on a Return track: names, values, min/max, display strings. Call before set_return_device_parameter. |
| get_rack_chainsA | List an Instrument/Effect Rack's chains and the devices inside each - previously unreachable nested devices. Use set_chain_device_parameter to control them. |
| set_chain_device_parameterA | Set a parameter on a device INSIDE a rack chain (indices from get_rack_chains). Values clamp to the parameter's native range. |
| get_drum_padsA | List a Drum Rack's occupied pads (MIDI note, name, mute, solo). |
| set_drum_padA | 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. |
| rack_variationA | Rack macro snapshots. action: "store" (save current macros as a
variation), "recall" (restore variation |
| set_simpler_playback_modeA | 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. |
| replace_simpler_sampleA | 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. |
| get_device_routingA | 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. |
| set_device_routingA | Set a device's sidechain audio input. |
| describe_deviceA | Return curated guidance for a common Ableton native device: which parameters
matter, their units (note |
| list_known_devicesA | List the devices that describe_device has curated guidance for. |
| get_browser_treeA | 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". |
| get_browser_items_at_pathA | Get browser items at a specific path in Ableton's browser. Parameters:
|
| load_drum_kitA | 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 |
| search_browserA | 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. |
| preview_browser_itemA | Audition a browser item (a sample, instrument, or preset) through Live's
preview tab WITHOUT loading it onto a track. |
| stop_browser_previewA | Stop the browser preview started by preview_browser_item. |
| switch_to_arrangement_viewA | Switch Ableton's main window to the Arrangement view. Parameters: |
| set_arrangement_timeA | Move the arrangement playhead to a specific position. Parameters:
|
| get_arrangement_clipsA | List all clips placed in the Arrangement timeline for a track. Returns each clip's name, start_time, end_time, length, and type. Parameters:
|
| duplicate_to_arrangementA | 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:
Parameters:
|
| delete_arrangement_clipA | 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. |
| write_automationA | Write clip automation for a device parameter. points = [{"time": beats, "value": v}, ...]. Replaces any existing envelope for that parameter on the clip. |
| clear_automationA | 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. |
| generate_drum_patternA | 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...). |
| generate_chord_progressionA | 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 |
| generate_basslineA | 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). |
| write_drum_gridA | 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. |
| setup_sessionA | 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. |
| generate_euclidean_drumsA | Write a Euclidean (Bjorklund) rhythm for one drum voice into a Session clip. REPLACES the clip's notes if the clip exists. Distributes |
| generate_voiced_progressionA | 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. |
| generate_melodyA | 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. |
| generate_walking_bassA | 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. |
| generate_grooveA | 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. |
| generate_genre_progressionA | 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. |
| humanize_clipA | 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. |
| transform_clipA | Read a MIDI clip's notes, apply a classical motif transformation, and write
the result. Overwrites the source clip unless op (one of):
transpose - shift every pitch by
|
| generate_phaseA | 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 If |
| generate_additiveA | 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 If |
| record_sectionA | 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 |
| analyze_mixA | 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. |
| session_diffA | 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. |
| describe_capabilitiesA | 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. |
| detect_clip_keyA | 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. |
| detect_track_keyA | 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. |
| detect_session_keyA | 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. |
| als_detect_keyA | 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 |
| analyze_audio_fileA | 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. |
| als_summaryA | 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. |
| als_list_tracksA | List every track in a saved .als file with its clips (name, MIDI/audio, start, length, looping, sample path, note count). No Live required. |
| als_extract_midiA | Extract MIDI notes from a track in a saved .als file, as
{pitch,start,duration,velocity} dicts per clip. |
| als_diffA | 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. |
| als_detailsA | 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. |
| als_find_unfinishedA | 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. |
| adg_summaryA | 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 ( |
| adg_analyzeA | 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. |
| adg_editionA | 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. |
| list_recipesA | List the built-in composition recipes (name, description, and default tempo/key/scale/bars), for use with apply_recipe. |
| apply_recipeA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| make_a_beat | Guided workflow: compose a beat from scratch in the current Live set. |
| mix_and_master | Guided workflow: balance, bus processing, and in-Live mastering. |
| start_a_track | Guided workflow: scaffold a genre starter fast, then build on it. |
| sound_design | Guided workflow: shape an instrument and its effect chain. |
| analyze_and_improve | Guided workflow: use the read-back tools to judge and improve the set. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 156 tools
Most tools target clearly distinct resources (track vs clip vs device vs return), and the descriptions are exemplary at cross-referencing alternatives. However, several overlapping clusters remain - four drum-pattern writers (generate_drum_pattern, generate_groove, generate_euclidean_drums, write_drum_grid), three chord generators, and two bass generators - where an agent must read carefully to avoid misselection.
Naming is overwhelmingly systematic: snake_case, verb-first, with predictable family prefixes (get_, set_, create_, delete_, generate_, als_, adg_) across nearly all 156 tools. Minor deviations include noun-style commands (batch_commands, clip_operation, session_diff) and the jump_by vs jump_to_* split.
156 tools far exceeds the well-scoped range, and despite Ableton Live's genuinely broad domain, there is significant redundancy (4 drum writers, 3 chord writers, 4 key detectors, 3 parameter-setter variants). This volume imposes heavy context costs and makes every tool selection a high-cardinality decision.
The surface is remarkably complete: tracks, clips, devices, transport, browser, automation, MIDI generation, live analysis, and offline .als/.adg inspection are all covered with full lifecycles. Minor gaps exist - no final render/export to disk, no arrangement clip move/trim/split, and automation can only be written/cleared, not read back - but agents can work around them.