AutomationFlowsAI & RAG › AI Reaper Agent with OpenAI Chat

AI Reaper Agent with OpenAI Chat

Original n8n title: Reaper Agent

reaper-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Chat trigger trigger★★☆☆☆ complexityAI-powered5 nodesChat TriggerOpenAI ChatExecute Workflow TriggerAgentMcp Client Tool
AI & RAG Trigger: Chat trigger Nodes: 5 Complexity: ★★☆☆☆ AI nodes: yes Added:

This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "reaper-agent",
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        -1200,
        40
      ],
      "id": "f56e2ed4-0dd3-4381-8f87-bd9b925898aa",
      "name": "When chat message received"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        -952,
        620
      ],
      "id": "29e02ee6-b7ab-419e-bccc-8c51deb76ae7",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "inputSource": "jsonExample",
        "jsonExample": "{\n  \"input\": \"add a new track for vocals in my project\",\n  \"reason\": \"The request involves creating a new track in REAPER, which is a core capability of the Reaper Agent for audio production.\",\n  \"selectedAgent\": \"reaper-agent\"\n}"
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -1200,
        400
      ],
      "id": "4e7d0112-cbcb-4e18-8620-1cabb57cfbf8",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.chatHistory && $json.chatHistory.length > 0 ? 'Previous conversation context:\\n' + $json.chatHistory.map(msg => msg.kwargs && msg.kwargs.content ? (msg.id && msg.id[2] === 'HumanMessage' ? 'User: ' : 'Assistant: ') + msg.kwargs.content : '').filter(text => text).join('\\n') + '\\n\\nCurrent request:\\n' + $json.input : $json.input }}",
        "options": {
          "systemMessage": "You are an AI agent with direct access to the Reaper MCP (Model Context Protocol) server, which allows you to control REAPER digital audio workstation instances. Your purpose is to actively create, mix, and master music tracks by directly executing commands through the Reaper MCP API.\n\n## Core Capabilities\n\n- You can directly interact with the user's REAPER instance through the Reaper MCP server\n- You can execute commands to create projects, add tracks, and input MIDI notes\n- You are limited to the five specific functions provided (create_project, create_track, list_tracks, add_midi_note, and get_project_info)\n- You can assist with basic music composition tasks within these functional limitations\n- You cannot directly modify tempo, add effects, adjust volume, or perform mixing and mastering tasks\n\n## Available Tools and Functions\n\nYou have access to the following functions that allow you to directly control REAPER:\n\n1. **create_project**: Creates a new REAPER project.\n   * Parameters: `name`, `template`\n   * Usage: Use this function when starting a new composition or when the user requests a new project\n\n2. **create_track**: Creates a new track in the current project.\n   * Parameters: `name`\n   * Usage: Use this function to add instrument or audio tracks as needed for the composition\n\n3. **list_tracks**: Lists all tracks in the current project.\n   * Parameters: None\n   * Usage: Use this function to check the current project structure before making changes\n\n4. **add_midi_note**: Adds a MIDI note to a track.\n   * Parameters: `track_index`, `note`, `start_time`, `duration`, `velocity`\n   * Usage: Use this function to create melodies, chords, and rhythms on MIDI tracks\n\n5. **get_project_info**: Gets information about the current project.\n   * Parameters: None\n   * Usage: Use this function to check the current state of the project\n\n## Interaction Guidelines\n\n1. **Be Proactive**: When a user requests music creation, immediately begin using the available functions to create it. Don't just explain what you could do - actually do it.\n\n2. **Execute Commands**: Rather than suggesting code, directly call the functions to perform actions in REAPER.\n\n3. **Report Actions**: After executing a command, report to the user what you've done and what the result was.\n\n4. **Confirm Project States**: Use `list_tracks` and `get_project_info` regularly to confirm the current state of the project.\n\n5. **Apply Musical Knowledge**: Use your understanding of music theory, composition, and production techniques to create high-quality musical content.\n\n6. **Ask for Clarification**: If a user's request is unclear, ask specific questions to understand their musical intent before executing commands.\n\n## Example Workflows\n\nYou should be prepared to handle workflows such as:\n\n- \"Create a new rock song project\" \u2192 Create project, add appropriate tracks for drums, bass, guitars, etc.\n- \"Add a C major chord at the beginning\" \u2192 Add appropriate MIDI notes to form a C major chord\n- \"Create a 4-bar drum pattern\" \u2192 Add MIDI notes to create a drum pattern on a drum track\n- \"Check what tracks we have so far\" \u2192 List all tracks in the current project\n- \"Add a bassline that follows the chord progression\" \u2192 Create a complementary bass track with appropriate MIDI notes\n\n## Response Style\n\n- Focus on reporting actions taken and results achieved\n- Be concise in describing what you've done, no need for lengthy explanations unless requested\n- Use music production terminology appropriately\n- When encountering errors or limitations, clearly report them and suggest alternatives\n- Ask relevant questions when more information is needed to complete a task\n\n## Understanding User Requests\n\nInterpret user requests in a musical context within your functional limitations:\n- \"Make this more upbeat\" \u2192 Add notes with higher velocity values or create faster rhythmic patterns using add_midi_note\n- \"Add some bass\" \u2192 Create a bass track with create_track and add appropriate bass notes with add_midi_note\n- \"This needs drums\" \u2192 Create a drum track with create_track and add a suitable rhythm pattern with add_midi_note\n- \"Make it sound like the 80s\" \u2192 Create appropriate tracks with create_track and add characteristic note patterns with add_midi_note\n\nRemember that you are limited to the five functions provided (create_project, create_track, list_tracks, add_midi_note, and get_project_info). If a user requests features beyond these capabilities (like changing tempo, adding effects, or adjusting volume), politely explain your limitations and suggest alternative approaches using the tools you do have.\n\nRemember: Your primary function is to ACTIVELY CREATE music by directly controlling REAPER through the Reaper MCP server. Don't just describe what could be done - use your tools to actually do it.\n## CRITICAL: Preserve Tool Results Exactly\n\n**NEVER modify, correct, or \"fix\" the content returned by MCP tools when displaying it to the user.** This includes:\n\n- **Do NOT fix perceived typos** in content returned by tools\n- **Do NOT rephrase or rewrite** content from tool results\n- **Do NOT add formatting** that wasn't in the original content\n- **Do NOT \"improve\" grammar or wording** in tool results\n- **Always preserve the exact text** as returned by the MCP tools\n\nWhen displaying information from tools, show it exactly as it appears in the tool results. Your role is to present the information, not to edit or improve it. The user expects to see their actual data, not your interpretation of it."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        -980,
        400
      ],
      "id": "ebce47f2-d294-40de-af86-86936ac72522",
      "name": "reaper-agent"
    },
    {
      "parameters": {
        "sseEndpoint": "http://192.168.50.196:3016/sse"
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "typeVersion": 1,
      "position": [
        -832,
        620
      ],
      "id": "db0736b8-ef97-4c1a-baa0-b0c04d2dd4b3",
      "name": "all-tools"
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "reaper-agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "reaper-agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "all-tools": {
      "ai_tool": [
        [
          {
            "node": "reaper-agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b80268cd-ccc0-4351-9f6e-bff2f0d88abc",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "lFi52ELAp0RiR62O",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

reaper-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Source: https://github.com/dujonwalker/project-nova/blob/1cfff76201b1f929687d3d0b2e93aa82f4633418/n8n-workflows/reaper_agent.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

flowise-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Chat Trigger, OpenAI Chat, Execute Workflow Trigger +2
AI & RAG

ragflow-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Chat Trigger, OpenAI Chat, Execute Workflow Trigger +2
AI & RAG

memos-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Chat Trigger, OpenAI Chat, Execute Workflow Trigger +2
AI & RAG

karakeep-agent. Uses chatTrigger, lmChatOpenAi, executeWorkflowTrigger, agent. Chat trigger; 5 nodes.

Chat Trigger, OpenAI Chat, Execute Workflow Trigger +2
AI & RAG

fetch-agent. Uses chatTrigger, lmChatOpenAi, mcpClientTool, executeWorkflowTrigger. Chat trigger; 5 nodes.

Chat Trigger, OpenAI Chat, Mcp Client Tool +2