Skip to main content
Glama

add_fx

Add VST, VSTi, and AU plugins to REAPER tracks. Insert instruments and effects like ReaEQ or ReaComp by specifying track index and exact plugin name for AI-driven production.

Instructions

Add an FX plugin to a track. Works for both instruments (VSTi) and effects (VST/AU). Use the exact plugin name as shown in REAPER's FX browser. Built-in Cockos plugins: ReaEQ, ReaComp, ReaDelay, ReaVerb, ReaLimit, ReaSynth, ReaSamplOmatic5000, ReaTune, ReaGate, ReaFIR, ReaXcomp.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
track_indexYes
fx_nameYes

Implementation Reference

  • The add_fx tool handler implementation. Adds an FX plugin to a track by index. Takes track_index (int) and fx_name (str) as parameters, returns a dict with success status, fx_index, name, n_params, and track_index. Uses reapy to interact with REAPER's API.
    def add_fx(track_index: int, fx_name: str) -> dict:
        """
        Add an FX plugin to a track. Works for both instruments (VSTi) and effects (VST/AU).
        Use the exact plugin name as shown in REAPER's FX browser.
        Built-in Cockos plugins: ReaEQ, ReaComp, ReaDelay, ReaVerb, ReaLimit, ReaSynth,
        ReaSamplOmatic5000, ReaTune, ReaGate, ReaFIR, ReaXcomp.
        """
        try:
            project = get_project()
            track = project.tracks[track_index]
            fx_index = track.add_fx(fx_name)
            if fx_index < 0:
                return {"success": False, "error": f"Plugin not found: '{fx_name}'"}
            fx = track.fxs[fx_index]
            return {
                "success": True,
                "fx_index": fx_index,
                "name": fx.name,
                "n_params": fx.n_params,
                "track_index": track_index,
            }
        except Exception as e:
            logger.error(f"add_fx failed: {e}")
            return {"success": False, "error": str(e)}
  • The schema for add_fx is defined implicitly through Python type hints and docstring. Input: track_index (int), fx_name (str). Output: dict with success, fx_index, name, n_params, track_index.
    def add_fx(track_index: int, fx_name: str) -> dict:
        """
        Add an FX plugin to a track. Works for both instruments (VSTi) and effects (VST/AU).
        Use the exact plugin name as shown in REAPER's FX browser.
        Built-in Cockos plugins: ReaEQ, ReaComp, ReaDelay, ReaVerb, ReaLimit, ReaSynth,
        ReaSamplOmatic5000, ReaTune, ReaGate, ReaFIR, ReaXcomp.
        """
  • Registration of fx_tools module. The register_tools function from fx_tools is imported as _reg_fx and called with the mcp instance at line 23.
    from reaper_mcp.fx_tools import register_tools as _reg_fx
    from reaper_mcp.audio_tools import register_tools as _reg_audio
    from reaper_mcp.mixing_tools import register_tools as _reg_mixing
    from reaper_mcp.render_tools import register_tools as _reg_render
    from reaper_mcp.mastering_tools import register_tools as _reg_mastering
    from reaper_mcp.analysis_tools import register_tools as _reg_analysis
    
    _reg_project(mcp)
    _reg_track(mcp)
    _reg_midi(mcp)
    _reg_fx(mcp)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full disclosure burden. It adds valuable context about plugin types (VSTi/VST/AU) and exact naming requirements, but fails to disclose error behavior, whether the operation is destructive, or what constitutes success/failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences: purpose statement, scope clarification, usage instruction, and examples. Every sentence earns its place with no redundancy. Information is front-loaded with the core action stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 0% schema coverage and lack of annotations/output schema, the description covers the essential usage pattern and plugin identification but leaves gaps in explicit parameter documentation and return behavior. Adequate but not comprehensive for the complexity of audio plugin management.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, requiring the description to compensate. While it implies 'track' maps to track_index and provides examples for fx_name (ReaEQ, ReaComp, etc.), it does not explicitly document parameter semantics, valid ranges for track_index, or whether indexing is 0-based or 1-based.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Add an FX plugin to a track' with specific verb, resource, and target. It distinguishes from sibling 'add_master_fx' by specifying 'to a track' and clarifies scope by noting it works for both instruments (VSTi) and effects (VST/AU).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides critical usage instruction to 'Use the exact plugin name as shown in REAPER's FX browser' and lists valid built-in plugin examples (ReaEQ, ReaComp, etc.). However, it lacks explicit guidance on when to use 'add_master_fx' instead, only implicitly differentiating via the phrase 'to a track'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bonfire-audio/reaper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server