{
  "workflow": {
    "id": 7158,
    "name": "Beginner manager agent with sub-agent tools",
    "views": 2318,
    "recentViews": 1,
    "totalViews": 2318,
    "createdAt": "2025-08-08T00:45:19.792Z",
    "description": "This guide walks you through building an intelligent AI Agent in n8n that routes tasks to the appropriate sub-agent using the new `@n8n/n8n-nodes-langchain` agent framework. You’ll create a **Manager Agent** that evaluates user input and delegates it to either an **Email Agent** or a **Data Agent**—each with its own role, memory, and OpenAI model.\n\nThis is perfect for use cases where you want a single entry point but intelligent branching behind the scenes.\n\n---\n\n## 🔧 Step 1: Set Up the Manager Agent\n\nStart by dragging in an **Agent** node and name it something like `ManagerAgent`. This agent will act as the “brain” of your system, analyzing the user's input and determining whether it should be handled by the email-writing sub-agent or the data-summary sub-agent.\n\nOpen the node’s settings and paste the following into the **System Message**:\n\n```\nYou are an AI Manager that delegates tasks to specialized agents. Your job is to analyze the user's message and decide whether it requires:\n\nAn EmailAgent for writing outreach, follow-up, or templated emails, or\n\nA DataAgent for tasks involving data summaries, metrics, or analysis.\n\nSend the instructions to the sub agents.\n```\n\nThis instruction gives the Manager Agent clarity on what roles exist and what types of tasks belong to each one.\n\n---\n\n## 🧠 Step 2: Add Memory to the Manager Agent\n\nDrag in a **Memory (BufferWindow)** node and label it `Manager Memory`. Connect it to the `ai_memory` input of the Manager Agent. This ensures the agent can remember recent inputs and outputs from the user and agents during the conversation.\n\nNo extra configuration is needed in this memory node—just connect it to the agent.\n\n---\n\n## 🔌 Step 3: Connect a Language Model to the Manager Agent\n\nNext, add a **Language Model** node and choose `OpenAI Chat Model`. Select a model like `gpt-4o-mini` or `gpt-4`, depending on what you have access to. Under **Credentials**, connect your OpenAI API key. If you haven’t created this credential yet:\n\n1. Click \"OpenAI API\" under Credentials.\n2. Choose \"Create New\".\n3. Paste your OpenAI API key (found at [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys)).\n4. Save it and return to the workflow.\n\nOnce the model is set, connect it to the `ai_languageModel` input of the Manager Agent.\n\n---\n\n## ✉️ Step 4: Create the Email Agent Tool\n\nNow you’ll create a specialized sub-agent that only writes emails.\n\nAdd an **Agent Tool** node and call it `EmailAgent`. In the tool’s settings, describe its job clearly. For example:\n\n```\nWrites professional, friendly, or action-oriented emails based on instructions.\n```\n\nThen scroll down to the **System Message** section and enter the following:\n\n```\nYou are a professional Email Writing Assistant. You write polished, effective emails for tasks such as outreach, follow-ups, and client communication. Follow the instruction provided exactly and return only the email content. Use a warm, business-appropriate tone.\n```\n\nFor the text input field, use the expression:\n\n```\n{{ $fromAI('Prompt__User_Message_', ``, 'string') }}\n```\n\nThis allows the Email Agent to receive exactly what the Manager Agent wants it to handle.\n\nAdd another **Memory** node and link it to this tool to help it maintain short-term context. Then add a second **Language Model** node, configured just like the first one (you can even clone it), and connect it to the EmailAgent.\n\nFinally, connect this entire EmailAgent setup back to the `ManagerAgent` by attaching it to its `ai_tool` input.\n\n---\n\n## 📊 Step 5: Create the Data Agent Tool\n\nRepeat the same steps, but this time for data summaries and analysis.\n\nAdd another **Agent Tool** node and name it `DataAgent`. In the **Tool Description**, write something like:\n\n```\nResponds to instructions requiring metrics, summaries, or data analysis explanations.\n```\n\nFor its input text field, you can use:\n\n```\n{{json.query}}\n```\n\nIf desired, provide a system message that gives the agent more detailed instruction on how to behave:\n\n```\nYou are a helpful Data Analyst. Summarize trends, explain metrics, and break down data clearly based on user instructions.\n```\n\nAs with the EmailAgent, you’ll also need:\n- A dedicated **Memory** node\n- A dedicated **Language Model** node\n- A connection to the `ai_tool` input of the Manager Agent\n\nNow the Manager Agent has two tools it can delegate to: one for communication and one for insights.\n\n---\n\n## 🧪 Step 6: Test Your AI Agent System\n\nDeploy the workflow and start testing by sending prompts like:\n\n&gt; “Write a cold outreach email to a software company.”\n\nThe ManagerAgent should route that to the EmailAgent.\n\nThen try:\n\n&gt; “Summarize how our lead volume changed last month.”\n\nThe DataAgent should receive that task.\n\nIf routing isn’t working as expected, double-check your system messages and input bindings in each agent tool.\n\n---\n\n## ✅ You’re Done!\n\nYou now have a modular, multi-agent AI system powered by n8n. The Manager Agent delegates intelligently, each sub-agent is optimized for its role, and all of them benefit from context memory.\n\nFor more advanced setups, you can chain tools, add additional memory types, or use retrieval (RAG) tools for external document support.\n\n---\n",
    "workflow": {
      "meta": {
        "instanceId": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
        "templateCredsSetupCompleted": true
      },
      "nodes": [
        {
          "id": "e816ff5f-d3d4-4416-96d9-961a078fb188",
          "name": "OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -32,
            736
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini",
              "cachedResultName": "gpt-4o-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "9b121aea-be80-46a0-879d-5732b7d4d4f3",
          "name": "Simple Memory",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            784,
            720
          ],
          "parameters": {},
          "typeVersion": 1.3
        },
        {
          "id": "2f8104f9-c975-4ed0-b5a9-c5c592878e8c",
          "name": "Simple Memory1",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            1312,
            688
          ],
          "parameters": {},
          "typeVersion": 1.3
        },
        {
          "id": "c07ce435-64a0-4939-918b-9954e7e663e3",
          "name": "OpenAI Chat Model1",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            640,
            672
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini",
              "cachedResultName": "gpt-4o-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "20c108c9-221d-4dde-92ff-028ab4b12c2b",
          "name": "OpenAI Chat Model2",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            1184,
            672
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini",
              "cachedResultName": "gpt-4o-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "263bd596-d242-4a3e-8555-d23e172b23ef",
          "name": "DataAgent (Insight Generator)",
          "type": "@n8n/n8n-nodes-langchain.agentTool",
          "position": [
            1184,
            480
          ],
          "parameters": {
            "text": "{{json.query}}",
            "options": {},
            "toolDescription": "Role: Responds to instructions requiring metrics, summaries, or data analysis explanations."
          },
          "typeVersion": 2.2
        },
        {
          "id": "2efc2325-6fee-4fce-a4ba-8b9b72701a8d",
          "name": "Simple Memory2",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            176,
            720
          ],
          "parameters": {},
          "typeVersion": 1.3
        },
        {
          "id": "8c0e14bd-e64f-473f-9f31-0b0d2c800669",
          "name": "ManagerAgent (Routing + Instruction Generator)",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            32,
            512
          ],
          "parameters": {
            "options": {
              "systemMessage": "You are an AI Manager that delegates tasks to specialized agents. Your job is to analyze the user's message and decide whether it requires:\n\nAn EmailAgent for writing outreach, follow-up, or templated emails, or\n\nA DataAgent for tasks involving data summaries, metrics, or analysis.\n\nsend the instructions to the sub agents. \n\n"
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "ee67ff1c-5651-43bb-a836-f48cf0f4c2bd",
          "name": "EmailAgent (Communication Specialist)",
          "type": "@n8n/n8n-nodes-langchain.agentTool",
          "position": [
            656,
            512
          ],
          "parameters": {
            "text": "={{ $fromAI('Prompt__User_Message_', ``, 'string') }}",
            "options": {
              "systemMessage": "You are a professional Email Writing Assistant. You write polished, effective emails for tasks such as outreach, follow-ups, and client communication. Follow the instruction provided exactly and return only the email content. Use a warm, business-appropriate tone."
            },
            "toolDescription": "Role: Writes professional, friendly, or action-oriented emails based on instructions."
          },
          "typeVersion": 2.2
        },
        {
          "id": "0f5fe30c-3d39-472e-ae83-985adfdab40a",
          "name": "Sticky Note16",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -144,
            -192
          ],
          "parameters": {
            "width": 1680,
            "content": "## 📬 Need Help or Want to Customize This?\n📧 [robert@ynteractive.com](mailto:robert@ynteractive.com)  \n🔗 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
          },
          "typeVersion": 1
        },
        {
          "id": "2b2938bf-6d85-487a-8a3a-af4e7258162b",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -144,
            -16
          ],
          "parameters": {
            "color": 5,
            "width": 600,
            "height": 860,
            "content": "## 🔧 Step 1: Set Up the Manager Agent\n\nStart by dragging in an **Agent** node and name it something like `ManagerAgent`. This agent will act as the “brain” of your system, analyzing the user's input and determining whether it should be handled by the email-writing sub-agent or the data-summary sub-agent.\n\nOpen the node’s settings and paste the following into the **System Message**:\n\nYou are an AI Manager that delegates tasks to specialized agents. Your job is to analyze the user's message and decide whether it requires:\n\nAn EmailAgent for writing outreach, follow-up, or templated emails, or\n\nA DataAgent for tasks involving data summaries, metrics, or analysis.\n\nSend the instructions to the sub agents.\n\n\nThis instruction gives the Manager Agent clarity on what roles exist and what types of tasks belong to each one.\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "31c629b0-c8a3-47ad-9d1b-110690f5c5c2",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1040,
            -16
          ],
          "parameters": {
            "color": 4,
            "width": 496,
            "height": 860,
            "content": "## 📊 Step 3: Create the Data Agent Tool\n\nRepeat the same steps, but this time for data summaries and analysis.\n\nAdd another **Agent Tool** node and name it `DataAgent`. In the **Tool Description**, write something like:\n\nResponds to instructions requiring metrics, summaries, or data analysis explanations.\n\nFor its input text field, you can use:\n\n{{json.query}}\n\nIf desired, provide a system message that gives the agent more detailed instruction on how to behave:\n\nNow the Manager Agent has two tools it can delegate to: one for communication and one for insights.\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "3e609caf-b457-4b4f-8f1d-579b5c6cf3ee",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            480,
            -16
          ],
          "parameters": {
            "color": 6,
            "width": 536,
            "height": 860,
            "content": "\n## ✉️ Step 4: Create the Email Agent Tool\n\nNow you’ll create a specialized sub-agent that only writes emails.\n\nAdd an **Agent Tool** node and call it `EmailAgent`. In the tool’s settings, describe its job clearly. For example:\n\n```\nWrites professional, friendly, or action-oriented emails based on instructions.\n```\n\nThen scroll down to the **System Message** section and enter the message\n\nFor the text input field, use the expression:\n\n{{ $fromAI('Prompt__User_Message_', ``, 'string') }}\n\nThis allows the Email Agent to receive exactly what the Manager Agent wants it to handle.\n\n\nFinally, connect this entire EmailAgent setup back to the `ManagerAgent` by attaching it to its `ai_tool` input.\n\n"
          },
          "typeVersion": 1
        }
      ],
      "pinData": {},
      "connections": {
        "Simple Memory": {
          "ai_memory": [
            [
              {
                "node": "EmailAgent (Communication Specialist)",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Simple Memory1": {
          "ai_memory": [
            [
              {
                "node": "DataAgent (Insight Generator)",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Simple Memory2": {
          "ai_memory": [
            [
              {
                "node": "ManagerAgent (Routing + Instruction Generator)",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "ManagerAgent (Routing + Instruction Generator)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model1": {
          "ai_languageModel": [
            [
              {
                "node": "EmailAgent (Communication Specialist)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model2": {
          "ai_languageModel": [
            [
              {
                "node": "DataAgent (Insight Generator)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "DataAgent (Insight Generator)": {
          "ai_tool": [
            [
              {
                "node": "ManagerAgent (Routing + Instruction Generator)",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "EmailAgent (Communication Specialist)": {
          "ai_tool": [
            [
              {
                "node": "ManagerAgent (Routing + Instruction Generator)",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 13,
      "nodeTypes": {
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agentTool": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 3
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 3
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Robert Breen",
      "username": "rbreen",
      "bio": "Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.",
      "verified": true,
      "links": [
        "https://ynteractive.com/"
      ],
      "avatar": "https://gravatar.com/avatar/15bb5ad97bad47ca2079e1fa123a8287000c72c86498c90043f70ec2adab05f3?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1153,
        "icon": "file:openAiLight.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1310,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agentTool",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Tools"
              ],
              "Tools": [
                "Other Tools"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent Tool",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent Tool",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 5,
        "name": "Engineering"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}