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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "12061ba0-24f8-4853-9898-c8710b118959",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
500
],
"parameters": {
"color": 7,
"width": 1260,
"height": 635,
"content": "### Sub-workflow: Custom tool\nThe agent above can call this workflow. It calls an example API called \"Bored API\" and returns a string with an activity idea."
},
"typeVersion": 1
},
{
"id": "4a2101f4-de86-4b2c-9fbc-5a75e73e3a26",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 7,
"width": 927.5,
"height": 486.5625,
"content": "### Main workflow: AI agent using custom tool"
},
"typeVersion": 1
},
{
"id": "102ec972-1784-4b89-be6f-1d4bd8f85cf1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
660,
240
],
"parameters": {
"color": 5,
"width": 177,
"height": 199,
"content": "**This tool calls the sub-workflow below**"
},
"typeVersion": 1
},
{
"id": "707d76f1-0b45-4347-b16a-3b66906711bc",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
300,
240
],
"parameters": {
"color": 2,
"width": 170,
"height": 191,
"content": "**Set your credentials**"
},
"typeVersion": 1
},
{
"id": "d2a9637b-d988-4978-a112-4b96f279f0c0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
280,
840
],
"parameters": {
"color": 2,
"width": 170,
"height": 190,
"content": "**Set your credentials**"
},
"typeVersion": 1
},
{
"id": "02f5308b-61db-467d-84f4-8b2ae8655dfd",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-160,
80
],
"parameters": {
"color": 4,
"width": 185.9375,
"height": 214.8397420554627,
"content": "## Try it out\n\nSelect **Chat** at the bottom and enter:\n\n_Hi! Please suggest something to do. I feel like learning something new._"
},
"typeVersion": 1
},
{
"id": "c012dfad-0ed8-4072-9c57-24f48aadd620",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
920
],
"parameters": {
"width": 280,
"height": 145,
"content": "## Next steps\n\nLearn more about [Advanced AI in n8n](https://docs.n8n.io/advanced-ai/)"
},
"typeVersion": 1
},
{
"id": "39e0c9eb-5736-46a0-b4ce-64425f56ba8c",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
160,
80
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "38dad34c-116b-4673-b338-6fbf1d019bab",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
340,
300
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "78af18c4-3541-4ff2-8526-fb186614051b",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
520,
300
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "45f17ad3-f7da-4d98-a597-f66c2efdbbea",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
120,
660
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "chatInput"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "135ac846-fcc7-4754-8127-6a810b76594a",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
320,
900
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "8e9d8b39-a7a4-44fb-8ac4-0555e632f0df",
"name": "Work out activity type and number of people1",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
340,
660
],
"parameters": {
"text": "={{ $('When Executed by Another Workflow').item.json.chatInput }}",
"options": {},
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"required\": [\"type\",\"participants\"],\n \"properties\": {\n \"type\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"enum\": [\"education\", \"recreational\",\"social\",\"diy\",\"charity\",\"cooking\",\"relaxation\",\"music\",\"busywork\"]\n }\n }\n },\n \"participants\": {\n \"type\": \"number\"\n }\n }\n}"
},
"typeVersion": 1
},
{
"id": "312f12d9-db30-48b0-aca3-a6c3a0250b2d",
"name": "Call the API",
"type": "n8n-nodes-base.httpRequest",
"position": [
700,
660
],
"parameters": {
"url": "https://bored-api.appbrewery.com/filter",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "type",
"value": "={{ $json.output.type.data }}"
},
{
"name": "participicants",
"value": "={{ $json.output.participants }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0e97b6c1-3291-44a2-bf35-39335b9b90a1",
"name": "Activity Tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
700,
300
],
"parameters": {
"name": "activity_tool",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"description": "Suggest an activity for a person to do. Use this tool if someone is bored, or asking for ideas of things to do.",
"workflowInputs": {
"value": {
"chatInput": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('chatInput', ``, 'string') }}"
},
"schema": [
{
"id": "chatInput",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "chatInput",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"typeVersion": 2
},
{
"id": "256b8adc-ef71-40da-a40c-10a1045c9d7d",
"name": "Set 'response' value",
"type": "n8n-nodes-base.set",
"position": [
1060,
660
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c78b10cd-7d6d-4512-ad0b-6f6ec3c706b2",
"name": "response",
"type": "string",
"value": "={{ $json.data }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ede9e3c2-c3ce-44bd-92be-51eb90d086dc",
"name": "Combine",
"type": "n8n-nodes-base.aggregate",
"position": [
880,
660
],
"parameters": {
"include": "specifiedFields",
"options": {},
"aggregate": "aggregateAllItemData",
"fieldsToInclude": "activity"
},
"typeVersion": 1
},
{
"id": "b4b49c7f-5491-416c-98d1-518372329c77",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
420,
80
],
"parameters": {
"options": {}
},
"typeVersion": 1.8
}
],
"connections": {
"Combine": {
"main": [
[
{
"node": "Set 'response' value",
"type": "main",
"index": 0
}
]
]
},
"Call the API": {
"main": [
[
{
"node": "Combine",
"type": "main",
"index": 0
}
]
]
},
"Activity Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Work out activity type and number of people1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Work out activity type and number of people1",
"type": "main",
"index": 0
}
]
]
},
"Work out activity type and number of people1": {
"main": [
[
{
"node": "Call the API",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow enables seamless execution of sub-workflows through natural language chat interactions, allowing users to trigger complex automations without navigating interfaces. It suits teams managing dynamic processes, such as customer support or content generation, by interpreting chat inputs via OpenAI's language model and dispatching HTTP requests to initiate the desired workflow. The key step involves the chat trigger capturing messages, followed by AI-powered extraction of intent to route the execution accurately, ensuring reliable and context-aware responses.
Use this when building conversational agents that need to invoke multiple n8n workflows based on user queries, like automating ticket routing from a Slack chat. Avoid it for simple, non-AI tasks or high-volume scenarios without memory buffers, as it relies on OpenAI for processing. Common variations include adding custom integrations for specific triggers or extending the memory window for longer conversation histories.
About this workflow
Http Executeworkflow. Uses stickyNote, chatTrigger, lmChatOpenAi, memoryBufferWindow. Chat trigger; 18 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This template attempts to create an AI-powered content assistant for WordPress sites using Mistral AI, enabling article recommendations, content summarization, and contextual Q&A capabilities.
by Varritech Technologies
Airtable AI Agent. Uses lmChatOpenAi, agent, toolWorkflow, toolCode. Chat trigger; 42 nodes.
Ai Agent To Chat With Airtable And Analyze Data. Uses lmChatOpenAi, agent, stickyNote, memoryBufferWindow. Chat trigger; 41 nodes.
I prepared a detailed guide that shows the entire process of building an AI agent that integrates with Airtable data in n8n. This template covers everything from data preparation to advanced configura