Honest limits
This SDK can only do what Ableton's official Extensions SDK exposes. Here's what it can't do, so you don't build on sand.
Request / response only — no live events
You read and write on demand. There are no observers: you can't subscribe to "tempo changed" or "selection changed" and get callbacks. The only inbound events are the commands and context-menu actions the user triggers.
No transport or playback
You can't start/stop playback, read the play position, arm record, or fire clips for playback. There's no real-time or per-sample access — this is not a replacement for Max for Live or a Control Surface script.
No automation
You can set a device parameter's current value, but you can't read or write automation envelopes.
Device parameters are raw numbers
Parameter values are the host's internal numbers, with min/max.
There are no display strings (e.g. you get a number, not "-12.0 dB"). Quantized params
expose value_items for their discrete options.
No selection reading (mostly)
You can act on a selection passed to an @on_selection handler, but you can't
poll "what's currently selected" on demand.
Filesystem is sandboxed
Inside the host, file access is meant to stay within the extension's storage and
temp directories. To bring an outside file into a Set, use
resources.import_into_project(), which runs host-side. A stricter OS sandbox is coming, so
don't rely on reaching arbitrary paths.
Single API version
This release targets host API 1.0.0. The Python SDK refuses to connect to a mismatched
host rather than misbehave silently.