trigger_action
Execute REAPER DAW commands for transport control, project management, track editing, and view adjustments by specifying action names.
Instructions
Trigger a REAPER action by name.
Available actions:
- Transport: play, stop, pause, record, rewind, forward
- Project: save, save_as, new_project, undo, redo
- Tracks: insert_track, delete_track, duplicate_track
- View: zoom_fit, toggle_mixer
Args:
action_name: Name of the action to trigger
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action_name | Yes |
Implementation Reference
- scythe_mcp/server/main.py:296-314 (handler)MCP tool handler for 'trigger_action', automatically registered via @mcp.tool(). Delegates to ReaperBridge.trigger_action_by_name.@mcp.tool() def trigger_action(ctx: Context, action_name: str) -> str: """ Trigger a REAPER action by name. Available actions: - Transport: play, stop, pause, record, rewind, forward - Project: save, save_as, new_project, undo, redo - Tracks: insert_track, delete_track, duplicate_track - View: zoom_fit, toggle_mixer Args: action_name: Name of the action to trigger """ bridge = get_bridge() if bridge.trigger_action_by_name(action_name): return f"Triggered action: {action_name}" return f"Error: Unknown action '{action_name}'"
- Dictionary mapping action names (lowercased) to REAPER internal action IDs, used to resolve action_name to ID.REAPER_ACTIONS = { # Transport "play": 1007, "stop": 1016, "pause": 1008, "record": 1013, "rewind": 40042, "forward": 40043, "goto_start": 40042, "goto_end": 40043, # Tracks "insert_track": 40001, "insert_midi_track": 40001, # Same as insert track "delete_track": 40005, "duplicate_track": 40062, # Items "insert_empty_item": 40142, "split_items": 40012, "delete_items": 40006, # View "zoom_fit": 40295, "toggle_mixer": 40078, # Project "save": 40026, "save_as": 40022, "new_project": 40023, "undo": 40029, "redo": 40030, }
- Resolves action name to ID using REAPER_ACTIONS and calls trigger_action.def trigger_action_by_name(self, name: str) -> bool: """Trigger a REAPER action by name.""" action_id = REAPER_ACTIONS.get(name.lower()) if action_id: return self.trigger_action(action_id) logger.warning(f"Unknown action: {name}") return False
- Sends OSC /action/{action_id} message to REAPER to execute the action.def trigger_action(self, action_id: int) -> bool: """Trigger a REAPER action by ID.""" # OSC format: /action/_ID or /action/ID return self.send_osc(f"/action/{action_id}")