sublevel
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DISABLE_TELEMETRY | No | Disables 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
| 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 |
|---|---|
| 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 |
| find_kicksA | Rank every kick one-shot on the machine against the target's kick profile
(fundamental, decay, click, sub/body); |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| cancelB | Stop a running job between steps. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
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.
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.
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.
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.