Skip to content
Agentmart
Submit a tool

REAPER MCP

Enables AI assistants to control REAPER for mixing, mastering, MIDI and music production.

Connector by twelvetake.com · Domain verified by the MCP Registry

IndexedMITLocal (stdio)★ 94
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/twelvetake-com-reaper-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Enables AI assistants to control REAPER for mixing, mastering, MIDI and music production.

Use cases: audio-video

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
58 read · 73 write · 31 delete · 18 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 180

Read from the source code; the running server may list different tools.

Read 58 · Look things up without changing anything.

  • find_eq
  • get_active_take
  • get_all_tracks
  • get_cursor_position
  • get_envelope_point_count
  • get_envelope_points
  • get_eq_band_enabled
  • get_eq_bands
  • get_fx_envelope
  • get_fx_envelope_points
  • get_fx_preset
  • get_fx_presets
Show 46 more tools
  • get_item_info
  • get_markers
  • get_master_track
  • get_midi_item
  • get_midi_notes
  • get_play_position
  • get_play_state
  • get_project_length
  • get_project_name
  • get_project_path
  • get_project_summary
  • get_regions
  • get_repeat_state
  • get_selected_items
  • get_selected_midi_notes
  • get_selected_tracks
  • get_takes
  • get_tempo
  • get_time_selection
  • get_time_signature
  • get_track
  • get_track_count
  • get_track_envelope
  • get_track_fx_chunk
  • get_track_items
  • get_track_master_send
  • get_track_num_sends
  • get_track_peak
  • get_track_peak_hold
  • get_undo_state
  • measure_loudness
  • measure_spectrum
  • take_fx_get_count
  • take_fx_get_enabled
  • take_fx_get_list
  • take_fx_get_name
  • take_fx_get_num_params
  • take_fx_get_param
  • take_fx_get_param_name
  • track_fx_get_count
  • track_fx_get_enabled
  • track_fx_get_list
  • track_fx_get_name
  • track_fx_get_num_params
  • track_fx_get_param
  • track_fx_get_param_name

Write 73 · Create, change, send or run things.

  • add_compressor
  • add_envelope_point
  • add_eq
  • add_fx_envelope_point
  • add_limiter
  • add_marker
  • add_mastering_chain
  • add_midi_note
  • add_midi_notes_batch
  • add_parallel_compression
  • add_region
  • copy_selected_items
Show 61 more tools
  • create_bus
  • create_click_track
  • create_midi_item
  • create_send
  • go_to_marker
  • go_to_region
  • insert_audio_file
  • insert_track
  • legato_midi_notes
  • play
  • ramp_midi_note_velocities
  • record
  • scale_midi_note_velocities
  • select_all_items
  • select_all_tracks
  • select_comp_lane
  • select_midi_notes
  • select_track
  • set_active_take
  • set_cursor_position
  • set_eq_band
  • set_eq_band_enabled
  • set_fx_preset
  • set_item_fade_in
  • set_item_fade_out
  • set_item_length
  • set_item_mute
  • set_item_position
  • set_item_volume
  • set_midi_note
  • set_midi_note_velocity
  • set_send_dest_channels
  • set_send_source_channels
  • set_send_volume
  • set_tempo
  • set_time_selection
  • set_time_signature
  • set_track_as_folder
  • set_track_automation_mode
  • set_track_color
  • set_track_input
  • set_track_master_send
  • set_track_monitor
  • set_track_mute
  • set_track_name
  • set_track_pan
  • set_track_phase
  • set_track_solo
  • set_track_volume
  • set_track_width
  • setup_sidechain_send
  • snap_midi_notes_to_scale
  • stop
  • take_fx_add_by_name
  • take_fx_set_enabled
  • take_fx_set_param
  • toggle_repeat
  • track_fx_add_by_name
  • track_fx_move
  • track_fx_set_enabled
  • track_fx_set_param

Delete 31 · Delete, drop, revoke or wipe things.

  • clear_all_peak_indicators
  • clear_envelope
  • clear_fx_envelope
  • clear_midi_item
  • clear_time_selection
  • create_project
  • crop_to_active_take
  • cut_selected_items
  • delete_envelope_point
  • delete_fx_envelope_point
  • delete_item
  • delete_marker
Show 19 more tools
  • delete_midi_note
  • delete_region
  • delete_selected_items
  • delete_send
  • delete_take
  • delete_track
  • explode_takes
  • open_project
  • redo
  • remove_overlapping_midi_notes
  • render_project
  • render_region
  • run_action
  • run_action_by_name
  • save_fx_preset
  • save_project
  • take_fx_delete
  • track_fx_delete
  • undo

Not yet classified 18 · We could not tell from the name and description.

  • arm_track
  • arm_track_envelope
  • configure_reacomp_sidechain
  • duplicate_item
  • humanize_midi_notes
  • nudge_midi_notes
  • paste_items
  • pause
  • quantize_midi_notes
  • setup_sidechain_compression
  • split_item
  • stretch_midi_notes
Show 6 more tools
  • strum_midi_notes
  • transpose_midi_notes
  • unselect_all_items
  • unselect_all_tracks
  • zoom_to_project
  • zoom_to_selection

Files it touches

  • Any path the agent passes to its tools

Tools (180)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_compressor

    Add ReaComp to a track. Returns: Object with fx_index.

  • add_envelope_point

    Add a point to an envelope. A missing Volume, Pan, Width, Mute or Trim Volume envelope (or a Pre-FX one) is created first: REAPER starts it with a point at 0:00 holding the track's current value, and the response has envelope_created. Args: envelope_name: Envelope name. time: Time position in seconds. value: Raw value. Pan -1..1 with +1 = LEFT (the reverse of set_track_pan); Width -1..1; Mute 0 = muted, 1 = unmuted. A raw volume value depends on the envelope's scaling, so use value_db there. shape: Point shape (0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=…

  • add_eq

    Add ReaEQ to a track. Returns: Object with fx_index.

  • add_fx_envelope_point

    Add an automation point to an FX parameter envelope. Args: time: Time position in seconds. value: The parameter's own value, within the min..max track_fx_get_param reports (a JSFX dB slider takes dB). shape: Point shape (0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier). Returns: point_index, value, and shown: the value as REAPER displays it.

  • add_limiter

    Add ReaLimit (brickwall limiter) to a track. Returns: Object with fx_index.

  • add_marker

    Add a marker at a position. Args: position: Position in seconds. name: Marker name. color: Marker color (0 = default). Returns: Object with marker index.

  • add_mastering_chain

    Add a standard mastering chain to the master track. Adds the following plugins in order: 1. ReaEQ (corrective EQ) 2. ReaComp (glue compression) 3. ReaEQ (tonal shaping) 4. ReaLimit (brickwall limiter) Returns: Object with list of added FX indices.

  • add_midi_note

    Add a MIDI note to an item using musical timing (beats). Args: pitch: MIDI note number (0-127, 60 = middle C). velocity: Note velocity (1-127). start_beat: Start position in beats from the item start (0 = first beat). length_beats: Note length in beats (0.25 = sixteenth, 0.5 = eighth, 1.0 = quarter). Example: Four-on-the-floor kick: add_midi_note(0, 0, 36, 110, start_beat=0, length_beats=0.25) then start_beat=1, 2, 3.

  • add_midi_notes_batch

    Add multiple MIDI notes to an item in one call, using musical timing (beats). Args: notes: List of note dicts with keys: pitch, velocity, start_beat, length_beats, channel (optional). Returns: Object with count of notes added.

  • add_parallel_compression

    Set up New York style parallel compression for a track. Creates a new bus track with heavy compression, fed by a send from the source track. Args: track_index: Source track index (0-based). blend_db: Send level in dB for the compressed signal (default -6dB). Returns: Object with bus_track_index, send_index, and compressor_fx_index.

  • add_region

    Add a region. Args: start: Start position in seconds. end: End position in seconds. name: Region name. color: Region color (0 = default). Returns: Object with region index.

  • arm_track

    Arm or disarm a track for recording. Args: arm: True to arm, False to disarm.

  • arm_track_envelope

    Arm or disarm an envelope for recording. Args: envelope_name: Envelope name. arm: True to arm, False to disarm.

  • clear_all_peak_indicators

    Clear the peak hold indicators on all tracks (including master). Resets the held peak values that accumulate during playback. Use before a fresh playback pass when you want clean readings for gain staging.

  • clear_envelopecan change or delete data

    Delete all points from an envelope. Args: envelope_name: Envelope name.

Show 165 more tools
  • clear_fx_envelopecan change or delete data

    Clear all automation points from an FX parameter envelope. Returns: Object with deleted_count.

  • clear_midi_itemcan change or delete data

    Delete all MIDI notes from an item. Returns: Object with count of notes deleted.

  • clear_time_selection

    Clear the time selection.

  • configure_reacomp_sidechain

    Configure ReaComp to use sidechain input for detection. Args: track_index: Track index (0-based) where ReaComp is located. fx_index: FX index (0-based) of ReaComp in the FX chain. use_sidechain: True to use auxiliary input (channels 3-4), False for main input. Returns: Object with configuration status.

  • copy_selected_items

    Copy selected items to clipboard.

  • create_bus

    Create a submix/stem bus and route specified tracks to it. Args: name: Name for the bus track. source_track_indices: List of track indices to route to this bus. Returns: Object with bus_track_index and routing info.

  • create_click_track

    Add a click track at the end of the track list. It holds REAPER's click source, which follows the tempo map and time signature changes and accents each downbeat. Args: start: Start in seconds. end: End in seconds (default: the end of the project). name: Track name. Returns: track_index, item_index, start, end.

  • create_midi_item

    Create an empty MIDI item on a track. Args: position: Start position in seconds. length: Length in seconds. Returns: Object with item info including the new item_index.

  • create_projectcan change or delete data

    Create a new REAPER project. Note: REAPER has no API to name a project that has never been saved, so this server has no way to name one either. The removed `name` parameter never took effect.

  • create_send

    Create a send from one track to another. Args: src_track: Source track index (0-based). dest_track: Destination track index (0-based). Returns: Object with send_index.

  • crop_to_active_takecan change or delete data

    Crop a media item to its active take, discarding all other takes.

  • cut_selected_itemscan change or delete data

    Cut selected items to clipboard.

  • delete_envelope_pointcan change or delete data

    Delete an envelope point. Args: envelope_name: Envelope name.

  • delete_fx_envelope_pointcan change or delete data

    Delete an automation point from an FX parameter envelope. Args: point_index: Point index (0-based) to delete.

  • delete_itemcan change or delete data

    Delete a media item.

  • delete_markercan change or delete data

    Delete a marker by index.

  • delete_midi_notecan change or delete data

    Delete a MIDI note from an item.

  • delete_regioncan change or delete data

    Delete a region by index.

  • delete_selected_itemscan change or delete data

    Delete all selected items.

  • delete_sendcan change or delete data

    Delete a send from a track. Args: track_index: Source track index (0-based). send_index: Send index (0-based) to delete.

  • delete_takecan change or delete data

    Delete a specific take from a media item. Args: take_index: Take index to delete (0-based). The take is activated first, then removed.

  • delete_trackcan change or delete data

    Delete a track. Args: track_index: Track index to delete (0-based). Cannot delete master track (-1).

  • duplicate_item

    Duplicate a media item. Returns: Object with new item info.

  • explode_takescan change or delete data

    Explode all takes of a media item in place (each take becomes its own overlapping item).

  • find_eq

    Find ReaEQ on a track, optionally adding it if absent. Args: instantiate: If True and ReaEQ is not present, add it. Returns: Object with 'ret' = the FX index of ReaEQ, or -1 if not found.

  • get_active_takeread-only

    Get the index of the active take of a media item. Returns: Object with 'ret' = active take index (-1 if the item has no active take).

  • get_all_tracksread-only

    Get information about all tracks in the project.

  • get_cursor_positionread-only

    Get the edit cursor position. Returns: Object with cursor position in seconds.

  • get_envelope_point_countread-only

    Get the number of points in an envelope. Args: envelope_name: Envelope name. Returns: Object with point count.

  • get_envelope_pointsread-only

    Get all points from an envelope. Args: envelope_name: Envelope name. Returns: points (time, value, shape, shown). A volume envelope adds value_db to each point, and scaling.

  • get_eq_band_enabledread-only

    Check whether a ReaEQ band is enabled. Args: fx_index: FX index (0-based) of ReaEQ. bandtype: Band type (0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass). bandidx: Band index within that type (0=first). Returns: Object with 'ret' boolean (true=enabled).

  • get_eq_bandsread-only

    Get all ReaEQ band settings in one structured call. Args: fx_index: FX index (0-based) of ReaEQ in the FX chain. Returns: Object with a 'bands' list. Each band has band_index, bandtype, bandtype_name, bandidx, paramtype, paramtype_name, normval, the REAPER-formatted value, and (for gain params) the computed gain_db.

  • get_fx_envelope

    Get or create an automation envelope for an FX parameter. This enables automation of any FX parameter (e.g., a flanger knob in Guitar Rig). The envelope is created if it doesn't exist. Args: param_index: Parameter index (0-based). Use track_fx_get_num_params() to find available parameters. Returns: Object with envelope_name, param_name, point_count, and indices.

  • get_fx_envelope_pointsread-only

    Get all automation points from an FX parameter envelope. Returns: Object with list of points (time, value, shown, shape, tension, selected).

  • get_fx_presetread-only

    Get the current preset name of an FX. Returns: Object with current preset name.

  • get_fx_presetsread-only

    Get list of presets available for an FX. Returns: Object with list of preset names.

  • get_item_inforead-only

    Get information about a media item. Returns: Object with item properties (position, length, take info, etc.).

  • get_markersread-only

    Get all markers in the project. Returns: Object with list of markers (position, name, index).

  • get_master_trackread-only

    Get information about the master track.

  • get_midi_itemread-only

    Get information about a MIDI item. Returns: Object with item info including position, length, note count.

  • get_midi_notesread-only

    Get all MIDI notes from an item. Returns: Object with list of notes.

  • get_play_positionread-only

    Get the current playback position. Returns: Object with play position in seconds.

  • get_play_stateread-only

    Get the current playback state. Returns: Object with play state info.

  • get_project_lengthread-only

    Get the length of the project (end of last item). Returns: Object with project length in seconds.

  • get_project_nameread-only

    Get the project name.

  • get_project_pathread-only

    Get the project path.

  • get_project_summaryread-only

    Get a comprehensive summary of the current REAPER project. Returns everything needed to understand the project state and give useful mixing/production advice in a single call. Returns: Object with: - project_name: Name of the project file - project_path: Full path to the project - tempo: Project tempo in BPM - time_signature: {numerator, denominator} - project_length: Length in seconds - track_count: Total number of tracks - tracks: List of track info objects, each containing: - index: Track index (0-based) - name: Track name - volume_d…

  • get_regionsread-only

    Get all regions in the project. Returns: Object with list of regions (start, end, name, index).

  • get_repeat_stateread-only

    Get the current repeat state. Returns: Object with repeat state (true/false).

  • get_selected_itemsread-only

    Get all selected media items. Returns: Object with list of selected items.

  • get_selected_midi_notesread-only

    Read the MIDI notes currently SELECTED in REAPER's editor for the active take. The escape hatch for "operate on what I've selected": select notes by hand in REAPER, call this to see which they are, then translate that into an explicit value filter (pitch range / beat window / channel) for the transform tools. Read-only, no undo. Returns: {ok, notes:[...], ret} - the selected notes, same shape as get_midi_notes (each note carries item-relative start_beat/end_beat). `index` is REAPER's absolute PPQ-sorted note index, so a partial selection is non-contiguous. Empty selection -> note…

  • get_selected_tracksread-only

    Get indices of all selected tracks. Returns: Object with list of selected track indices.

  • get_takesread-only

    List all takes of a media item. Returns: Object with 'takes' array (each entry: index, name, is_active) and 'ret' = take count.

  • get_temporead-only

    Get the tempo at project start as `ret`, and every tempo marker as `tempo_markers`.

  • get_time_selectionread-only

    Get the current time selection. Returns: Object with start and end times.

  • get_time_signatureread-only

    Get the project time signature.

  • get_trackread-only

    Get information about a track. Returns: Object with 'info': guid, name, volume, volume_db, pan, muted, soloed, has_midi, has_audio, fx_names, role.

  • get_track_countread-only

    Get the total number of tracks in the current REAPER project (excluding master track).

  • get_track_enveloperead-only

    Get a track envelope by name. Args: envelope_name: Envelope name (e.g., "Volume", "Pan", "Mute"). Returns: Object with envelope info.

  • get_track_fx_chunkread-only

    Get the raw state chunk from an FX plugin (includes preset/state data). Useful for reading VSTi state data like Toontrack EZkeys chord progressions. The chunk contains the full serialized state of the plugin. Returns: Object with 'chunk' containing the FX state data string.

  • get_track_itemsread-only

    Get all media items on a track. Returns: Object with list of items.

  • get_track_master_sendread-only

    Get the master/parent send state of a track. Returns: Object with 'ret' field (1 = enabled, 0 = disabled).

  • get_track_num_sendsread-only

    Get the number of sends from a track.

  • get_track_peakread-only

    Get the current peak level of a track. Args: channel: Channel (0=left, 1=right). Returns: Object with peak value in dB.

  • get_track_peak_holdread-only

    Get the peak hold level of a track (highest peak since meters were last reset). Returns the max peak from a previous playback without needing to be actively playing - play the project, stop, then call this for gain staging. Args: channel: Channel (0=left, 1=right). Returns: Object with peak hold value in dB.

  • get_undo_stateread-only

    Get the current undo/redo state. Returns: Object with undo and redo descriptions.

  • go_to_marker

    Move the edit cursor to a marker.

  • go_to_region

    Move the edit cursor to a region start.

  • humanize_midi_notes

    Humanize MIDI: nudge timing and velocity by small random amounts, reproducibly. Each note gets its own timing and velocity offset drawn from a bell curve. Note lengths are preserved (start and end move together) and pitches are never touched. The randomness is seeded, so the same take with the same seed and settings gives identical results every time. Velocities are clamped to 1-127 and counted in clamped; notes pushed past the item end are kept and reported in out_of_bounds. Unlike the other timing tools, a note pushed before the item start is placed at the item start and counted in out_of_…

  • insert_audio_file

    Insert an audio file onto a track. Args: file_path: Full path to the audio file. position: Position in seconds. Returns: Object with track_index, item_index of the created item, and position.

  • insert_track

    Insert a new track at the specified index. Args: index: Position to insert track (0-based). If not specified, adds at end. name: Optional name for the new track. Returns: Info about the created track.

  • legato_midi_notes

    Close the gaps in a MIDI line (legato), or set every note to one length. Only note ends move; starts are never touched. "connect" extends each note's end to the next onset and never shortens anything; a gap wider than max_gap_beats is left as a rest and counted in gaps_preserved, and the last note is left alone. "fixed" instead sets every targeted note's length to length_beats. Notes whose new end passes the item end are kept and reported in out_of_bounds. Args: mode: "connect" (extend each end to the next onset) or "fixed" (set every length). voice: connect only. "chordal" extends t…

  • measure_loudnessread-only

    Measure loudness as REAPER's loudness window does: integrated LUFS, short-term and momentary max, loudness range, sample peak, plus true peak. Target: the master (default), a track, or one item (its track's output over the item, other items muted). start_time/end_time limit it to a range. It runs a render dry run, so it writes no files, puts selections back and adds no undo step. Measuring the master marks the project as modified, even though nothing in it changes. Returns: integrated_lufs, short_term_max_lufs, momentary_max_lufs, loudness_range_lu, sample_peak_dbfs, true_peak_dbtp, …

  • measure_spectrumread-only

    Measure tonal balance and stereo image: octave-band levels (31.5 Hz to 16 kHz), spectral centroid, tilt in dB per octave, stereo correlation overall and below 150 Hz, side-to-mid level and left/right balance. Same targets and range as measure_loudness. Levels are dBFS with a full-scale sine at 0, as in REAPER. Needs the TwelveTake MCP Analyzer, which --install-bridge installs.

  • nudge_midi_notes

    Shift MIDI notes in time by a number of beats (+ = later, - = earlier). Start and end move together, so note lengths are preserved. A note pushed before the item start clamps to it and one pushed past the item end is left there; both count in `out_of_bounds`, not `clamped`. Args: amount_beats: Signed beat shift (0.25 = a 16th later, -1.0 = a beat earlier). 0 = no-op.

  • open_projectcan change or delete data

    Open a REAPER project file. Args: path: Full path to the .rpp file.

  • paste_items

    Paste items from clipboard at edit cursor.

  • pause

    Pause playback in REAPER.

  • play

    Start playback in REAPER.

  • quantize_midi_notes

    Quantize MIDI note onsets onto the grid (tighten sloppy timing, add swing). Onsets snap to the PROJECT bar/beat grid, not to an offset from the item's own start, and note lengths are preserved: start and end move together. Notes that land past the item end are kept, and one that would land before the item start is placed at it; both are counted in `out_of_bounds` (`clamped` stays 0 here). Args: grid: Grid spacing in beats: 0.25 = 1/16, 0.5 = 1/8, 1.0 = 1/4. Must be > 0. strength: 0.0-1.0. 1.0 snaps exactly onto the grid, 0.5 moves each note halfway there, 0.0 is a no-op. …

  • ramp_midi_note_velocities

    Apply a linear velocity ramp (crescendo / decrescendo) across MIDI notes. Velocities interpolate by onset: the earliest note in the filtered set gets start_velocity, the latest gets end_velocity, everything between is linear. Notes sharing an onset (a chord) get the same velocity. Results clamp to 1-127. Args: start_velocity: Velocity at the earliest onset (1-127; out of range clamps, not an error). end_velocity: Velocity at the latest onset (1-127).

  • record

    Start recording in REAPER.

  • redocan change or delete data

    Redo the last undone action in REAPER. Returns: Object with redo description.

  • remove_overlapping_midi_notescan change or delete data

    Clean up overlapping MIDI notes (same pitch stacked on itself). Two notes conflict only if they share a pitch AND a channel AND overlap in time, so a chord is never a conflict and notes that merely touch are left alone. "trim" shortens the earlier note to stop where the next begins, losing nothing; "delete" drops one note of each overlapping pair, keeping the louder (ties go to the longer note). Either mode can remove notes: notes stacked on the exact same onset collapse to the loudest, since there is nothing to trim between them, and a trim left shorter than min_length_beats is removed rath…

  • render_projectcan change or delete data

    Render the project's master mix to an audio file. Apart from the path, source and range, the project's own render settings apply: its format (a .wav extension selects WAV), and its normalization, limiter, fades, trim and pad, which the response lists in `processing` (empty when none applies). If the target file already exists, this returns an error unless overwrite=True (which deletes the existing file first). This is explicit because REAPER's own behavior on existing files (prompt vs auto-increment) is a user preference, and the overwrite prompt blocks unattended rendering. Args: output…

  • render_regioncan change or delete data

    Not implemented: this tool always returns an error. Use render_project with the region's start and end from get_regions.

  • run_actioncan change or delete data

    Run a REAPER action by command ID. Args: action_id: REAPER action/command ID number.

  • run_action_by_namecan change or delete data

    Run a REAPER action by its named command id. Named commands (e.g. ReaScripts "_RS12345" or SWS "_SWS_...") are resolved to a numeric command id via NamedCommandLookup before firing. A purely numeric string (e.g. "40297") is treated as a built-in command id and run directly; prefer run_action(action_id) for built-ins. Args: action_name: Named command id (e.g. "_RS12345") or a numeric command id string. Returns: If the named command cannot be resolved, returns {"ok": False, "error": ...} without firing any action.

  • save_fx_presetcan change or delete data

    Not supported: REAPER's API cannot save a named FX preset, so this tool always returns an error. Use get_track_fx_chunk to capture the current FX state.

  • save_projectcan change or delete data

    Save the current REAPER project.

  • scale_midi_note_velocities

    Scale MIDI note velocities: multiply, set to a fixed value, or compress toward a pivot. Results clamp to 1-127. Args: mode: "multiply" (velocity * ratio), "set" (velocity becomes `value`), or "compress" (pivot + (velocity - pivot) * ratio). ratio: Multiply factor (>= 0, no upper cap), or compress amount (0.0-1.0, where 0 collapses every note onto the pivot and 1.0 changes nothing). value: Target velocity for "set" mode (1-127). pivot: What compress pulls toward (1-127), or -1 for the rounded mean of the matched notes' velocities (reported as pivot_used)…

  • select_all_items

    Select all media items.

  • select_all_tracks

    Select all tracks.

  • select_comp_lane

    Make a fixed lane play exclusively on a track (REAPER 7 lane-based comping). The track must be in fixed-lane mode (right-click track -> Track lanes). Returns a clear error if it is not, or if the lane index is out of range. Args: lane_index: Fixed lane index to play exclusively (0-based).

  • select_midi_notes

    Select the MIDI notes matching the filter, as if clicked in REAPER's MIDI editor. Args: selected: False deselects the matching notes instead; with no filter, clears the selection. exclusive: When selecting, deselect every note that does not match. `notes_changed` counts notes whose selection flipped.

  • select_track

    Select a track. Args: exclusive: If True, deselect other tracks first.

  • set_active_take

    Set the active take of a media item (which take plays). Args:

  • set_cursor_position

    Set the edit cursor position. Args: position: Position in seconds from project start.

  • set_eq_band

    Set a ReaEQ band parameter. Pass real values by default: frequency in Hz (paramtype 0), gain in dB (paramtype 1), or Q (paramtype 2). Gain is converted to ReaEQ's normalized curve internally; freq and Q are sent raw. Args: fx_index: FX index (0-based) of ReaEQ. bandtype: -1=master gain, 0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass, 6=bandpass, 7=parallel bandpass. bandidx: Band index within that type (0=first). Ignored for master gain. paramtype: 0=frequency (Hz), 1=gain (dB), 2=Q. Ignored for master gain. value: The value, in real units unless …

  • set_eq_band_enabled

    Enable or disable a ReaEQ band. Args: fx_index: FX index (0-based) of ReaEQ. bandtype: Band type (0=hipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass). bandidx: Band index within that type (0=first). enabled: True to enable, False to disable.

  • set_fx_preset

    Set the preset of an FX. Args: preset_name: Preset name.

  • set_item_fade_in

    Set the fade-in length of a media item. Args: length: Fade-in length in seconds.

  • set_item_fade_out

    Set the fade-out length of a media item. Args: length: Fade-out length in seconds.

  • set_item_length

    Set the length of a media item. Args: length: New length in seconds.

  • set_item_mute

    Mute or unmute a media item. Args: mute: True to mute, False to unmute.

  • set_item_position

    Set the position of a media item. Args: position: New position in seconds.

  • set_item_volume

    Set the volume of a media item. Args: volume_db: Volume in dB.

  • set_midi_note

    Edit one existing MIDI note in place: pitch, start, length and/or channel. Only the fields you pass change, and at least one is required. (Velocity: set_midi_note_velocity.) note_index is REAPER's PPQ-sorted index from get_midi_notes / get_selected_midi_notes and is unstable - re-read after the edit, since the returned list reflects the new order. Args: pitch: New pitch (0-127). start_beat: New start in beats from item start; length is preserved. A start before the item start clamps there and is counted in out_of_bounds, not clamped. length_beats: New length in beats (> 0…

  • set_midi_note_velocity

    Set the velocity of a MIDI note. Args: velocity: New velocity (1-127).

  • set_send_dest_channels

    Set the destination channels for a send (used for sidechain routing). Args: track_index: Source track index (0-based). dest_chan: Destination channel pair (0=1-2 main, 2=3-4 sidechain, 4=5-6, etc.). For sidechain compression, use 2 to route to channels 3-4.

  • set_send_source_channels

    Set the source channels for a send. Args: track_index: Source track index (0-based). src_chan: Source channel (-1=none, 0=stereo 1-2, 1024+n=mono from channel n).

  • set_send_volume

    Set the volume of a track send. Args: track_index: Source track index (0-based). volume_db: Send volume in dB.

  • set_tempo

    Set the project tempo. Args: bpm: Tempo in beats per minute.

  • set_time_selection

    Set the time selection. Args: start: Start time in seconds. end: End time in seconds.

  • set_time_signature

    Set the project time signature. Args: numerator: Beats per measure (e.g., 4 for 4/4). denominator: Beat unit (e.g., 4 for quarter note).

  • set_track_as_folder

    Set a track as a folder parent or child. Args: folder_depth: 0=normal, 1=folder parent, -1=end of folder.

  • set_track_automation_mode

    Set the automation mode for a track. Args: mode: 0=trim/read, 1=read, 2=touch, 3=write, 4=latch.

  • set_track_color

    Set the color of a track. Args: r: Red component (0-255). g: Green component (0-255). b: Blue component (0-255).

  • set_track_input

    Set the record input for a track. Args: input_index: Input index (-1=no input, 0+=hardware inputs, 4096+=virtual MIDI).

  • set_track_master_send

    Enable or disable the master/parent send on a track. When enabled, the track's audio routes to its parent folder track (or the master if it has no parent). Disable it when a track should only output through its sends (e.g., routed exclusively to a bus). Args: enabled: True to enable, False to disable.

  • set_track_monitor

    Set the monitor mode for a track. Args: monitor: 0=off, 1=normal, 2=not when playing.

  • set_track_mute

    Set the mute state of a track. Args: mute: True to mute, False to unmute.

  • set_track_name

    Set the name of a track. Args: name: New name for the track.

  • set_track_pan

    Set the pan position of a track. Args: pan: Pan position from -1.0 (full left) to 1.0 (full right). 0 = center.

  • set_track_phase

    Set the phase inversion of a track. Args: invert: True to invert phase, False for normal.

  • set_track_solo

    Set the solo state of a track. Args: solo: True to solo, False to unsolo.

  • set_track_volume

    Set the volume of a track in decibels. Args: volume_db: Volume in dB (0 = unity gain, -inf to +12 typical range).

  • set_track_width

    Set the stereo width of a track. Args: width: Width value (0=mono, 1=stereo, 2=200% width).

  • setup_sidechain_compression

    Complete sidechain compression setup: creates send and configures compressor. This is the all-in-one function for setting up sidechain compression. It creates a send from the trigger track to the target track's sidechain input and configures ReaComp to listen to that sidechain. Args: trigger_track: Track that triggers compression (e.g., kick drum = track 0). target_track: Track to be compressed (e.g., bass = track 1). compressor_fx_index: Index of ReaComp in target track's FX chain. send_volume_db: Sidechain send volume in dB (default 0dB). Returns: Object with complete …

  • setup_sidechain_send

    Create a sidechain send from one track to another track's FX sidechain input. This creates a send routed to channels 3-4 of the destination track, which is the standard sidechain input for compressors like ReaComp. Args: src_track: Source/trigger track index (e.g., kick drum). dest_track: Destination track index (e.g., bass with compressor). volume_db: Send volume in dB (default 0dB = unity). Returns: Object with send_index and routing info.

  • snap_midi_notes_to_scale

    Snap off-key MIDI notes onto a scale (fix a wrong note, force a part into a key). Notes already in the scale are left alone; each off-scale note moves to the nearest in-scale pitch, and under `nearest` a tie resolves toward the middle of the selection. A note with no in-scale pitch left inside 0-127 stays put and is counted in `skipped`. Args: root: Root pitch class, 0-11 (0=C, 1=C#, 2=D ... 11=B). mode: Scale name: major, minor, harmonic_minor, melodic_minor, dorian, phrygian, lydian, mixolydian, locrian, major_pentatonic, minor_pentatonic, blues, whole_tone, chromat…

  • split_item

    Split a media item at a position. Args: position: Split position in seconds (absolute project time). Returns: Object with info about both resulting items.

  • stop

    Stop playback in REAPER.

  • stretch_midi_notes

    Stretch or compress MIDI timing (half-time, double-time, or any ratio). Each targeted note scales as a rigid unit about one fixed pivot: its distance from the pivot and its own length both multiply by `factor`, so the rhythm is preserved and only the speed changes. Notes that land past the item end are kept as-is; one pushed before the item start begins at the item start but keeps its scaled end, so it comes out shorter. Both are counted in `out_of_bounds` (`clamped` stays 0 here). Args: factor: Time scale ratio, must be > 0. 2.0 = twice as long (half-time), 0.5 = half as long (d…

  • strum_midi_notes

    Strum chords: stagger the onsets of simultaneous notes so each chord rolls out. Only onsets move; note lengths are preserved. Args: spread_beats: Total first-to-last onset span within each chord (>= 0; 0 = no-op). direction: "up" strikes the lowest note of a chord first, "down" the highest. chord_window_beats: Onset tolerance for grouping notes into one chord (0 = exact same onset).

  • take_fx_add_by_name

    Add an FX plugin to a take by name. Args: fx_name: Name of the FX plugin to add (e.g., "ReaEQ", "ReaComp"). Use the exact plugin name as it appears in REAPER's FX browser. Returns: Object with 'ret' field containing the new FX index (or -1 if it could not be added).

  • take_fx_deletecan change or delete data

    Remove an FX plugin from a take. Args:

  • take_fx_get_countread-only

    Get the number of FX plugins on a take. Returns: Object with 'ret' field containing the FX count.

  • take_fx_get_enabledread-only

    Get the enabled (not bypassed) state of an FX plugin on a take. Args: Returns: Object with 'ret' field (boolean).

  • take_fx_get_listread-only

    Get a list of all FX plugins on a take. Returns: Object with 'fx' array, each entry having index, name, and enabled state.

  • take_fx_get_nameread-only

    Get the name of an FX plugin on a take. Args:

  • take_fx_get_num_paramsread-only

    Get the number of parameters for an FX plugin on a take. Args:

  • take_fx_get_paramread-only

    Get a parameter value on a take's FX plugin. Args: Returns: Object with 'value', 'min', and 'max' for the parameter.

  • take_fx_get_param_nameread-only

    Get the name of a parameter on a take's FX plugin. Args:

  • take_fx_set_enabled

    Enable or bypass an FX plugin on a take. Args: enabled: True to enable, False to bypass.

  • take_fx_set_param

    Set a parameter value on a take's FX plugin. Args: value: New value (typically normalized 0-1; check min/max via take_fx_get_param).

  • toggle_repeat

    Toggle repeat/loop mode. Returns: Object with new repeat state.

  • track_fx_add_by_name

    Add an FX plugin to a track by name. Args: fx_name: Name of the FX plugin to add (e.g., "ReaEQ", "ReaComp", "ReaLimit"). Use the exact plugin name as it appears in REAPER's FX browser. position: Optional insertion position (0-based) in the FX chain. Default -1 adds at the end; 0 inserts at the beginning. Returns: Info about the added FX including its index.

  • track_fx_deletecan change or delete data

    Remove an FX plugin from a track.

  • track_fx_get_countread-only

    Get the number of FX plugins on a track. Returns: Object with 'ret' field containing count.

  • track_fx_get_enabledread-only

    Get the enabled state of an FX plugin. Returns: Object with 'ret' field (boolean).

  • track_fx_get_listread-only

    Get list of all FX plugins on a track. Returns: Object with 'fx' array, one entry per FX with index, name, enabled and offline, plus fx_count. 'enabled' is False when the FX is bypassed. Normal FX chain only, not input/record FX or master monitoring FX.

  • track_fx_get_nameread-only

    Get the name of an FX plugin.

  • track_fx_get_num_paramsread-only

    Get the number of parameters for an FX plugin.

  • track_fx_get_paramread-only

    Get a specific parameter value of an FX plugin. Returns: Object with value, min, max for the parameter.

  • track_fx_get_param_nameread-only

    Get the name of an FX parameter.

  • track_fx_move

    Move an FX plugin to a new position within the same track's FX chain. Args: fx_index: Current FX index (0-based) in the FX chain. new_position: Target position (0-based). 0 = beginning of the chain.

  • track_fx_set_enabled

    Enable or disable an FX plugin. Args: enabled: True to enable, False to bypass.

  • track_fx_set_param

    Set a parameter value on an FX plugin. Args: value: New value for the parameter (typically normalized 0-1, check min/max).

  • transpose_midi_notes

    Transpose MIDI notes by a number of semitones (12 = an octave). A note that would land outside pitch 0-127 keeps its original pitch and is counted in `skipped` instead. Args: semitones: Signed shift; positive is up, negative is down. 0 = no-op. Returns: {ok, notes_changed, clamped, skipped, out_of_bounds, notes:[...]}, where `notes` is the full note list after the transform, re-indexed.

  • undocan change or delete data

    Undo the last action in REAPER. Returns: Object with undo description.

  • unselect_all_items

    Unselect all media items.

  • unselect_all_tracks

    Unselect all tracks.

  • zoom_to_project

    Zoom the arrange view to show the entire project.

  • zoom_to_selection

    Zoom the arrange view to the time selection.

Compare and alternatives

Featured in

Signals

Stars
94
Forks
18
Open issues
1
Contributors
4
Weekly downloads
2,711
Last commit
Oct 21, 2026 (6 days ago)
Last release
Oct 21, 2026 (6 days ago)
Last package publish
Oct 21, 2026 (6 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
com.twelvetake/reaper-mcp
Version
1.9.3
Auth
No auth
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from twelvetake.com

Cite this page

REAPER MCP. Agent Mart. https://agentmart.dev/connectors/twelvetake-com-reaper-mcp (last updated 2026-10-24)