Skip to content

Privacy and architecture

The core integration runs locally. The MCP client launches the Python server over stdio; the server talks to the Ableton Remote Script over a TCP socket, normally on localhost:9877. Hosted THIRI requests are optional.

MCP client  ⇄  Python MCP server  ⇄  TCP socket  ⇄  Ableton Remote Script  ⇄  Live Object Model
                       └── optional HTTPS ──> chords.thiri.ai

Data handling

  • No analytics or usage telemetry is transmitted.
  • The bundled telemetry hooks are local no-ops.
  • Track, clip, device, and note data is requested from the open Live set only when a tool needs it.
  • generate_chords_for_selected_audio reads only the source-file range mapped to the selected Arrangement Loop or Detail View clip. librosa and soundfile decode and analyze that range in the local MCP server process; audio samples are not sent to THIRI. The server derives beat-aligned pitch-class evidence directly from audio; it does not create an intermediate MIDI transcription.
  • MIDI note events, raw audio, track names, and clip names remain local. For analyze_midi_progression, THIRI receives only each locally detected chord symbol and the locally inferred key. For selected-audio voicing, it receives only the locally chosen chord symbols, inferred key, requested style/octave, and prior returned note names used for voice leading.
  • reharmonize_chord_progression is explicitly hosted: it sends the user-supplied chord-symbol progression, technique, and optional key to THIRI.
  • Generated MIDI and organization plans are computed locally.
  • No cloud service or API key is required for local analysis, generation, cleanup, organization, or Live control.

THIRI credentials and network behavior

Hosted theory, reharmonization, and voicing use the official THIRI REST API at https://chords.thiri.ai. THIRI_API_KEY is read from the MCP server's environment and used only as a bearer credential. It is not included in tool responses or error messages. Keep it out of commits and rotate any credential that has been pasted into chat, logs, or source control.

The optional THIRI_API_URL override must use HTTPS. Plain HTTP is accepted only for a loopback development server on localhost, 127.0.0.1, or ::1. THIRI_TIMEOUT_SECONDS defaults to 8 seconds. Responses larger than 2 MB and invalid JSON/response shapes are rejected.

When THIRI returns quota headers, tools expose them as thiri_quota.limit and/or thiri_quota.used. These values come from X-Quota-Limit and X-Quota-Used; one or both fields may be absent.

Your MCP client may have its own data-handling policy. Review that separately if session names, device names, or MIDI content are sensitive.

Safety model

  • preview_session_sort and preview_converted_midi_cleanup are read-only previews.
  • sort_session and clean_converted_midi group their changes into one Ableton Undo step.
  • Organization is idempotent: rerunning it does not repeatedly prepend category codes.
  • Generation refuses to overwrite an occupied Session slot.
  • Selected-audio generation refuses to overlap an existing Arrangement clip on an existing target track, or to use a Session target without an empty slot. It validates the request before mutation, groups creation into one Ableton Undo step when Live provides undo grouping, and attempts to remove a partial generated clip or newly created track if creation fails. A user-owned target track is never deleted during rollback.
  • create_audio_clip requires an absolute path and imports the file through Live's API; selected-audio analysis instead uses the source path reported by the selected Live clip.

Limits

Selected-audio chord generation can infer pitch from a warped, monophonic Arrangement audio clip. It requires the optional audio dependencies, a source file visible to the MCP server, at least two warp markers, and a Warp mode other than Re-Pitch. One request can analyze at most 300 seconds of mapped source audio. It is not a polyphonic transcription or chord-recognition tool. Its output is a newly generated MIDI chord clip. The other harmony tools still use MIDI note data only, and audio-to-MIDI cleanup still operates on MIDI clips that Live has already converted.

analyze_midi_progression reads at most 20,000 MIDI notes and fails if the Remote Script reports truncation. THIRI enriches the locally detected symbols; it does not perform audio recognition or receive the source MIDI notes.

Although ABLETON_HOST can point the MCP server at another machine, selected- audio analysis works only when the source path reported by Live is also readable from the MCP server's filesystem. The normal same-computer setup satisfies this condition.

Track reordering and grouping existing tracks are not exposed by Ableton's documented Live Object Model and are intentionally not simulated.