Files
fn_registry/logs/ardour_mcp_server.log
T
egutierrez 26569c7015 chore: auto-commit (1 archivos)
- logs/ardour_mcp_server.log

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-07-01 02:16:25 +02:00

1527 lines
2.1 MiB
Plaintext

2026-06-27T18:39:28.172640Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:28 +0200
======================================================================
2026-06-27T18:39:28.172668Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172698Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172701Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:28.172704Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:28.172863Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:28.172975Z ERROR ardour_mcp_server: MCP Server serving error: Custom { kind: UnexpectedEof, error: "expect initialize notification" }
2026-06-27T18:39:39.680650Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:39 +0200
======================================================================
2026-06-27T18:39:39.680690Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680726Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680733Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:39.680738Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:39.680940Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:39.681118Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2024-11-05"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None }, client_info: Implementation { name: "smoke", version: "0" } }
2026-06-27T18:39:39.681152Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-27T18:39:39.681197Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(2)))
2026-06-27T18:39:39.681214Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-27T18:39:39.681221Z  INFO rmcp::service: received request id=2 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-27T18:39:39.681266Z  INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-27T18:39:39.681492Z  INFO rmcp::service: response message id=2 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-27T18:39:39.681621Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(2)))
2026-06-27T18:39:41.677357Z  INFO rmcp::service: input stream terminated
2026-06-27T18:39:41.677397Z  INFO rmcp::service: serve finished quit_reason=Closed
2026-06-27T18:39:41.677450Z  INFO ardour_mcp_server: Ardour MCP server stopped.
2026-06-28T00:58:01.469430Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.469465Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469492Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469498Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.469501Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.469617Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.491839Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.491877Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491907Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491913Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.491918Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.492061Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.571711Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.571786Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.571833Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.571835Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.571847Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.571864Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.571865Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.571881Z  INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-28T00:58:01.571885Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.571892Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.571901Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.572042Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T00:58:01.572118Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T00:58:01.589367Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.589414Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.589455Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.589463Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.589475Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.589494Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.589498Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.589515Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.589519Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T00:58:01.589524Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.589547Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.589678Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T00:58:01.589759Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T01:13:35.444743Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 03:13:35 +0200
======================================================================
2026-06-28T01:13:35.444781Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444811Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444818Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T01:13:35.444823Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T01:13:35.444981Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T01:13:35.528971Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T01:13:35.529031Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T01:13:35.529092Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T01:13:35.529099Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T01:13:35.529112Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T01:13:35.529134Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T01:13:35.529138Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T01:13:35.529155Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T01:13:35.529155Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T01:13:35.529165Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T01:13:35.529177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T01:13:35.529306Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T01:13:35.529390Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:00:55.902274Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:00:55 +0200
======================================================================
2026-06-28T05:00:55.902312Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902347Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902350Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:00:55.902355Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:00:55.902516Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:00:55.960968Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:00:55.961003Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:00:55.961065Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:00:55.961081Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:00:55.961097Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:00:55.961114Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:00:55.961124Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:00:55.961128Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:00:55.961143Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:00:55.961152Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:00:55.961162Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:00:55.961255Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T05:00:55.961346Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:07:12.520034Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:07:12 +0200
======================================================================
2026-06-28T05:07:12.520078Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520108Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520114Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:07:12.520118Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:07:12.520290Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:07:12.582391Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:07:12.582424Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:07:12.582456Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:07:12.582465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:07:12.582484Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:07:12.582505Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:07:12.582510Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:07:12.582511Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:07:12.582527Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:07:12.582544Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:07:12.582556Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:07:12.582615Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T05:07:12.582717Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T11:59:32.608680Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 13:59:32 +0200
======================================================================
2026-06-28T11:59:32.608708Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608729Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608737Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T11:59:32.608739Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T11:59:32.608884Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T11:59:32.665313Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T11:59:32.665353Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T11:59:32.665386Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T11:59:32.665397Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T11:59:32.665405Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T11:59:32.665414Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T11:59:32.665417Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T11:59:32.665437Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T11:59:32.665450Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T11:59:32.665448Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T11:59:32.665462Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T11:59:32.665583Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T11:59:32.665668Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T12:55:07.087209Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 14:55:07 +0200
======================================================================
2026-06-28T12:55:07.087249Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087283Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087289Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T12:55:07.087295Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T12:55:07.087454Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T12:55:07.164128Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T12:55:07.164184Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T12:55:07.164225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T12:55:07.164231Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T12:55:07.164255Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T12:55:07.164274Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T12:55:07.164277Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T12:55:07.164288Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T12:55:07.164293Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T12:55:07.164302Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T12:55:07.164312Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T12:55:07.164437Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T12:55:07.164510Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T13:44:55.686725Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 15:44:55 +0200
======================================================================
2026-06-28T13:44:55.686904Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686967Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686977Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T13:44:55.686983Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T13:44:55.687168Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T13:44:55.746636Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T13:44:55.746713Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T13:44:55.746749Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T13:44:55.746772Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T13:44:55.746782Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T13:44:55.746793Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T13:44:55.746791Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T13:44:55.746795Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T13:44:55.746804Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T13:44:55.746816Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T13:44:55.746822Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T13:44:55.746945Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T13:44:55.747015Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T14:49:59.132937Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 16:49:59 +0200
======================================================================
2026-06-28T14:49:59.132971Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132990Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132992Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T14:49:59.132995Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T14:49:59.133082Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T14:49:59.173642Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T14:49:59.173687Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T14:49:59.173710Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T14:49:59.173716Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T14:49:59.173724Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T14:49:59.173735Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T14:49:59.173736Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T14:49:59.173745Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T14:49:59.173751Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T14:49:59.173754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T14:49:59.173758Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T14:49:59.173840Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T14:49:59.173885Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:08:27.896841Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:08:27 +0200
======================================================================
2026-06-28T15:08:27.896878Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896913Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896916Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:08:27.896923Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:08:27.897224Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:08:27.931999Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:08:27.932058Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:08:27.932087Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:08:27.932088Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:08:27.932097Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:08:27.932117Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:08:27.932119Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:08:27.932129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:08:27.932130Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:08:27.932134Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:08:27.932142Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:08:27.932276Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:08:27.932354Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:53:29.441762Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:53:29 +0200
======================================================================
2026-06-28T15:53:29.441834Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441878Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441885Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:53:29.441890Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:53:29.442095Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:53:29.517520Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:53:29.517587Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:53:29.517638Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:53:29.517645Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:53:29.517698Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:53:29.517724Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:53:29.517728Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:53:29.517731Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:53:29.517761Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:53:29.517773Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:53:29.517786Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:53:29.517919Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:53:29.518002Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.280508Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.280555Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280603Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280607Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.280613Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.281092Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.319365Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.319398Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319435Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319440Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.319443Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.319580Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.373238Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.373306Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.373347Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.373367Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.373390Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.373417Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.373416Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.373422Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.373446Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.373470Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.373485Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.373557Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.373624Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.390600Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.390676Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.391893Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.391895Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.391929Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.391961Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.391965Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.392002Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.392000Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.392016Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.392030Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.392147Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.392240Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.179246Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.179326Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179387Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179394Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.179399Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.179875Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.183240Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.183307Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183359Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183364Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.183368Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.183566Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.385072Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.385202Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.385281Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.385300Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.385320Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.385322Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.385370Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.385386Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.385404Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.385704Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.385790Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.386055Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.386158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.494585Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.494677Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494762Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494768Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.494775Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.495948Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.522951Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.523033Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523083Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523089Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.523095Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.541296Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.577791Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.577877Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.577945Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.577960Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.577981Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.577984Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.578016Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.578077Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.578261Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.578341Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.578350Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.578360Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.578637Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.607444Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.607495Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607557Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607563Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.607567Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.609675Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.703443Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.703512Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703563Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703569Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.703574Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.703775Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.879413Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.879539Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.881133Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.881250Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.881591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.881610Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.881636Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.881640Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.881864Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.881962Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.881972Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.881982Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.882826Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.958885Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.958975Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.959042Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.959059Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.959080Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.959084Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.959150Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.959218Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.959447Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.959549Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.959562Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.959572Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.961724Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.035844Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.035942Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.036762Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.036796Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.036821Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.036840Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.036860Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.036872Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.036886Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.037873Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.037987Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.038160Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-28T18:59:26.038742Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.038819Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.038871Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.038884Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.038909Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.038913Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.038933Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.038943Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.038955Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.038911Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:26.039135Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.039132Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:26.039196Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.039736Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:15.978644Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.978762Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978842Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978852Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.978859Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.979782Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:15.993510Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.993570Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993631Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993688Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.993696Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.993909Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.025747Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.025800Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025845Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025849Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.025855Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.028368Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.038104Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.038156Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038208Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038213Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.038217Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.038881Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.225450Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.225611Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.225628Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.225650Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.225653Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.225726Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.225764Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.225780Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.225822Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.225877Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.225961Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.226171Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.226706Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.255746Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.255871Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.255949Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.255975Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.256001Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.256004Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.256024Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.256040Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.256064Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.256294Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.256358Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.256425Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.256463Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.307568Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.307689Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.307763Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.307771Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.307785Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.307800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.307802Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.307824Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.307852Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.307857Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.307864Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.307994Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T20:10:16.308063Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.327776Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.327874Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.327911Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.327930Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.327946Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.327970Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.327973Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.327975Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.327998Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.328008Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.328020Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.328175Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.328265Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:21:36.409109Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:21:36 +0200
======================================================================
2026-06-28T20:21:36.409160Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409199Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409205Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:21:36.409210Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:21:36.409422Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:21:36.473277Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:21:36.473325Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:21:36.473379Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:21:36.473389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:21:36.473406Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:21:36.473420Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:21:36.473430Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:21:36.473441Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:21:36.473444Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:21:36.473448Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:21:36.473457Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:21:36.473584Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] })
2026-06-28T20:21:36.473694Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:53:07.485171Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:53:07 +0200
======================================================================
2026-06-29T00:53:07.485214Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485249Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485255Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:53:07.485261Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:53:07.485602Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:53:07.547708Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:53:07.547762Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:53:07.547807Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:53:07.547828Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:53:07.547831Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:53:07.547857Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:53:07.547862Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:53:07.547877Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:53:07.547880Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:53:07.547890Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:53:07.547912Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:53:07.548017Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-29T00:53:07.548092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.171365Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.171753Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171799Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171809Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.171833Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.172036Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.194397Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.194449Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194490Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194492Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.194495Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.194830Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.286121Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.286184Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286237Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286243Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.286248Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.286883Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.409865Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.409989Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.409999Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.410016Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.410019Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.410037Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.410060Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.410070Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.410109Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.410177Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.410192Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.410243Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.410281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.412557Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.412728Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.412756Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.412652Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.412776Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.412780Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.412802Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.412811Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.412815Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.412836Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.412882Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.413058Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.413168Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.503006Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.503105Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.503157Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.503183Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.503200Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.503225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.503229Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.503253Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.503262Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.503287Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.503305Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.503432Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:57:08.503565Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:58:27.404402Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:58:27 +0200
======================================================================
2026-06-29T00:58:27.404458Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404514Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404520Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:58:27.404526Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:58:27.404791Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:58:27.459885Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:58:27.459947Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:58:27.459985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:58:27.459985Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:58:27.459998Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:58:27.460010Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:58:27.460012Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:58:27.460022Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:58:27.460030Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:58:27.460038Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:58:27.460039Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:58:27.460115Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:58:27.460161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:59:46.703728Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:59:46 +0200
======================================================================
2026-06-29T00:59:46.703778Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703817Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703824Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:59:46.703829Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:59:46.704018Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:59:46.788267Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:59:46.788361Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:59:46.788433Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:59:46.788439Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:59:46.788448Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:59:46.788465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:59:46.788467Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:59:46.788480Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:59:46.788488Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:59:46.788499Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:59:46.788502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:59:46.788617Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:59:46.788695Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:09:21.862155Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:09:21 +0200
======================================================================
2026-06-29T01:09:21.862210Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862258Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862264Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:09:21.862271Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:09:21.862474Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:09:21.963015Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:09:21.963049Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:09:21.963076Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:09:21.963090Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:09:21.963102Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:09:21.963100Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:09:21.963104Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:09:21.963119Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:09:21.963132Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:09:21.963140Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:09:21.963146Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:09:21.963220Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:09:21.963281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:20.812885Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:20 +0200
======================================================================
2026-06-29T01:13:20.812930Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812962Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812968Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:20.812974Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:20.813167Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:20.876686Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:20.876761Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:20.876796Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:20.876800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:20.876823Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:20.876846Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:20.876850Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:20.876853Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:20.876867Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:20.876878Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:20.876902Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:20.877010Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-29T01:13:20.877089Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:51.316414Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:51 +0200
======================================================================
2026-06-29T01:13:51.316454Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316480Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316486Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:51.316490Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:51.316627Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:51.351276Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:51.351334Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:51.351374Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:51.351389Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:51.351395Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:51.351409Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:51.351413Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:51.351428Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:51.351431Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:51.351437Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:51.351448Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:51.351527Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:13:51.351587Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:22:29.306780Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:22:29 +0200
======================================================================
2026-06-29T01:22:29.306809Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306837Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306839Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:22:29.306842Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:22:29.306997Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:22:29.372501Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:22:29.372555Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:22:29.372594Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:22:29.372599Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:22:29.372611Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:22:29.372638Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:22:29.372643Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:22:29.372675Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:22:29.372683Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:22:29.372695Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:22:29.372708Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:22:29.372821Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:22:29.372882Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:35:10.667779Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:35:10 +0200
======================================================================
2026-06-29T01:35:10.667821Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667854Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667860Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:35:10.667865Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:35:10.668006Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:35:10.748313Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:35:10.748377Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:35:10.748418Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:35:10.748441Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:35:10.748460Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:35:10.748476Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:35:10.748478Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:35:10.748482Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:35:10.748491Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:35:10.748497Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:35:10.748514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:35:10.748644Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-29T01:35:10.748729Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:52:10.695390Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:52:10 +0200
======================================================================
2026-06-29T01:52:10.695421Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695455Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695458Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:52:10.695461Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:52:10.695646Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:52:10.757295Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:52:10.757337Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:52:10.757368Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:52:10.757388Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:52:10.757402Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:52:10.757415Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:52:10.757426Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:52:10.757429Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:52:10.757448Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:52:10.757457Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:52:10.757470Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:52:10.757534Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T01:52:10.757620Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.081463Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.081516Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081553Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081555Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.081559Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.081708Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.204120Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.204150Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204176Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204178Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.204182Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.204341Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.243769Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.243888Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.243985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.243998Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.244018Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.244023Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.244046Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.244059Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.244075Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.244719Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.244810Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.244999Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.247704Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.368958Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.369008Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369043Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369047Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.369051Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.369226Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.381928Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.381996Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.382040Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.382057Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.382069Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.382089Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.382103Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.382115Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.382129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.382143Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.382156Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.382302Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.382418Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.503005Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.503080Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.503125Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.503181Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.503199Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.503204Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.503215Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.503216Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.503229Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.503282Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.503291Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.503410Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.503609Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:38:53.354034Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:38:53 +0200
======================================================================
2026-06-29T04:38:53.354086Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354137Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354140Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:38:53.354144Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:38:53.354364Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:38:53.422274Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:38:53.422311Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:38:53.422340Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:38:53.422358Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:38:53.422370Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:38:53.422387Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:38:53.422389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:38:53.422392Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:38:53.422408Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:38:53.422417Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:38:53.422428Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:38:53.422489Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:38:53.422562Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T09:04:45.551334Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 11:04:45 +0200
======================================================================
2026-06-29T09:04:45.551377Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551419Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551425Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T09:04:45.551432Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T09:04:45.551636Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T09:04:45.585941Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.193" } }
2026-06-29T09:04:45.586101Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T09:04:45.586171Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T09:04:45.586190Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T09:04:45.586230Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T09:04:45.586261Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T09:04:45.586275Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T09:04:45.586285Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T09:04:45.586323Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T09:04:45.586365Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T09:04:45.586389Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T09:04:45.586536Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-29T09:04:45.586815Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T09:58:41.568155Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 11:58:41 +0200
======================================================================
2026-06-30T09:58:41.568240Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568294Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568301Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T09:58:41.568306Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T09:58:41.568501Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T09:58:41.599309Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T09:58:41.599356Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T09:58:41.599394Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T09:58:41.599415Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T09:58:41.599426Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T09:58:41.599439Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T09:58:41.599440Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T09:58:41.599443Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T09:58:41.599452Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T09:58:41.599459Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T09:58:41.599474Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T09:58:41.599565Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T09:58:41.599696Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T10:27:53.475908Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 12:27:53 +0200
======================================================================
2026-06-30T10:27:53.475958Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.475995Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.476001Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T10:27:53.476006Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T10:27:53.476189Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T10:27:53.505929Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T10:27:53.505971Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T10:27:53.506009Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T10:27:53.506021Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T10:27:53.506028Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T10:27:53.506040Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T10:27:53.506044Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T10:27:53.506061Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T10:27:53.506060Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T10:27:53.506069Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T10:27:53.506080Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T10:27:53.506151Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] })
2026-06-30T10:27:53.506210Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.498533Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.498599Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498683Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498688Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.498692Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.498896Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.625708Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.625808Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.625849Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.625867Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.625887Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.625915Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.625919Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.625919Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.625947Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.625958Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.625969Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:11:53.626086Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T11:11:53.626161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.627056Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.627088Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627123Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627128Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.627133Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.627281Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.698757Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.698822Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.698873Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.698879Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.698889Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.698891Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.698925Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.698972Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.699116Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:11:53.699187Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.699193Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.699199Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.699750Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.624424Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:32 +0200
======================================================================
2026-06-30T11:16:32.624459Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624487Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624493Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:32.624498Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:32.624719Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:32.643475Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:32.643538Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:32.643580Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:32.643591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:32.643607Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:32.643631Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:32.643635Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:32.643638Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:32.643653Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:32.643677Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:32.643690Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.643810Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T11:16:32.643888Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:16:47.652312Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:47 +0200
======================================================================
2026-06-30T11:16:47.652351Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652384Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652389Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:47.652393Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:47.652531Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:47.736835Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:47.736887Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:47.736917Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:47.736924Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:47.736929Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:47.736967Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:47.736972Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:47.736989Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:47.736991Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:47.737003Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:47.737018Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:47.737137Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:16:47.737200Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.451021Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.451069Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451099Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451102Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.451106Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.451248Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.488115Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.488173Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488216Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488224Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.488229Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.488449Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.504010Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.504055Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.504077Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.504090Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.504100Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.504112Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.504114Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.504123Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.504132Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.504141Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.504149Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.504260Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.504331Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.569462Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.569542Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.569600Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.569613Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.569615Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.569647Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.569649Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.569685Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.569701Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.569711Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.569723Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.569863Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.569953Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:08:53.000951Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:08:53 +0200
======================================================================
2026-06-30T12:08:53.000996Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001034Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001038Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:08:53.001041Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:08:53.001664Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:08:53.089098Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:08:53.089145Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:08:53.089173Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:08:53.089184Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:08:53.089195Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:08:53.089207Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:08:53.089208Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:08:53.089219Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:08:53.089225Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:08:53.089233Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:08:53.089239Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:08:53.089358Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] })
2026-06-30T12:08:53.089425Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:12:17.344926Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:12:17 +0200
======================================================================
2026-06-30T12:12:17.344966Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344992Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344995Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:12:17.344998Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:12:17.345144Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:12:17.447367Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:12:17.447416Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:12:17.447450Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:12:17.447447Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:12:17.447463Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:12:17.447480Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:12:17.447483Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:12:17.447494Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:12:17.447511Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:12:17.447520Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:12:17.447518Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:12:17.447603Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-30T12:12:17.447649Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.385586Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.385639Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385670Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385674Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.385677Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.385869Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.489761Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.489848Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.489898Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.489906Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.489914Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.489940Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.489944Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.489968Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.489982Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.489988Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.489997Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.490247Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:18:27.490334Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.535976Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.536034Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536096Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536101Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.536106Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.536334Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.588516Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.588623Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.588694Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.588734Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.588751Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.588773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.588777Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.588779Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.588798Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.588812Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.588824Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.589018Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:18:27.589120Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:22:44.935550Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:22:44 +0200
======================================================================
2026-06-30T13:22:44.935581Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935607Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935609Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:22:44.935612Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:22:44.935712Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:22:44.995833Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:22:44.995883Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:22:44.995911Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:22:44.995921Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:22:44.995924Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:22:44.995950Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:22:44.995952Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:22:44.995963Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:22:44.995976Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:22:44.995983Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:22:44.995982Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:22:44.996110Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:22:44.996180Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:40:56.928934Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:40:56 +0200
======================================================================
2026-06-30T13:40:56.928978Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929007Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929009Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:40:56.929012Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:40:56.929130Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:40:57.025963Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:40:57.026009Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:40:57.026037Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:40:57.026039Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:40:57.026052Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:40:57.026077Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:40:57.026080Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:40:57.026090Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:40:57.026097Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:40:57.026106Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:40:57.026112Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:40:57.026187Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:40:57.026266Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T14:55:29.328306Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 16:55:29 +0200
======================================================================
2026-06-30T14:55:29.328347Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328382Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328385Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T14:55:29.328389Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T14:55:29.328556Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T14:55:29.408351Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T14:55:29.408404Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T14:55:29.408453Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T14:55:29.408471Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T14:55:29.408482Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T14:55:29.408492Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T14:55:29.408500Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T14:55:29.408504Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T14:55:29.408521Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T14:55:29.408528Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T14:55:29.408539Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T14:55:29.408601Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T14:55:29.408712Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.511508Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.511597Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511637Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511642Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.511649Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.511865Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.594065Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.594098Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594130Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594133Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.594136Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.594288Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.621517Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.621604Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.621677Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.621687Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.621711Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.621725Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.621728Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.621740Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.621748Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.621756Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.621777Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.621861Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:23:06.621915Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.656849Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.656898Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.656931Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.656939Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.656942Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.656971Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.656973Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.656987Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.656995Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.657012Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.657009Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.657102Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T15:23:06.657158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:12.616760Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:12 +0200
======================================================================
2026-06-30T15:27:12.616846Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616899Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616906Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:12.616932Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:12.617359Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:12.718764Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:12.718841Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:12.718882Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:12.718882Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:12.718894Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:12.718910Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:12.718912Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:12.718931Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:12.718941Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:12.718954Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:12.718959Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:12.719096Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:27:12.719177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:13.809133Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:13 +0200
======================================================================
2026-06-30T15:27:13.809174Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809207Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809211Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:13.809214Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:13.809830Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:13.896776Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:13.896812Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:13.896850Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:13.896848Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:13.896860Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:13.896885Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:13.896887Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:13.896902Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:13.896910Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:13.896915Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:13.896920Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:13.897031Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-30T15:27:13.897092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.541207Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.541267Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541321Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541325Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.541330Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.570040Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.587361Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.587439Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587508Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587517Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.587524Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.587821Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.707625Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.707714Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.707764Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.707773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.707799Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.707843Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.707846Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.707860Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.707869Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.707880Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.707892Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.708050Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.708106Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.757286Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.757372Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.757419Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.757422Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.757434Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.757464Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.757468Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.757489Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.757501Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.757502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.757514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.757648Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.757741Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:17.883897Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:17 +0200
======================================================================
2026-06-30T16:20:17.883936Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883969Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883972Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:17.883976Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:17.884123Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.051393Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:18 +0200
======================================================================
2026-06-30T16:20:18.051456Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051508Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051528Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:18.051533Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:18.051968Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.111103Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.111185Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.111251Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.111327Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.111584Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.111597Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.111616Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.111620Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.111641Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.111654Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.111719Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.111999Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:20:18.112095Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:18.235682Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.235733Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.235767Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.235768Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.235774Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.235800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.235802Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.235814Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.235838Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.235843Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.235852Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.235929Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-30T16:20:18.235985Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:34:00.424523Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:34:00 +0200
======================================================================
2026-06-30T16:34:00.424577Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424618Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424625Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:34:00.424631Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:34:00.424820Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:34:00.481128Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:34:00.481181Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:34:00.481211Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:34:00.481214Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:34:00.481239Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:34:00.481263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:34:00.481268Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:34:00.481280Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:34:00.481290Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:34:00.481301Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:34:00.481339Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:34:00.481423Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:34:00.481515Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T17:56:39.898812Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 19:56:39 +0200
======================================================================
2026-06-30T17:56:39.898848Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898876Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898879Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T17:56:39.898881Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T17:56:39.898999Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T17:56:39.985596Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T17:56:39.985643Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T17:56:39.985679Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T17:56:39.985693Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T17:56:39.985696Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T17:56:39.985713Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T17:56:39.985715Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T17:56:39.985725Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T17:56:39.985731Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T17:56:39.985738Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T17:56:39.985754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T17:56:39.985884Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T17:56:39.985961Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T18:12:48.720223Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 20:12:48 +0200
======================================================================
2026-06-30T18:12:48.720287Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720340Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720346Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T18:12:48.720351Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T18:12:48.721790Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T18:12:48.762311Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T18:12:48.762347Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T18:12:48.762370Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T18:12:48.762373Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T18:12:48.762392Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T18:12:48.762405Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T18:12:48.762416Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T18:12:48.762420Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T18:12:48.762429Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T18:12:48.762436Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T18:12:48.762444Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T18:12:48.762556Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T18:12:48.762603Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T20:13:06.691370Z  INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 22:13:06 +0200
======================================================================
2026-06-30T20:13:06.691418Z  INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691451Z  INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691454Z  INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T20:13:06.691458Z  INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T20:13:06.691620Z  INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T20:13:06.767092Z  INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T20:13:06.767160Z  INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T20:13:06.767189Z  INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T20:13:06.767212Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T20:13:06.767238Z  INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T20:13:06.767248Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T20:13:06.767263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T20:13:06.767269Z  INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T20:13:06.767289Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T20:13:06.767302Z  INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T20:13:06.767324Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T20:13:06.767384Z  INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T20:13:06.767491Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))