Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DISABLE_TELEMETRYNoDisables telemetry for the third-party ableton MCP server. Consent is yours to give.1

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
undoB

Undo the last n kept proposals (most recent first).

revert_allC

Put every parameter sublevel changed in this session back.

abC

A/B by ear: bypass=true writes back every kept move's old value (the set as it was); bypass=false puts sublevel's moves back in. The undo stack is untouched.

rateA

Record what a kept proposal sounded like: verdict "good" or "bad", with an optional note. Goes into the change log next to the numbers.

historyB

The change log for this set: every write with old/new value, reason, proposal id and verdict (kept / reverted / undone / rated).

readinessB

The club floor on a measurement (default: latest): seven pass/fail checks plus the DJ-mixer boost test, each with its consequence and the fix.

mastering_checkA

Bypass the master's limiter / compressors, measure, restore, and say what they contribute: loudness added, crest and punch lost, whether the level is earned by the mix or borrowed from the ceiling. Runs as a job.

finishlineA

What a finished record measures in the drop, for a genre / family / tempo band (default: the current target's scope): acceptance bands per axis, kick and bass profiles, arrangement, pump. From the deep corpus.

samplesA

What the sample index holds: one-shots per kind, and the packs the kicks come from. Build or refresh it with python -m sublevel samples index.

find_kicksA

Rank every kick one-shot on the machine against the target's kick profile (fundamental, decay, click, sub/body); pack narrows to one library. Needs a target with a profile (a reference, or a genre with the finish line built).

find_bass_patchesB

Rank the Vital preset bank against the target's bass profile (sub/body, brightness, sustain). Seeds for design_bass.

place_sampleB

Put an audio file into Live: a new audio track (or track) gets a clip in slot with the sample. Logged like any other change.

find_referencesD

Records to aim at. like: nearest neighbours of a named track. character: words such as "heavy sub, tight punch, pumping".

add_referenceA

Ingest a local audio file into the reference library (and optionally tag it as a favourite so set_target(kind="favorites") uses it).

design_bassA

Design a bass patch toward the target's bass profile (or a few words such as "deep round tight"). backend "vital": offline search, then deliver_patch loads it into Live. backend "live": searches the instrument on the "Sublevel Bass" track in place (creating the track with a Drift bass if missing) by writing its macros, firing a clip and recording. Runs as a job.

deliver_patchA

Put a designed Vital candidate into Live: written as an AU preset, loaded onto the "Sublevel Bass" track (or track) with a 4-beat clip at the root note.

project_referenceB

What finished projects are built like: with no name, the profile across all indexed .als files (what sits on kicks, basses, buses and the master, tempo, length); with a name, that project's tracks and chains.

scaffoldA

Set an empty project up like a finished one: tempo, KICK / BASS / DRUMS / PERC / SYNTHS / VOCALS / FX tracks with the device chains finished projects put on each role, two returns, and the master chain (Glue, Saturator, EQ Eight, Limiter, Utility). dry_run lists it; dry_run=false builds it. Groups have to be made by hand afterwards - the Remote Script cannot create them.

prepare_trackB

Give a track the chain finished projects put on its role (kick: Saturator, Drum Buss, EQ Eight; bass: Saturator, EQ Eight, Glue; master: Glue, Saturator, EQ Eight, Limiter, Utility). role is read from the track name unless given. Adds only what is missing, in order, at the end of the chain.

detect_keyC

The key: from the notes of a clip (the bass track's, or track's) when there are enough, else from the last capture's audio, else the reference's.

read_notesD

The notes of a MIDI clip.

write_basslineA

A bassline that sits under the kick: root from the reference's bass (or the key, or root as a MIDI pitch), kick grid from a drum clip or the last capture. style: sub_hold, rolling_offbeat, follow_kick, two_note. dry_run shows the piano roll; dry_run=false writes it to slot slot of the bass track (created if missing) or track, replacing what is there.

automateB

Write automation for one device parameter into a session clip as steps: points = [{"time": beats, "value": v}, ...]. Needs the extended Remote Script.

sessionA

What sublevel knows about the open Live set: tracks and their device chains, the current target, budget spent, whether sublevel's moves are bypassed, open proposals and running jobs. Call this first.

set_targetB

Choose what the mix is steered toward.

kind: "genre" (value = genre name, or blank for the session's best guess), "reference" (value = a record name from the library or corpus, e.g. "Eating Glue"), "artist" (value = artist name; median of their corpus tracks), "favorites" (median of references tagged favourite), "file" (value = path). Returns the target's acceptance ranges (p25-p75) per axis and any warning that the chosen record is an outlier for its genre.

measureA

Record the mix from the top of the loop and measure it: the low-end axes, dynamics, stereo, resonances, and the club-readiness floor. Live must be playing with the loop brace on. Returns a measurement id for compare().

compareA

Compare a measurement (default: the latest) with the target: per-axis gaps to the acceptance band, the 20-320Hz curve error per band, and what each gap means in plain words.

map_mixA

Work out which track owns each band by pulling each one 12dB down in turn and re-measuring the master from the same bar. Needed before the planner can correct the low-end curve on the tracks that carry it. Live must be playing with the loop brace on. Runs as a job (one capture per track).

mixmapB

The stored mix map for this set: per track, how much of each band it carries.

monitorA

A live readout while you play: every interval_bars, capture (without seeking) and report distance and gaps against the target. Read-only. action "start" returns a job id whose progress lines are the readout; "stop" cancels it. windows=0 runs until stopped.

planA

Plan moves toward the target without touching Live. goal: "lowend" steers the low end into the target's band; "club_ready" fixes whatever the club floor failed (mono, headroom, resonances, loudness, plus the low-end axes). track: force the moves onto one track index instead of the mix map's owner. Returns a proposal id for apply(), the moves, anything refused, and the devices it would need added.

applyA

Write a proposal to Live. With verify (default) it measures before and after and keeps the moves only if the objective improved without costing punch, crest, mono or headroom; otherwise it puts them back. Runs as a job: poll job(job_id). dry_run only runs the policy filter.

iterateB

The loop: measure, plan, apply, verify, repeat until the goal is met or the policy's round cap. goal: "lowend" or "club_ready". Runs as a job.

verifyA

Re-measure now and compare with the baseline taken before the first apply.

jobA

Poll a job: status, progress lines after since, and the result when done.

cancelB

Stop a running job between steps.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.9/5.0

Scored across 36 tools

Disambiguation4/5

Tools are grouped into clear functional clusters—reference, measurement, mixing moves, and job control—and most have distinct resource-action purposes. The measurement family (measure/compare/verify/monitor) and revert family (undo/revert_all/ab) could be confused, but their scopes are different enough that a careful agent should select correctly.

Naming Consistency4/5

Most actions use an imperative verb_target pattern and information tools are named as plain nouns (session, history, samples, mixmap), which is a consistent semantic convention. A few bare verbs or abbreviations like ab, job, and rate break the pattern slightly, but the all-snake_case style keeps it predictable.

Tool Count2/5

At 36 tools, this is well beyond the 25-tool 'too many' threshold, making the surface heavy even for a broad DAW-assistant domain. Several tools could be consolidated into grouped subcommands—especially the measurement, reference, and job-related tools—without losing clarity.

Completeness4/5

The set covers the full workflow: references and target selection, measurement and comparison, planning/apply/iterate, undo and history, plus creative helpers like bassline writing, patch design, and project scaffolding. Minor gaps like reference-library removal/editing exist, but core workflows are complete with no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues