AGENTS.md
+4 −4
https://raw.githubusercontent.com/ntworm/ableton-mcp-server/HEAD/AGENTS.md
− `ableton-mcp-server` v0.7.0 exposes 97 MCP tools for inspecting and safely mutating an Ableton Live Set. Fourteen are local/headless and 83 may require Ableton Live; the current routes are loopback TCP, loopback WebSocket, composed local calls, and local-only tools. A Python FastMCP process coordinates a Live MIDI Remote Script over TCP and an Ableton Extension over WebSocket. The repository is MIT-licensed and targets Windows-hosted Ableton Live; WSL clients must launch the Windows-native execu− | `AbletonMCPServer_RemoteScript/__init__.py` | Queues socket requests and touches Python LOM only on Live's UI thread. |− Real Live connectivity is proven by `.\.venv-win\Scripts\ableton-mcp.exe doctor --json`, not by local tool discovery. Run the guarded acceptance command only against a disposable Set with the exact project-name confirmation and an empty target MIDI clip slot.− - `run_batch` is grouped undo, not rollback: a successful prefix persists and `rolled_back` is `false`.+ `ableton-mcp-server` v0.8.1 exposes 97 MCP tools for inspecting and safely mutating an Ableton Live Set. Fourteen are local/headless and 83 may require Ableton Live; the current routes are loopback TCP, loopback WebSocket, composed local calls, and local-only tools. A Python FastMCP process coordinates a Live MIDI Remote Script over TCP and an Ableton Extension over WebSocket. The repository is MIT-licensed and targets Windows-hosted Ableton Live; WSL clients must launch the Windows-native execu+ | `AbletonMCPServer_RemoteScript/` | `socket_server.py` queues socket requests and `RequestProcessor` advances them from `update_display()` on Live's UI thread; `dispatch.py` routes commands, groups undo steps and runs `run_batch`; one module per LOM area; `__init__.py` keeps `create_instance` and the control surface. |+ Real Live connectivity is proven by `.\.venv-win\Scripts\ableton-mcp.exe doctor --json`, not by local tool discovery. Run the guarded acceptance command only against a disposable Set with the exact project-name confirmation and an empty target MIDI clip slot, freshly opened from disk: the preflight refuses a Set with undo history (`can_undo`), because Live 12.4.25b1 has no Python `Song.is_dirty` (`docs/KNOWN_BUGS.md` Category S).+ - `run_batch` is not rollback: a successful prefix persists and `rolled_back` is `false`. It is one undo step only while its writes land in one Live tick: Live closes the step at the end of every UI tick, and `begin_undo_step()` or `handle_undo_steps` cannot hold it open. Arrangement edits confirm in their own tick, so a batch of them is one Ctrl+Z; each command read back on a later tick ends the step (`docs/KNOWN_BUGS.md` Category H).