Hello,
I’m setting up a multi-agent translation workflow where a coordinator agent needs to delegate translation tasks to multiple specialized translator agents. I’m encountering an issue where my translator workflows aren’t being triggered by the multi-agent.
My Current Setup
Main Workflow
-
A multi-agent coordinator that analyzes translation chunks and should route them to 5 different translator workflows
-
5 “Call n8n Agent” tools connected to the coordinator
-
Each “Call n8n Agent” tool is configured with a description like this:
-
INPUT (parameter tool_use)
↳ Pass the entire JSON object exactly as received from the coordinator.
↳ Do not extract or modify the nested structure.
↳ Expected format:
{
“content”: [
{ “type”: “text”, “text”: “…” },
{
“type”: “tool_use”,
“id”: “toolu_auto_X”,
“name”: “translator_X”,
“input”: { “chunkData”: {…} }
}
],
“stop_reason”: “tool_use”
} -
EXTRACTS DATA FROM
Will access the full chunk object from:
tool_use[0].parameters.chunkData
Translator Workflows
- Each starts with a “When Executed by Another Workflow” trigger
- Trigger is set to “Accept all data” to receive the full JSON object
- Linked to the correct workflow ID in the Call n8n Agent tool
- Contains a Translator AI agent that should process the chunk
Multi-Agent Configuration
*** User message includes:**
Role: Project Manager
Scope: Kick-off of a multi-topic English-to-Thai translation (1 – 25+ topics)
──────────────── INPUT OBJECT ────────────────
Each incoming item has at minimum:
- processType : “translation”
- chunkType : “metadata” | “topic”
- CHUNK DATA : { … } ← full source text & fields
- ANALYSIS DATA : { … } ← script-analysis payload
- chunkNumber : integer (position)
- totalChunks : integer
- isFirst / isLast : booleans
- topicNumber : integer (only when chunkType = “topic”)
──────────────── YOUR TASKS ────────────────
-
Scope – Read metadata to learn
totalChunks
. -
Plan - Create round-robin schedule for translator tools:
Call n8n Agent Translator1
Call n8n Agent Translator2
Call n8n Agent Translator3
Call n8n Agent Translator4
Call n8n Agent Translator5 -
Assign - For each chunk:
• Select translatorId based on round-robin (1→2→3→4→5→1…)
• Generate tool_use JSON response
• Include complete chunk data to be processed by selected translator -
Track - Maintain assignment records internally
──────────────── REQUIRED RESPONSE FORMAT ────────────────
For every assignment return a raw JSON object (no Markdown) that looks exactly like this:
{
“content”: [
{ “type”: “text”,
“text”: “Chunk {{chunkNumber}} of {{totalChunks}} → {{translatorId}}”
},
{
“content”: [
{
“type”: “tool_use”,
“name”: “Call n8n Agent Translator1”, // Use exactly the tool name as shown above
“id”: “tool_call_1”,
“input”: { “chunkData”: {{FULL_CHUNK_OBJECT}} }
}
]
}
Do NOT alter {{FULL_CHUNK_OBJECT}}
; forward it byte-for-byte.
──────────────── AFTER FIRST CHUNK ────────────────
Once you process the first item:
- Emit the assignment as above.
- Then send a second message that confirms detected project parameters (e.g., “9 chunks total; metadata processed; ready to coordinate”) and shows your internal distribution plan in JSON:
- translatorId
- chunkNumbers assigned (array)
- status = “pending”
──────────────── CONSTRAINTS ────────────────
- Never split a topic between translators.
- Continue round-robin 1 → 2 → 3 → 4 → 5 → 1 … adapting if fewer than 5 translators remain idle.
- Always acknowledge which translator received which chunk.
(Reference placeholders you may need in templating engines)
Chunk DATA : {{ JSON.stringify($json[‘CHUNK DATA’]) }}
Analysis DATA : {{ $json[‘ANALYSIS DATA’] }}
System message includes instructions to:
You are the Translation-Coordinator Agent for an English➔Thai YouTube-script project.
───────── WHAT YOU RECEIVE ─────────
Each incoming message is a single JSON object with, at minimum:
• processType, chunkType, chunkNumber, totalChunks, isFirst, isLast
• “CHUNK DATA” – original script payload (object)
• “ANALYSIS DATA” – script-analysis markdown (string)
───────── YOUR JOB ─────────
-
Analyze – read the metadata to learn totalChunks & sequence.
-
Schedule - Assign chunks to five translator tools in round-robin sequence:
Call n8n Agent Translator1
Call n8n Agent Translator2
Call n8n Agent Translator3
Call n8n Agent Translator4
Call n8n Agent Translator5 -
Dispatch – for every chunk, emit a raw JSON response:
{
“content”: [
{ “type”: “text”,
“text”: “Chunk {{chunkNumber}} of {{totalChunks}} → {{translatorId}}”
},
{
“content”: [
{
“type”: “tool_use”,
“name”: “Call n8n Agent Translator1”, // Use exactly the tool name as shown above
“id”: “tool_call_1”,
“input”: { “chunkData”: {{FULL_CHUNK_OBJECT}} }
}
]
}
Do NOT alter {{FULL_CHUNK_OBJECT}}
.
4. Track assignments internally (translator chunk numbers).
5. After the first tool call send a follow-up text message
confirming project scope and showing your distribution plan:
{
"plan":[
{"translatorId":"translator_1","chunks":[1,6,11], "status":"pending"},
…
]
}
The Problem
The coordinator appears to process the input data correctly, but the Call n8n Agent tools never get executed (no green checkmarks appear on the tools in the workflow diagram).
I believe my setup is correct:
Translator workflows start with "When Executed by Another Workflow" triggers
Call n8n Agent tools have detailed descriptions of the expected format
Both trigger and tool configurations accept all data without transformation
What I've Already Tried
Checked that "Accept all data" is enabled in the trigger
Confirmed the workflows are active and properly saved
What could be preventing the multi-agent from successfully calling these translator tools? Is there a specific format requirement I'm missing?
Cheer,