{"workflow":{"id":14990,"name":"Generate n8n workflows from chat using MCP tools, Claude and Postgres","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-04-11T11:53:27.817Z","description":"Describe any automation in plain English. This AI agent builds, \nvalidates, and deploys a working n8n workflow into your instance \nin seconds — no node dragging, no JSON editing, no guesswork.\n\n📺 Full setup guide: [https://youtu.be/HMXBInLaUB8?si=Q21gt48omSyzsTGl]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🎯 WHO IS THIS FOR?\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n→ n8n builders who want to generate workflows by chatting \n  instead of configuring every node manually\n→ Agencies building automations for clients at speed\n→ Developers who want an AI co-pilot with real n8n knowledge\n→ Non-technical teams who need to create workflows by \n  describing them in plain language\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n⚡ WHAT MAKES THIS DIFFERENT\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nMost AI workflow generators hallucinate node names, guess \nparameters, and produce broken JSON. This one doesn't.\n\nIt uses the official n8n MCP Client Tool node — natively \nbuilt into n8n, no community packages required — to connect \nto a self-hosted n8n-mcp server (czlonkowski/n8n-mcp, 16k+ \nGitHub stars). That server holds the complete, structured \ndocumentation of 1,396 n8n nodes in a SQLite database with \n12ms response time and zero rate limits.\n\nThe agent never guesses. It looks everything up first.\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n✅ WHAT IT DOES\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n→ Accepts plain English prompts via n8n's built-in chat UI\n→ Looks up exact node type strings — never assumes from \n  training data\n→ Validates every node config before building anything\n→ Runs 3 separate post-build checks: structure, connections, \n  and expression syntax\n→ Deploys directly to your n8n instance via the REST API\n→ Returns only the workflow URL + credential checklist\n→ Remembers conversation history for follow-up edits\n→ Modifies existing workflows with diff updates, not rebuilds\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n⚙️ HOW IT WORKS — STEP BY STEP\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n1. Chat Trigger receives your message and assigns a session ID\n\n2. Postgres Chat Memory stores conversation history so \n   follow-ups like \"change the trigger to a webhook\" work \n   naturally without losing context\n\n3. AI Agent (Claude Sonnet 4.5) reads the system prompt \n   and begins calling MCP tools in strict order:\n\n   — tools_documentation() to load current best practices\n   — search_nodes() for exact node type strings\n   — get_node_essentials() for the 10-20 params that matter\n   — search_templates() to find proven real-world patterns \n     from 2,646 templates\n   — validate_node_minimal() + validate_node_operation() \n     to pre-validate before building\n   — validate_workflow() + validate_workflow_connections() \n     + validate_workflow_expressions() post-build\n   — n8n_create_workflow() to deploy live\n   — n8n_validate_workflow() to confirm deployment\n\n4. MCP Client Tool (official n8n node, no community packages) \n   connects to the n8n-mcp Docker container on the same \n   Docker network — all 42 tools exposed, bearer auth secured\n\n5. Respond To Chat sends only the workflow URL and \n   a credential checklist — never raw JSON\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🔧 WHAT YOU NEED\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n→ Self-hosted n8n (Docker)\n→ n8n-mcp container on the same Docker network \n  (full docker-compose in sticky notes)\n→ OpenRouter API key (or native Anthropic node)\n→ Postgres for chat memory\n→ n8n API key with workflow create permissions\n→ Bearer token credential for n8n-mcp\n\nNo community nodes required. MCP Client Tool is an \nofficial built-in node in n8n.\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🛠️ NODES IN THIS WORKFLOW\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n→ Chat Trigger — public chat UI, auto session management\n→ AI Agent (Tools Agent, v3.1) — 25 iterations, full prompt\n→ MCP Client Tool (official) — all 42 tools, bearer auth\n→ OpenRouter Chat Model — Claude Sonnet 4.5\n→ Postgres Chat Memory — 10-message window per session\n→ Respond To Chat — formatted reply with error fallback\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🔁 CUSTOMISATION\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n→ Swap to any LLM via OpenRouter or native Anthropic node\n→ Adjust Postgres memory window (default: 10 messages)\n→ Restrict the system prompt to specific workflow categories\n→ Add a human approval step before deployment\n→ Deploy n8n-mcp on Railway or any VPS for remote access\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n⚠️ SELF-HOSTED ONLY\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nRequires self-hosted n8n. The n8n-mcp container must be \nreachable from n8n over HTTP on the same Docker network. \nNot compatible with n8n Cloud without exposing the MCP \nserver publicly.\n\nDocker Compose.yml and .env files\nhttps://docs.google.com/document/d/1qvkJnybhjeS3T2ySKsJ0MZF1rPZYcC1nbxBJjxC6Pqk/edit?usp=sharing\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📬 SUPPORT\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nEmail: salmanmehboob1947@gmail.com\nLinkedIn: https://www.linkedin.com/in/salman-mehboob-pro/","workflow":{"meta":{"instanceId":"4f3d674a636d1510e4120a3e346e6ed10c98f6398c5a8f2f5294ee80b39a7bc0","templateCredsSetupCompleted":true},"nodes":[{"id":"0c70373b-be62-4158-bf7f-617d0794ad30","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[208,0],"parameters":{"options":{"maxIterations":25,"systemMessage":"You are an expert n8n workflow architect. Your only job is to build, validate, and deploy production-ready n8n workflows using the MCP tools available to you. You have zero tolerance for guessing — every node type, every parameter, every expression must be confirmed through the MCP tools before use.\n\n════════════════════════════════════\nPHASE 1 — ALWAYS START HERE\n════════════════════════════════════\n\nEvery single conversation, before anything else:\n- Call tools_documentation() to load current best practices and available tools.\n- Never skip this. Even for simple requests.\n\nThen, if the user request is ambiguous or missing key information, ask ONE clarifying question before proceeding. Do not ask multiple questions at once. If the request is clear, proceed immediately.\n\n════════════════════════════════════\nPHASE 2 — DISCOVERY (find the right nodes)\n════════════════════════════════════\n\nNever guess a node type string. Always use the tools.\n\n- search_nodes({query: 'keyword', includeExamples: true}) — search by functionality\n- list_nodes({category: 'trigger'}) — browse by category when needed\n- list_ai_tools() — when the workflow involves AI nodes\n- get_node_for_task('task_name') — use this shortcut when a standard task matches\n\nRun discovery calls in parallel when looking up multiple independent nodes.\n\n════════════════════════════════════\nPHASE 3 — CONFIGURATION (get exact parameters)\n════════════════════════════════════\n\nFor every node you plan to use:\n1. get_node_essentials(nodeType) — always start here, returns only the 10-20 properties that matter\n2. search_node_properties(nodeType, 'specific_property') — if you need a specific field\n3. get_node_documentation(nodeType) — only if essentials are not enough\n\nRules:\n- Use ONLY node types and parameters returned by the tools above\n- Never invent parameters. If a parameter is not in get_node_essentials output, it does not exist\n- For expressions, use correct n8n syntax: {{ $json.fieldName }}, {{ $node[\"NodeName\"].json.field }}, {{ $('NodeName').item.json.field }}\n- NEVER use a Code node unless there is no standard node that can accomplish the task. Always prefer Set, Edit Fields, IF, Switch, Merge, or any other built-in node first\n\n════════════════════════════════════\nPHASE 4 — PRE-VALIDATION (validate BEFORE building)\n════════════════════════════════════\n\nBefore assembling the workflow JSON, validate each node's config individually:\n\n1. validate_node_minimal(nodeType, config) — quick check for required fields\n2. validate_node_operation(nodeType, config, 'runtime') — full operation-aware validation\n\nFix every error returned before moving to the build phase. Do not proceed with any node that has a validation error.\n\n════════════════════════════════════\nPHASE 5 — BUILD\n════════════════════════════════════\n\nAssemble the workflow using only validated node configurations from Phase 4.\n\nRules:\n- Every node must have: id (unique string), name, type, typeVersion (exact version from get_node_essentials), position (spaced 220px apart horizontally), parameters\n- Connections must use node names exactly as defined, not IDs\n- Add error handling to nodes that call external APIs: set continueOnFail: true where appropriate\n- Credential fields must be left empty with the correct credentialType flagged — never hardcode credentials\n- Position nodes left-to-right in execution order starting at [240, 300]\n\n════════════════════════════════════\nPHASE 6 — POST-BUILD VALIDATION (three separate checks)\n════════════════════════════════════\n\nRun all three. Fix any errors before deployment.\n\n1. validate_workflow(workflowJson) — full structural validation including connections\n2. validate_workflow_connections(workflowJson) — validates connection structure and AI tool wiring\n3. validate_workflow_expressions(workflowJson) — validates all {{ }} expressions for syntax errors\n\nIf any validation returns errors, fix them and re-run the relevant validation before continuing.\n\n════════════════════════════════════\nPHASE 7 — DEPLOY\n════════════════════════════════════\n\n1. n8n_create_workflow(validatedWorkflow) — deploy the workflow\n2. n8n_validate_workflow({id: 'returned_workflow_id'}) — validate the deployed workflow in n8n by ID\n3. If post-deployment validation finds issues, use n8n_update_partial_workflow() with diff operations to fix them — do not recreate the entire workflow\n\n════════════════════════════════════\nOUTPUT RULES — STRICT\n════════════════════════════════════\n\nAfter successful deployment, reply with EXACTLY this and nothing else:\n\n1. The workflow URL (from the deployment response)\n2. A bullet list of every credential the user must add manually, with the exact node name it belongs to\n3. One sentence confirming the workflow is live\n\nNEVER output:\n- Raw workflow JSON\n- Code blocks containing node configurations\n- The word \"here is the workflow\"\n- Technical details about node parameters or internal structure\n- Any JSON, YAML, or structured data of any kind\n\n════════════════════════════════════\nMODIFICATION RULES\n════════════════════════════════════\n\nIf the user asks to modify an existing workflow:\n1. Ask for the workflow ID if not already provided\n2. Use n8n_update_partial_workflow() with targeted diff operations — never recreate the full workflow\n3. Re-run validate_workflow and n8n_validate_workflow after every update\n\n════════════════════════════════════\nABSOLUTE RULES — NEVER BREAK THESE\n════════════════════════════════════\n\n- Never guess a node type string\n- Never skip tools_documentation at the start\n- Never deploy without passing all three post-build validations\n- Never use a Code node if a standard node can do the job\n- Never show raw JSON or code blocks to the user\n- Never hardcode credentials, API keys, passwords, or tokens\n- Never proceed past a validation error without fixing it first","enableStreaming":false}},"typeVersion":3.1},{"id":"3b3f7235-5dac-4cd2-a105-74cdd9d21ded","name":"MCP Client","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[400,464],"parameters":{"options":{},"endpointUrl":"http://n8n-mcp:3000/mcp","authentication":"bearerAuth"},"credentials":{"httpBearerAuth":{"id":"JGNYS6pzceEARmbA","name":"N8n MCP Bearer"}},"typeVersion":1.2,"rewireOutputLogTo":"ai_tool"},{"id":"f6570251-00ac-493f-bd8c-df4502417361","name":"OpenRouter Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[80,448],"parameters":{"model":"openai/gpt-4.1-nano","options":{}},"credentials":{"openRouterApi":{"id":"5jbOeQxvYYVpOJcz","name":"OpenRouter account 2"}},"typeVersion":1},{"id":"8d3d2cd9-6083-4e4a-9c07-879c3d6a0654","name":"Postgres Chat Memory","type":"@n8n/n8n-nodes-langchain.memoryPostgresChat","position":[224,448],"parameters":{"sessionKey":"={{ $('Chat Trigger').item.json.sessionId }}","sessionIdType":"customKey","contextWindowLength":10},"credentials":{"postgres":{"id":"Qr3L8CU2MKW9KFfA","name":"Postgres account"}},"typeVersion":1.3},{"id":"145d7f80-fb68-4084-b9cb-251afa9b3d6a","name":"Chat Trigger","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[-80,0],"webhookId":"72b1e899-fcf5-4b48-9672-0fd496d88165","parameters":{"options":{"responseMode":"responseNodes"}},"typeVersion":1.4},{"id":"00ef5ae6-027b-46ba-9090-3a939f627b95","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-624,-208],"parameters":{"width":480,"height":512,"content":"## n8n Workflow Generator Agent with MCP + Claude - Auto-Build & Deploy\n\n### How it works\n\n1. The Chat Trigger node initiates the workflow in response to incoming chat messages. \n2. The workflow passes the message to the AI Agent for processing. \n3. The AI Agent uses sub-nodes to interact with external services and models.\n4. The MCP Client and OpenRouter Chat Model sub-nodes handle the AI processing tasks.\n5. Postgres Chat Memory records conversation history.\n6. The Chat node finalizes the interaction and outputs the result.\n\n### Setup steps\n\n- [ ] Configure AI Agent with appropriate AI model credentials.\n- [ ] Set up database access for Postgres Chat Memory.\n- [ ] Ensure that the Chat Trigger is connected to a chat client.\n\n### Customization\n\nCustomize the AI model and connection settings in the AI Agent node to change the AI's behavior or add new functionalities."},"typeVersion":1},{"id":"4fb0cb6f-03c7-4583-ab6e-7783a780fbdf","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-112,-208],"parameters":{"color":7,"width":720,"height":512,"content":"## Initiate chat processing\n\nStarts the workflow in response to chat messages and passes it to the AI Agent for processing."},"typeVersion":1},{"id":"5b17bc05-3e49-4c2c-9e7f-8bb0c85e1631","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[32,320],"parameters":{"color":7,"width":480,"height":304,"content":"## Handle AI and memory tasks\n\nProcesses the chat message using AI services and manages chat memory."},"typeVersion":1},{"id":"a56af98a-d144-4f04-a5f9-081a58ba93d5","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[640,-144],"parameters":{"color":7,"height":320,"content":"## Output chat results\n\nOutputs the final processed chat result to the chat client."},"typeVersion":1},{"id":"5857fe8b-27e4-4c3e-b720-a2ca1729bce3","name":"Respond To Chat","type":"@n8n/n8n-nodes-langchain.chat","position":[704,0],"webhookId":"3704ed64-56da-44d9-a85d-3289b54646bb","parameters":{"message":"={{ $json.output ?? \"Something went wrong. Please try rephrasing your request.\" }}","options":{}},"typeVersion":1.3},{"id":"538c8ce8-152f-4c8b-9cad-b4e7df4edd21","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[976,-144],"parameters":{"width":496,"height":320,"content":"## 📺 Watch the Setup Guide\n\n@[youtube](HMXBInLaUB8)"},"typeVersion":1}],"pinData":{},"connections":{"AI Agent":{"main":[[{"node":"Respond To Chat","type":"main","index":0}]]},"MCP Client":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"Chat Trigger":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Postgres Chat Memory":{"ai_memory":[[{"node":"AI Agent","type":"ai_memory","index":0}]]},"OpenRouter Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":11,"nodeTypes":{"n8n-nodes-base.stickyNote":{"count":5},"@n8n/n8n-nodes-langchain.chat":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.chatTrigger":{"count":1},"@n8n/n8n-nodes-langchain.mcpClientTool":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenRouter":{"count":1},"@n8n/n8n-nodes-langchain.memoryPostgresChat":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Salman Mehboob","username":"salmanmehboob","bio":"n8n Automation Engineer with 3+ years building real-world workflows for agencies and businesses. I specialize in AI pipelines, voice automation with Vapi, lead scraping, outreach systems and API integrations. I build things that actually work in production not just demos.","verified":true,"links":["https://www.linkedin.com/in/salman-mehboob-pro/"],"avatar":"https://gravatar.com/avatar/79052fec3c66eab8385100f0bd2d0019602ebf0948148ba84d9cfa5f830e07c4?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":1247,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chatTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"categories":["Core Nodes","Langchain"]}},"group":"[\"trigger\"]","defaults":{"name":"When chat message received"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"}]},{"id":1267,"icon":"file:postgres.svg","name":"@n8n/n8n-nodes-langchain.memoryPostgresChat","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorypostgreschat/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["Other memories"]}}},"group":"[\"transform\"]","defaults":{"name":"Postgres Chat Memory"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres Chat Memory","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1281,"icon":"file:openrouter.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenRouter Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjOTRBM0I4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDI0IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5PcGVuUm91dGVyPC90aXRsZT48cGF0aCBkPSJNMTYuODA0IDEuOTU3bDcuMjIgNC4xMDV2LjA4N0wxNi43MyAxMC4yMWwuMDE3LTIuMTE3LS44MjEtLjAzYy0xLjA1OS0uMDI4LTEuNjExLjAwMi0yLjI2OC4xMS0xLjA2NC4xNzUtMi4wMzguNTc3LTMuMTQ3IDEuMzUyTDguMzQ1IDExLjAzYy0uMjg0LjE5NS0uNDk1LjMzNi0uNjguNDU1bC0uNTE1LjMyMi0uMzk3LjIzNC4zODUuMjMuNTMuMzM4Yy40NzYuMzE0IDEuMTcuNzk2IDIuNzAxIDEuODY2IDEuMTEuNzc1IDIuMDgzIDEuMTc3IDMuMTQ3IDEuMzUybC4zLjA0NWMuNjk0LjA5MSAxLjM3NS4wOTQgMi44MjUuMDMzbC4wMjItMi4xNTkgNy4yMiA0LjEwNXYuMDg3TDE2LjU4OSAyMmwuMDE0LTEuODYyLS42MzUuMDIyYy0xLjM4Ni4wNDItMi4xMzcuMDAyLTMuMTM4LS4xNjItMS42OTQtLjI4LTMuMjYtLjkyNi00Ljg4MS0yLjA1OWwtMi4xNTgtMS41YTIxLjk5NyAyMS45OTcgMCAwMC0uNzU1LS40OThsLS40NjctLjI4YTU1LjkyNyA1NS45MjcgMCAwMC0uNzYtLjQzQzIuOTA4IDE0LjczLjU2MyAxNC4xMTYgMCAxNC4xMTZWOS44ODhsLjE0LjAwNGMuNTY0LS4wMDcgMi45MS0uNjIyIDMuODA5LTEuMTI0bDEuMDE2LS41OC40MzgtLjI3NGMuNDI4LS4yOCAxLjA3Mi0uNzI2IDIuNjg2LTEuODUzIDEuNjIxLTEuMTMzIDMuMTg2LTEuNzggNC44ODEtMi4wNTkgMS4xNTItLjE5IDEuOTc0LS4yMTMgMy44MTQtLjEzOGwuMDItMS45MDd6Ij48L3BhdGg+PC9zdmc+Cg=="},"displayName":"OpenRouter Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1292,"icon":"file:../mcp.svg","name":"@n8n/n8n-nodes-langchain.mcpClientTool","codex":{"data":{"alias":["Model Context Protocol","MCP Client"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"output\"]","defaults":{"name":"MCP Client"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"},"displayName":"MCP Client Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1313,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chat","codex":{"data":{"alias":["human","wait","hitl","respond","approve","confirm","send","message"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.respondtochat/"}]},"categories":["Core Nodes","HITL","Langchain"],"subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"input\"]","defaults":{"name":"Chat"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"},{"id":28,"name":"HITL"}]}],"categories":[{"id":42,"name":"Internal Wiki"},{"id":47,"name":"AI Chatbot"}],"image":[]}}