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
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.
About
Use cases: audio-video
Reviews
Write a reviewNo 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_eqget_active_takeget_all_tracksget_cursor_positionget_envelope_point_countget_envelope_pointsget_eq_band_enabledget_eq_bandsget_fx_envelopeget_fx_envelope_pointsget_fx_presetget_fx_presets
Show 46 more tools
get_item_infoget_markersget_master_trackget_midi_itemget_midi_notesget_play_positionget_play_stateget_project_lengthget_project_nameget_project_pathget_project_summaryget_regionsget_repeat_stateget_selected_itemsget_selected_midi_notesget_selected_tracksget_takesget_tempoget_time_selectionget_time_signatureget_trackget_track_countget_track_envelopeget_track_fx_chunkget_track_itemsget_track_master_sendget_track_num_sendsget_track_peakget_track_peak_holdget_undo_statemeasure_loudnessmeasure_spectrumtake_fx_get_counttake_fx_get_enabledtake_fx_get_listtake_fx_get_nametake_fx_get_num_paramstake_fx_get_paramtake_fx_get_param_nametrack_fx_get_counttrack_fx_get_enabledtrack_fx_get_listtrack_fx_get_nametrack_fx_get_num_paramstrack_fx_get_paramtrack_fx_get_param_name
Write 73 · Create, change, send or run things.
add_compressoradd_envelope_pointadd_eqadd_fx_envelope_pointadd_limiteradd_markeradd_mastering_chainadd_midi_noteadd_midi_notes_batchadd_parallel_compressionadd_regioncopy_selected_items
Show 61 more tools
create_buscreate_click_trackcreate_midi_itemcreate_sendgo_to_markergo_to_regioninsert_audio_fileinsert_tracklegato_midi_notesplayramp_midi_note_velocitiesrecordscale_midi_note_velocitiesselect_all_itemsselect_all_tracksselect_comp_laneselect_midi_notesselect_trackset_active_takeset_cursor_positionset_eq_bandset_eq_band_enabledset_fx_presetset_item_fade_inset_item_fade_outset_item_lengthset_item_muteset_item_positionset_item_volumeset_midi_noteset_midi_note_velocityset_send_dest_channelsset_send_source_channelsset_send_volumeset_temposet_time_selectionset_time_signatureset_track_as_folderset_track_automation_modeset_track_colorset_track_inputset_track_master_sendset_track_monitorset_track_muteset_track_nameset_track_panset_track_phaseset_track_soloset_track_volumeset_track_widthsetup_sidechain_sendsnap_midi_notes_to_scalestoptake_fx_add_by_nametake_fx_set_enabledtake_fx_set_paramtoggle_repeattrack_fx_add_by_nametrack_fx_movetrack_fx_set_enabledtrack_fx_set_param
Delete 31 · Delete, drop, revoke or wipe things.
clear_all_peak_indicatorsclear_envelopeclear_fx_envelopeclear_midi_itemclear_time_selectioncreate_projectcrop_to_active_takecut_selected_itemsdelete_envelope_pointdelete_fx_envelope_pointdelete_itemdelete_marker
Show 19 more tools
delete_midi_notedelete_regiondelete_selected_itemsdelete_senddelete_takedelete_trackexplode_takesopen_projectredoremove_overlapping_midi_notesrender_projectrender_regionrun_actionrun_action_by_namesave_fx_presetsave_projecttake_fx_deletetrack_fx_deleteundo
Not yet classified 18 · We could not tell from the name and description.
arm_trackarm_track_envelopeconfigure_reacomp_sidechainduplicate_itemhumanize_midi_notesnudge_midi_notespaste_itemspausequantize_midi_notessetup_sidechain_compressionsplit_itemstretch_midi_notes
Show 6 more tools
strum_midi_notestranspose_midi_notesunselect_all_itemsunselect_all_trackszoom_to_projectzoom_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_compressorAdd ReaComp to a track. Returns: Object with fx_index.
add_envelope_pointAdd 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_eqAdd ReaEQ to a track. Returns: Object with fx_index.
add_fx_envelope_pointAdd 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_limiterAdd ReaLimit (brickwall limiter) to a track. Returns: Object with fx_index.
add_markerAdd 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_chainAdd 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_noteAdd 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_batchAdd 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_compressionSet 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_regionAdd 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_trackArm or disarm a track for recording. Args: arm: True to arm, False to disarm.
arm_track_envelopeArm or disarm an envelope for recording. Args: envelope_name: Envelope name. arm: True to arm, False to disarm.
clear_all_peak_indicatorsClear 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 dataDelete all points from an envelope. Args: envelope_name: Envelope name.
Show 165 more tools
clear_fx_envelopecan change or delete dataClear all automation points from an FX parameter envelope. Returns: Object with deleted_count.
clear_midi_itemcan change or delete dataDelete all MIDI notes from an item. Returns: Object with count of notes deleted.
clear_time_selectionClear the time selection.
configure_reacomp_sidechainConfigure 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_itemsCopy selected items to clipboard.
create_busCreate 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_trackAdd 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_itemCreate 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 dataCreate 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_sendCreate 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 dataCrop a media item to its active take, discarding all other takes.
cut_selected_itemscan change or delete dataCut selected items to clipboard.
delete_envelope_pointcan change or delete dataDelete an envelope point. Args: envelope_name: Envelope name.
delete_fx_envelope_pointcan change or delete dataDelete an automation point from an FX parameter envelope. Args: point_index: Point index (0-based) to delete.
delete_itemcan change or delete dataDelete a media item.
delete_markercan change or delete dataDelete a marker by index.
delete_midi_notecan change or delete dataDelete a MIDI note from an item.
delete_regioncan change or delete dataDelete a region by index.
delete_selected_itemscan change or delete dataDelete all selected items.
delete_sendcan change or delete dataDelete 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 dataDelete 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 dataDelete a track. Args: track_index: Track index to delete (0-based). Cannot delete master track (-1).
duplicate_itemDuplicate a media item. Returns: Object with new item info.
explode_takescan change or delete dataExplode all takes of a media item in place (each take becomes its own overlapping item).
find_eqFind 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-onlyGet 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-onlyGet information about all tracks in the project.
get_cursor_positionread-onlyGet the edit cursor position. Returns: Object with cursor position in seconds.
get_envelope_point_countread-onlyGet the number of points in an envelope. Args: envelope_name: Envelope name. Returns: Object with point count.
get_envelope_pointsread-onlyGet 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-onlyCheck 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-onlyGet 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_envelopeGet 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-onlyGet all automation points from an FX parameter envelope. Returns: Object with list of points (time, value, shown, shape, tension, selected).
get_fx_presetread-onlyGet the current preset name of an FX. Returns: Object with current preset name.
get_fx_presetsread-onlyGet list of presets available for an FX. Returns: Object with list of preset names.
get_item_inforead-onlyGet information about a media item. Returns: Object with item properties (position, length, take info, etc.).
get_markersread-onlyGet all markers in the project. Returns: Object with list of markers (position, name, index).
get_master_trackread-onlyGet information about the master track.
get_midi_itemread-onlyGet information about a MIDI item. Returns: Object with item info including position, length, note count.
get_midi_notesread-onlyGet all MIDI notes from an item. Returns: Object with list of notes.
get_play_positionread-onlyGet the current playback position. Returns: Object with play position in seconds.
get_play_stateread-onlyGet the current playback state. Returns: Object with play state info.
get_project_lengthread-onlyGet the length of the project (end of last item). Returns: Object with project length in seconds.
get_project_nameread-onlyGet the project name.
get_project_pathread-onlyGet the project path.
get_project_summaryread-onlyGet 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-onlyGet all regions in the project. Returns: Object with list of regions (start, end, name, index).
get_repeat_stateread-onlyGet the current repeat state. Returns: Object with repeat state (true/false).
get_selected_itemsread-onlyGet all selected media items. Returns: Object with list of selected items.
get_selected_midi_notesread-onlyRead 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-onlyGet indices of all selected tracks. Returns: Object with list of selected track indices.
get_takesread-onlyList all takes of a media item. Returns: Object with 'takes' array (each entry: index, name, is_active) and 'ret' = take count.
get_temporead-onlyGet the tempo at project start as `ret`, and every tempo marker as `tempo_markers`.
get_time_selectionread-onlyGet the current time selection. Returns: Object with start and end times.
get_time_signatureread-onlyGet the project time signature.
get_trackread-onlyGet 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-onlyGet the total number of tracks in the current REAPER project (excluding master track).
get_track_enveloperead-onlyGet a track envelope by name. Args: envelope_name: Envelope name (e.g., "Volume", "Pan", "Mute"). Returns: Object with envelope info.
get_track_fx_chunkread-onlyGet 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-onlyGet all media items on a track. Returns: Object with list of items.
get_track_master_sendread-onlyGet the master/parent send state of a track. Returns: Object with 'ret' field (1 = enabled, 0 = disabled).
get_track_num_sendsread-onlyGet the number of sends from a track.
get_track_peakread-onlyGet 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-onlyGet 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-onlyGet the current undo/redo state. Returns: Object with undo and redo descriptions.
go_to_markerMove the edit cursor to a marker.
go_to_regionMove the edit cursor to a region start.
humanize_midi_notesHumanize 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_fileInsert 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_trackInsert 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_notesClose 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-onlyMeasure 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-onlyMeasure 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_notesShift 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 dataOpen a REAPER project file. Args: path: Full path to the .rpp file.
paste_itemsPaste items from clipboard at edit cursor.
pausePause playback in REAPER.
playStart playback in REAPER.
quantize_midi_notesQuantize 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_velocitiesApply 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).
recordStart recording in REAPER.
redocan change or delete dataRedo the last undone action in REAPER. Returns: Object with redo description.
remove_overlapping_midi_notescan change or delete dataClean 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 dataRender 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 dataNot 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 dataRun a REAPER action by command ID. Args: action_id: REAPER action/command ID number.
run_action_by_namecan change or delete dataRun 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 dataNot 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 dataSave the current REAPER project.
scale_midi_note_velocitiesScale 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_itemsSelect all media items.
select_all_tracksSelect all tracks.
select_comp_laneMake 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_notesSelect 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_trackSelect a track. Args: exclusive: If True, deselect other tracks first.
set_active_takeSet the active take of a media item (which take plays). Args:
set_cursor_positionSet the edit cursor position. Args: position: Position in seconds from project start.
set_eq_bandSet 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_enabledEnable 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_presetSet the preset of an FX. Args: preset_name: Preset name.
set_item_fade_inSet the fade-in length of a media item. Args: length: Fade-in length in seconds.
set_item_fade_outSet the fade-out length of a media item. Args: length: Fade-out length in seconds.
set_item_lengthSet the length of a media item. Args: length: New length in seconds.
set_item_muteMute or unmute a media item. Args: mute: True to mute, False to unmute.
set_item_positionSet the position of a media item. Args: position: New position in seconds.
set_item_volumeSet the volume of a media item. Args: volume_db: Volume in dB.
set_midi_noteEdit 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_velocitySet the velocity of a MIDI note. Args: velocity: New velocity (1-127).
set_send_dest_channelsSet 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_channelsSet 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_volumeSet the volume of a track send. Args: track_index: Source track index (0-based). volume_db: Send volume in dB.
set_tempoSet the project tempo. Args: bpm: Tempo in beats per minute.
set_time_selectionSet the time selection. Args: start: Start time in seconds. end: End time in seconds.
set_time_signatureSet 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_folderSet a track as a folder parent or child. Args: folder_depth: 0=normal, 1=folder parent, -1=end of folder.
set_track_automation_modeSet the automation mode for a track. Args: mode: 0=trim/read, 1=read, 2=touch, 3=write, 4=latch.
set_track_colorSet the color of a track. Args: r: Red component (0-255). g: Green component (0-255). b: Blue component (0-255).
set_track_inputSet the record input for a track. Args: input_index: Input index (-1=no input, 0+=hardware inputs, 4096+=virtual MIDI).
set_track_master_sendEnable 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_monitorSet the monitor mode for a track. Args: monitor: 0=off, 1=normal, 2=not when playing.
set_track_muteSet the mute state of a track. Args: mute: True to mute, False to unmute.
set_track_nameSet the name of a track. Args: name: New name for the track.
set_track_panSet the pan position of a track. Args: pan: Pan position from -1.0 (full left) to 1.0 (full right). 0 = center.
set_track_phaseSet the phase inversion of a track. Args: invert: True to invert phase, False for normal.
set_track_soloSet the solo state of a track. Args: solo: True to solo, False to unsolo.
set_track_volumeSet the volume of a track in decibels. Args: volume_db: Volume in dB (0 = unity gain, -inf to +12 typical range).
set_track_widthSet the stereo width of a track. Args: width: Width value (0=mono, 1=stereo, 2=200% width).
setup_sidechain_compressionComplete 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_sendCreate 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_scaleSnap 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_itemSplit a media item at a position. Args: position: Split position in seconds (absolute project time). Returns: Object with info about both resulting items.
stopStop playback in REAPER.
stretch_midi_notesStretch 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_notesStrum 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_nameAdd 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 dataRemove an FX plugin from a take. Args:
take_fx_get_countread-onlyGet the number of FX plugins on a take. Returns: Object with 'ret' field containing the FX count.
take_fx_get_enabledread-onlyGet the enabled (not bypassed) state of an FX plugin on a take. Args: Returns: Object with 'ret' field (boolean).
take_fx_get_listread-onlyGet 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-onlyGet the name of an FX plugin on a take. Args:
take_fx_get_num_paramsread-onlyGet the number of parameters for an FX plugin on a take. Args:
take_fx_get_paramread-onlyGet 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-onlyGet the name of a parameter on a take's FX plugin. Args:
take_fx_set_enabledEnable or bypass an FX plugin on a take. Args: enabled: True to enable, False to bypass.
take_fx_set_paramSet 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_repeatToggle repeat/loop mode. Returns: Object with new repeat state.
track_fx_add_by_nameAdd 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 dataRemove an FX plugin from a track.
track_fx_get_countread-onlyGet the number of FX plugins on a track. Returns: Object with 'ret' field containing count.
track_fx_get_enabledread-onlyGet the enabled state of an FX plugin. Returns: Object with 'ret' field (boolean).
track_fx_get_listread-onlyGet 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-onlyGet the name of an FX plugin.
track_fx_get_num_paramsread-onlyGet the number of parameters for an FX plugin.
track_fx_get_paramread-onlyGet a specific parameter value of an FX plugin. Returns: Object with value, min, max for the parameter.
track_fx_get_param_nameread-onlyGet the name of an FX parameter.
track_fx_moveMove 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_enabledEnable or disable an FX plugin. Args: enabled: True to enable, False to bypass.
track_fx_set_paramSet a parameter value on an FX plugin. Args: value: New value for the parameter (typically normalized 0-1, check min/max).
transpose_midi_notesTranspose 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 dataUndo the last action in REAPER. Returns: Object with undo description.
unselect_all_itemsUnselect all media items.
unselect_all_tracksUnselect all tracks.
zoom_to_projectZoom the arrange view to show the entire project.
zoom_to_selectionZoom 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
- Packages
- pypi twelvetake-reaper-mcp
- License
- MIT
- Repository
- github.com/TwelveTake-Studios/reaper-mcp
- 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)