Skip to content
Agentmart
Submit a tool

Reaper Daemon

REAPER MCP server: let Claude read your session, set FX, write automation and measure mix moves.

Connector by wretcher207 · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 19
Write a review

Chalk Labs

Need help deploying Reaper Daemon?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Desktop. Read the repository before you give any tool access to your data.

Download the bundle

MCP bundle (.mcpb): open it with Claude Desktop.

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

REAPER MCP server: let Claude read your session, set FX, write automation and measure mix moves.

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, install config and code. Checked Oct 25, 2026.

Tools
13 read · 12 write · 3 delete · 14 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Downloaded binary

Tools by what they do 42

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

Read 13 · Look things up without changing anything.

  • capture_track_audio
  • get_context
  • get_drum_transcription
  • get_fx_param_automation
  • get_fx_parameters
  • get_mix_snapshot
  • get_status
  • get_track_routing
  • instrument_inventory
  • list_actions
  • mix_recipe
  • scan_fx
Show 1 more tools
  • song_plan

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

  • apply_automation_transaction
  • batch
  • humanize_take
  • insert_drum_transcription
  • insert_groove
  • insert_midi_file
  • insert_performance_audition
  • insert_riff
  • run_action
  • set_fx_param
  • transcribe_drums
  • write_automation

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

  • delete_items_in_range
  • markers
  • run_script

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

  • analyze_track
  • compare_tracks
  • complete_postmortem_onboarding
  • cut_band
  • drum_workshop
  • fx
  • instruments
  • profile_track
  • raw_command
  • riff_grid
  • track
  • transport
Show 2 more tools
  • tune_param
  • verify_change

Network hosts it talks to 4

  • deadpixeldesign.com · found in code
  • github.com · found in install command, code
  • glama.ai · found in code
  • raw.githubusercontent.com · found in code

Files it touches

  • Your home directory (~)
  • ~/.config
  • ~/.local/share
  • ~/AppData/Roaming
  • ~/opt/REAPER/reaper
  • ~/reaper-daemon
  • C:\\temp\\probe

Tools (42)

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

  • analyze_track

    Post Mortem (the separate post-mortem audio-analysis CLI that renders a track and measures it): capture one verified-isolated track and return MEASURED mix data (FX chain with values, routing, LUFS, true peak, crest, 1/3-octave spectrum, stereo image, silence fraction) for YOU to diagnose. Requires Post Mortem installed and capture enabled (see capture_track_audio gating). Full-mix fallbacks are refused. Park the edit cursor where the track is playing first.

  • apply_automation_transaction

    Atomically write several FX-parameter envelopes (e.g. a stereo pair) in one undo block. Every envelope is snapshotted before mutation; any failure restores all of them and rereads the restoration before reporting.

  • batch

    Run several bridge commands as ONE undo block and one round-trip. commands: [{type, payload}]. Use for multi-step edits (e.g. several set_fx_param calls) so a failure stops cleanly and one Ctrl+Z reverts everything. Nested batches are refused. Returns {results: [per-command result], all_ok, failed_index, completed, total, stopped, rolled_back}. With stop_on_error (default) a failure stops the batch and the call errors with the failing command's code and index, unless return_partial_results is true, which returns the object above with stopped=true instead. Commands already run are NOT rolled ba…

  • capture_track_audio

    Render a track capture to WAV and return its evidence scope. Only isolated_track with isolation_verified=true is per-track audio; item-based tracks can report a full_mix fallback. Gated: needs allow_audio_writes=true (or the legacy allow_risk_level_3 fallback) in bridge/bridge_config.json (python3 setup/install.py --allow-audio-writes writes it; capture does NOT need save_project or preference rights) AND the change applied by the reload_bridge command, or a REAPER relaunch — the flag is read once per bridge load. Synchronous — blocks the bridge for the render duration.

  • compare_tracks

    Post Mortem cross-track masking: capture 2+ verified-isolated tracks and return their spectra plus a contested-band masking table for YOU to diagnose. Full-mix fallbacks are refused. Same requirements as analyze_track. Use analyze_track for one track's own mix problems; use this when two parts fight for the same frequencies.

  • complete_postmortem_onboarding

    After analyze_track, send the exact diagnosis you wrote to the Post Mortem panel. Requires a fresh matching 10-second single-track handoff; comparisons cannot complete first-run onboarding.

  • cut_band

    Lay down or re-cut a whole four-track jam in ONE call: two double-tracked guitars, a bass locked to them, and drums. The two guitars get different seeds automatically, so the width is two performances rather than a stereo copy. By default it REPLACES what is on those four tracks from `position` — pass replace=false to append instead. Every leg is attempted even if an earlier one fails, and the result reports each leg separately, so a partial cut says which tracks landed. MUTATES the project (undo-block wrapped). Refuses in ~0 s when the bridge heartbeat is dead.

  • delete_items_in_range

    Delete media items in a time range on one track (or all_tracks). Destructive — confirm intent; undo-block wrapped; supports dry_run.

  • drum_workshop

    Prepare separate composition requests, compare authored drum DSL candidates, export MIDI, or record explicit user audition feedback. Local files only; never changes REAPER. Fresh and wildcard requests omit reference patterns. The calling agent writes candidate.dsl and intent.json before evaluate. Comparisons measure structural similarity, not musical quality. No model is invoked and no winner is selected.

  • fx

    FX chain operations: add (fuzzy plugin-name resolution against REAPER's installed-plugin cache), remove, bypass, move. Undo-block wrapped; supports dry_run (dry_run add needs the exact fx_name, no fuzzy resolution). TO ADD A PLUGIN, JUST RUN add IN ONE CALL. The resolver against the installed-plugin cache IS the check — a plugin being absent from the project is normal and expected (adding it is the whole point). Do NOT precheck with scan_fx, do NOT hedge about whether it's installed, do NOT narrate a plan. Target the master with track:"master". The user may be recording live; extra steps and p…

  • get_context

    Read the open REAPER project: name, tempo, transport, cursor, time selection, every track (with FX names), markers, regions. Read-only. Run before ambiguous edits.

  • get_drum_transcription

    Read a drum transcription job's progress, failure, output files and insertion receipt. A completed analysis has not inserted anything into REAPER.

  • get_fx_param_automation

    Read one existing FX-parameter envelope without creating or arming it. Returns envelope state, inclusive-range points, optional neighbors, automation items, duplicate times, and a canonical content hash.

  • get_fx_parameters

    Full parameter list for ONE FX (auto-paginated): index, name, normalized value, formatted display value. Scan before setting parameters; prefer param_index from this scan over name matching.

  • get_mix_snapshot

    Read a bounded page of tracks, master, GUIDs, routing, FX, optional parameter values and instantaneous peak meters in one hop. Use measure for integrated audio evidence.

Show 27 more tools
  • get_status

    Check the bridge is alive inside REAPER (heartbeat, open project, whether risk-level-3 commands like audio capture are enabled). Call this first.

  • get_track_routing

    Read a track's routing: sends, receives, parent bus, volume, pan, phase, automation mode. Read-only.

  • humanize_take

    Put a dynamic contour and micro-timing into a drum take that is ALREADY on a track — the take is read, planned, and written back in place through index-addressed note edits, so stacked hits (flams, double triggers) are humanized too. The contour is always applied; `amount` only scales the random spread and timing looseness on top of it. Fills build as a crescendo peaking at the resolve, and the golden rule is enforced: no drum hits the same velocity twice in a row. Use follow_lead when the user has already humanized the opening bars BY HAND and wants that hand carried across the rest — it lear…

  • insert_drum_transcription

    Map a completed transcription to a drum kit and insert verified notes into REAPER. Requires the original source item and an empty destination range. Refuses source changes, duplicate jobs and active transport. Auto-discovers note names or accepts a catalog map_name. dry_run validates without writing. Keeps original audio, track mute state and project tempo unchanged. One undo reverts insertion.

  • insert_groove

    Render a drum DSL to MIDI and insert it on a track in ONE call — the engine (skills/drum-apparatus/) humanizes velocity, fatigue and timing at placement. Give the DSL EITHER inline as dsl_text OR as a file with dsl_path, never both. MUTATES the project (undo-block wrapped, one Ctrl/Cmd+Z reverts); supports dry_run. Refuses in ~0 s when the bridge heartbeat is dead, before generating anything. The rendered .mid is KEPT under rendered-midi/ — REAPER imports MIDI by reference on this build, so a deleted render leaves an empty take. Kit map: the DSL's own @map wins, then this map argument, then dr…

  • insert_midi_file

    Insert a .mid file from disk onto a track at a position. Write the MIDI yourself, then insert. Never overwrites existing items unless replace_existing_in_range is true. Use this when a .mid file already exists; to build MIDI from a list of notes use insert_midi_events, for humanized drums insert_groove, for guitar or bass insert_riff.

  • insert_performance_audition

    Insert a repeatable 15-second melodic test of expression, modulation, sustain and octave range. Use a separate audition project. Render with capture_track_audio and audition; MIDI success does not prove controller response.

  • insert_riff

    Render ONE humanized guitar or bass part and insert it on a track (skills/guitar-apparatus/). Write the riff as bars_text — one 16-step bar per line, e.g. 'x.x.x.x.x.x.x.x.' — or point at a file with bars_file, never both; omit both to use the built-in 'demo' riff. Step alphabet: '.' rest, 'x' muted chug, 'X' accented root, 'o' let-ring root, 'g' ghost, '_' tie the previous note through this step, '~' slide into the next; UPPERCASE note names (E F G A B C D) are power chords in the key of E and lowercase are single notes, so case matters. Read skills/guitar-apparatus/SKILL.md for the full tabl…

  • instrument_inventory

    Discover plugin cache entries and local preset files. Results do not prove plugins load or samples are available.

  • instruments

    Named instrument library, so a sound is picked by name instead of by plugin index. list/show: read-only; each entry has role, library, note maps (guitar/bass/drums map names the generators use), playable range, tags, and the saved chain name or none. save: the user has loaded a sound by hand on 'track' (any Kontakt library or Serum preset); this saves that track's FX chain, plugin state included, as FXChains/instrument-<name> and registers it. load: splice a saved instrument onto an EMPTY track (refused if the track has FX unless allow_existing_fx) and verify the FX landed; use the entry's map…

  • list_actions

    Search REAPER's action list: every word in query must appear in the action name or its _SWS/_RS id. Returns command_id, name, named_id and toggle_state per match, paged by limit/offset. Sections: main (default), main_alt, midi_editor, midi_event_list, midi_inline, media_explorer.

  • markers

    Add or delete markers and regions (add_marker, add_region, delete_marker).

  • mix_recipe

    Capture a local mix recipe, compare it with the current session, or rebuild it in a separate project tab. Original tab is restored. Media is excluded.

  • profile_track

    Daemon Beater: profile a guitar stem bar by bar to plan drums — onset density, IOI regularity, decay ratio (palm-mute vs ringing), silence, low/bright balance, RMS/crest, a 16th accent grid, plus suggested section boundaries and repeated-section groups (A/B/A). READS THE SAVED .rpp FILE ON DISK, NOT REAPER's live project: unsaved edits are invisible, so on a dirty project this analyzes stale material. The result repeats that caveat — relay it, never present these numbers as the current session. Numbers, not verdicts: YOU propose the section labels and the user corrects them. Point it at the DI…

  • raw_command

    Escape hatch: send any bridge command by type + payload (full reference: bridge/command_schema.md). Use when no dedicated tool covers it.

  • riff_grid

    Step 1 of the drum workflow: read a guitar stem's transients into a proposed KICK GRID, printed at 100/50/30% attack strength. READS THE SAVED .rpp FILE ON DISK, NOT REAPER's live project — same stale-material caveat as profile_track, and the result carries it. This is a PROPOSAL the user corrects, not an auto-beat: transients say WHEN a note is picked, never whether it rings open or is palm-muted, so the percentile is an attack-strength heuristic. The 30% row is the sparse slam/breakdown feel (the default); the 100% row turns every pick attack into a kick (gallops/triplets). The grid is ancho…

  • run_action

    Run one REAPER action by command_id (a number from list_actions) or named_id (an _SWS_... / _RS... string), in the main section or a MIDI editor section. Runs in an undo block. Save and render actions obey the same gates as save_project and render; Quit is refused. An action that opens a dialog will block the bridge until it is closed.

  • run_script

    Run Lua inside REAPER with the full ReaScript API: pass code (source text) or path (a .lua file; relative paths resolve under the daemon folder, then REAPER's Scripts folder). The script's return value and anything it printed with ShowConsoleMsg come back in the reply; reaper.defer is not available (the script must finish in one pass) and it is stopped after timeout_seconds (default 30). Project changes land in one undo block. Off until allow_script_execution is true in bridge_config.json (python3 setup/install.py --allow-script-execution).

  • scan_fx

    Enumerate FX and their parameters — one track or the whole project (omit the track selector). Read-only. Lists only FX ALREADY LOADED in the project, NOT your installed-plugin library. Never use it to check whether a plugin exists before adding one — that is the fx add resolver's job.

  • set_fx_param

    Set one FX parameter. Give normalized_value (0-1), formatted_value (e.g. '-16.00 dB', '80 Hz' — the bridge binary-searches the normalized value whose display matches), or relative ('+0.1'). Scan with get_fx_parameters first and prefer param_index. Undo-block wrapped; supports dry_run.

  • song_plan

    Song planner. A sheet JSON (see docs/song-planner.md and skills/song-planner) holds title, tempo, key, parts (instrument-library names) and sections with bars, energy, drum lanes, 16-cell riff bars and layer notes. check: every problem at once. show: the readable sheet to put in front of the person. approve: ONLY after the person explicitly said yes to the whole sheet; any later edit cancels it. draft: refuses an unapproved sheet, then opens a NEW project tab and writes tempo, tracks, saved sounds, a region per section, drums, both guitars, bass and layers, each step reported separately. 4/4 a…

  • track

    Track operations: add, delete, rename, select, set_volume (dB), set_pan (-1..1), mute, solo, arm, set_color. Every mutation runs in a REAPER undo block. Supports dry_run. delete is destructive — confirm intent first.

  • transcribe_drums

    Start local audio-to-drum-MIDI analysis in a background worker. Uses one selected audio item or a named source track/item. Returns a job_id; poll get_drum_transcription, then use insert_drum_transcription. Needs the optional transcription environment and ffmpeg. May download model weights on first use; audio stays local. Does not change the project. Tom and cymbal articulations are estimates.

  • transport

    Transport and project timing: play, stop, pause, record, set_cursor, set_time_selection, set_tempo (the project's base tempo), plus the tempo map: get_tempo_markers, set_tempo_marker (a tempo and/or time-signature change at a position; a time-signature change needs a bar position; index edits an existing marker) and delete_tempo_marker. Mutations run in an undo block (Ctrl/Cmd+Z reverts).

  • tune_param

    Outcome-driven parameter search: iteratively set ONE FX parameter and re-measure until a target audio outcome is hit (e.g. bass LUFS-I down 3 dB), then report the measured result. Target: {"metric": "lufs_i"|"band_db", "delta": -3.0, "tolerance": 0.5, "band_hz": [lo,hi] for band_db (needs Post Mortem)}. delta is relative to the baseline measurement. ASSUMES the metric moves monotonically with the parameter (gain-like params); stops with NON_MONOTONE and restores the initial value when that is violated. EXPENSIVE: baseline + up to 5 iterations, each a render that blocks REAPER's UI — warn the u…

  • verify_change

    Run ONE mutating bridge command with MEASURED proof: capture the track, apply the command, capture the same frozen window again (track pinned by GUID), and report audio deltas (LUFS-I always; spectrum/peak/stereo with Post Mortem). This REALLY mutates the project (undo-block wrapped; one Ctrl/Cmd+Z reverts) — confirm intent first for destructive command types (delete_track, delete_items_in_range, remove_fx). Costs TWO renders; each blocks REAPER's UI for the capture duration. Statuses: VERIFIED (deltas are real measurements); REFUSED (refused before the mutation was sent, no mutation ran); UNV…

  • write_automation

    Write one FX-parameter envelope transactionally: snapshot, inclusive-range replacement, reread confirmation, and automatic rollback on any failure. A declared range always means replacement.

Signals

Stars
19
Forks
2
Open issues
0
Contributors
1
Last commit
Oct 21, 2026 (9 days ago)
Last release
Oct 20, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.wretcher207/reaper-daemon
Version
3.23.1
Auth
No auth
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Reaper Daemon running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Reaper Daemon?

CallGet help
Cite this page

Reaper Daemon MCP server. Agent Mart. https://agentmart.dev/connectors/wretcher207-reaper-daemon (last updated 2026-10-24)