Hi
I’m building an AI agent workflow where tool execution must strictly follow a sequential order—specifically:
- The AI agent triggers a Scraper tool to begin scraping data (which takes some time to complete).
- Then, I need to wait exactly 6 minutes before triggering the next tool.
- Only after the 6-minute wait, the agent should trigger a Task Status Check tool to get the result of the original scrape.
Problem
- The agent is unable to perform a virtual delay between two tools**, even when I explicitly define this behavior in the system message. It seems to ignore the instruction to pause before moving to the next tool.
- When I use a separate tool to enforce the delay**, the agent does not wait for the output of the delay tool. It simply marks the tool as “used” and immediately proceeds to execute the next tool, without respecting the intended wait time.
Workflow
{
“nodes”: [
{
“parameters”: {
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.chatTrigger”,
“typeVersion”: 1.1,
“position”: [
0,
0
],
“id”: “be7596cd-b687-4ebd-a224-37c225425c54”,
“name”: “When chat message received”,
“webhookId”: “e0b093ec-967e-4e8d-8333-ddb45ca97b80”
},
{
“parameters”: {
“model”: {
“__rl”: true,
“mode”: “list”,
“value”: “gpt-4o-mini”
},
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatOpenAi”,
“typeVersion”: 1.2,
“position”: [
-40,
260
],
“id”: “df3b7a78-aa06-4636-9865-2a95e2c8cd0d”,
“name”: “OpenAI Chat Model”,
“credentials”: {
“openAiApi”: {
“id”: “oHUluIpOKkXlIqH6”,
“name”: “OpenAi account”
}
}
},
{
“parameters”: {},
“type”: “@n8n/n8n-nodes-langchain.memoryBufferWindow”,
“typeVersion”: 1.3,
“position”: [
120,
260
],
“id”: “82a614ef-568b-447a-b965-db522c2ff3e7”,
“name”: “Simple Memory”
},
{
“parameters”: {
“description”: “=purpose: Gets statuses of the task_id that FT William Scraper Tool returns.\n\ninput schema: \n"task_id":\n"f12a08b1-fed4-49fb-be72-425df1ef9b47"\n\n”,
“workflowId”: {
“__rl”: true,
“value”: “A80g7TreSeL4na0U”,
“mode”: “list”,
“cachedResultName”: “Operations — Get task Status”
},
“workflowInputs”: {
“mappingMode”: “defineBelow”,
“value”: {
“task_id”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘task_id’, example:\n{\n\"task_id\":\n\"f12a08b1-fed4-49fb-be72-425df1ef9b47\"\n}, ‘string’) }}”
},
“matchingColumns”: [
“task_id”
],
“schema”: [
{
“id”: “task_id”,
“displayName”: “task_id”,
“required”: false,
“defaultMatch”: false,
“display”: true,
“canBeUsedToMatch”: true,
“type”: “string”,
“removed”: false
}
],
“attemptToConvertTypes”: false,
“convertFieldsToString”: false
}
},
“type”: “@n8n/n8n-nodes-langchain.toolWorkflow”,
“typeVersion”: 2.2,
“position”: [
500,
260
],
“id”: “8a77ddaa-ddff-4f5f-b2f6-0f04e423db5a”,
“name”: “Get Task Status”
},
{
“parameters”: {
“description”: “- This tool activates the AI Agent "Scraper", which sends a scraping request to Ft William based on user-provided data.\n - It requires the following input fields:\n - "ein" (string)\n - "plan_name" (string)\n - "documents" (array: one or both of "5500", "SAR")\n - "sign_5500" (boolean)\n - This tool returns confirmation that the scraping request was triggered.”,
“workflowId”: {
“__rl”: true,
“value”: “MGGA46oG0jL2mAl9”,
“mode”: “list”,
“cachedResultName”: “Operations — Scraper”
},
“workflowInputs”: {
“mappingMode”: “defineBelow”,
“value”: {},
“matchingColumns”: ,
“schema”: [
{
“id”: “ein”,
“displayName”: “ein”,
“required”: false,
“defaultMatch”: false,
“display”: true,
“canBeUsedToMatch”: true,
“type”: “string”,
“removed”: true
},
{
“id”: “plan_name”,
“displayName”: “plan_name”,
“required”: false,
“defaultMatch”: false,
“display”: true,
“canBeUsedToMatch”: true,
“type”: “string”,
“removed”: true
},
{
“id”: “documents”,
“displayName”: “documents”,
“required”: false,
“defaultMatch”: false,
“display”: true,
“canBeUsedToMatch”: true,
“type”: “array”,
“removed”: true
},
{
“id”: “sign_5500”,
“displayName”: “sign_5500”,
“required”: false,
“defaultMatch”: false,
“display”: true,
“canBeUsedToMatch”: true,
“type”: “boolean”,
“removed”: true
}
],
“attemptToConvertTypes”: false,
“convertFieldsToString”: false
}
},
“type”: “@n8n/n8n-nodes-langchain.toolWorkflow”,
“typeVersion”: 2.2,
“position”: [
300,
260
],
“id”: “70fc542f-abfc-499b-8bce-c7690e5d4c75”,
“name”: “Scraper”
},
{
“parameters”: {
“options”: {
“systemMessage”: “=name: Willy\ndescription: >\n You are Willy, an Orchestrator Agent responsible for managing the complete scraping and verification process of employee benefit plan documents (Form 5500 and SAR). Your job is to control other AI agents and tools in the correct order to ensure data is scraped and its status is properly retrieved.\n\n You must execute it step-by-step, following strict process logic, validation rules, and status transitions.\n\ntools:\n - name: Scraper Agent Tool\n description: >\n This tool activates the AI Agent "Scraper", which sends a scraping request to Ft William based on user-provided data.\n It requires the following input fields:\n - "ein" (string)\n - "plan_name" (string)\n - "documents" (array: one or both of "5500", "SAR")\n - "sign_5500" (boolean)\n This tool returns confirmation that the scraping request was triggered.\n\n - name: Get Task Status1\n description: >\n This tool is used to check the status of the web scraper task triggered by the Willy Agent.\n It must only be used after waiting at least 6 minutes following the completion of the Scraper Agent Tool.\n\nrules:\n - Step 1:\n description: >\n Trigger the "Scraper Agent Tool" with a valid input object.\n Wait until it finishes and returns an output.\n \n\n - Step 2:\n description: >\n Only after finishing Step 1 and get its final output, trigger the "Get Task Status1" tool to check the scraping task’s result.\n\noutput_requirements: >\n The only valid output from this workflow must come from the Get Task Status1 tool.\n\nenforcement:\n - Do not skip steps.\n - Do not modify the sequence.\n - Do not call any tool multiple times.\n - Do not guess or simulate outputs—always use the actual tool result.\n”
}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 2,
“position”: [
260,
0
],
“id”: “6b234c09-74c9-4cb6-9623-fb831b89b61d”,
“name”: “Willy AI Agent”
}
],
“connections”: {
“When chat message received”: {
“main”: [
[
{
“node”: “Willy AI Agent”,
“type”: “main”,
“index”: 0
}
]
]
},
“OpenAI Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “Willy AI Agent”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
},
“Simple Memory”: {
“ai_memory”: [
[
{
“node”: “Willy AI Agent”,
“type”: “ai_memory”,
“index”: 0
}
]
]
},
“Get Task Status”: {
“ai_tool”: [
[
{
“node”: “Willy AI Agent”,
“type”: “ai_tool”,
“index”: 0
}
]
]
},
“Scraper”: {
“ai_tool”: [
[
{
“node”: “Willy AI Agent”,
“type”: “ai_tool”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “eed34042b35968c8cd7b495d399304322844e764aac19edc0c0d383383415751”
}
}
Information on your n8n setup
self hosted

