MCP stdio server for Ableton Live control via Google Gemini AI, with creative context snapshots and arrangement planning
LivePilot exhibits significant definition quality gaps. While 26 tools are registered with names and basic descriptions, most descriptions are terse (10-50 chars), parameter documentation is sparse or missing, and output schemas are entirely undocumented. Tools like `call_livepilot_tool` and `build_chain_pipeline` have complex nested parameters but lack per-parameter descriptions. Error handling guidance is absent. The server conflates discovery (list_livepilot_tools) with execution (call_livepilot_tool), forcing agents to guess function names. No tool declares idempotency, destructiveness, or recovery paths. This is typical of early-stage audio/music tooling but falls well below production baseline.
Return MIDI-note summary stats for one Session clip where available. This is intentionally metadata/MIDI-only. It does not listen to audio or infer key, chord, emotion, or energy.
Arm or disarm a track for recording in Ableton Live. Note: Track 1 in Ableton is index 0.
Build and execute a complete plugin/device chain on a track in a SINGLE call. Provide the target track, ordered list of devices with ALL their parameters, and all settings upfront. The system will load each device, set all parameters with verification, and return a complete result. This replaces multiple add_plugin_to_track + set_device_parameter calls. Parameter names use semantic keys matching SEMANTIC_PARAM_MAPPINGS: For EQ Eight: band1_freq_hz, band1_gain_db, band1_q, band1_type, band2_freq_hz, band2_gain_db, band2_q, band2_type, band3_freq_hz, band3_gain_db, band3_q, band3_type, band4_freq_hz, band4_gain_db, band4_q, band4_type. For Compressor: threshold_db, ratio, attack_ms, release_ms, output_gain_db, knee_db, dry_wet_pct. For Glue Compressor: threshold_db, ratio, attack_ms, release_ms, makeup_db, dry_wet_pct. For Saturator: drive_db, output_db, dry_wet_pct, type. For Reverb: decay_time_ms, predelay_ms, dry_wet_pct, room_size, high_cut_hz, low_cut_hz. For Delay: delay_time_ms, feedback_pct, dry_wet_pct, filter_freq_hz, filter_on. For Utility: gain_db, pan, width_pct, mute. Values are in human-readable units: Hz for frequency, dB for gain/threshold, ms for attack/release/decay, ratio for compression ratio (e.g. 4.0 means 4:1), percentage 0-100 for dry/wet.
Call a LivePilot Ableton bridge function by name with JSON arguments.
Output schemas completely undocumented. Tools like get_creative_context, get_project_intent, plan_arrangement_move, build_chain_pipeline, normalize_full_length_stems, and analyze_clip_context return data but provide no schema documentation. Agents cannot plan downstream calls or extract fields reliably.
call_livepilot_tool is a generic dispatcher that accepts arbitrary function_name and args. This forces agents to call list_livepilot_tools first to discover available functions, then guess parameter names and types. No schema validation, no error guidance on invalid function names or malformed args.
Parameter descriptions missing or minimal. build_chain_pipeline has deeply nested device/params arrays but no per-parameter descriptions for nested fields. normalize_full_length_stems accepts a 'controller' object with no documentation. Agents cannot validate input structure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Continue playback from the current position in Ableton Live
Get LivePilot's structured creative context snapshot.
Get the persisted LivePilot project intent.
Get the arm status of a track. Returns whether the track is currently armed for recording or not. Note: Track 1 in Ableton is index 0.
Get the mute status of a track. Returns whether the track is currently muted or not. Note: Track 1 in Ableton is index 0.
Get the solo status of a track. Returns whether the track is currently soloed or not. Note: Track 1 in Ableton is index 0.
List LivePilot Ableton bridge functions available through MCP.
Mute or unmute a track in Ableton Live. Note: Track 1 in Ableton is index 0.
Play full-song stems at their original speed from a common zero point.
Create a reviewable arrangement plan from the current LivePilot context.
Start playback in Ableton Live
Enable or disable the loop in Ableton Live
Set the loop length in Ableton Live
Set the loop start position in Ableton Live
Set the playback position in Ableton Live
Persist LivePilot project intent as deterministic local JSON.
Set the tempo/BPM in Ableton Live
Solo or unsolo a track in Ableton Live. Note: Track 1 in Ableton is index 0.
Start recording in Ableton Live
Stop playback in Ableton Live
Stop recording in Ableton Live
Turn the metronome on or off in Ableton Live
No error handling guidance. Tools do not document what errors are retryable, what user-fixable conditions exist, or how to recover. E.g., set_tempo accepts 20-999 BPM but no tool documents what happens if an invalid BPM is passed or if Ableton is not running.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe read-only tools from destructive ones. E.g., set_tempo and mute_track both modify state but are not marked as destructive. Agents may retry them unsafely on transient failures.