Coordination
Agent teams: Router, Orchestrator, Parallel, Sub-Workflow, Debate, Message Hub, Sequential, and Voting.
Updated on Sep 02, 2026
Coordination cards organize multiple agents in a single workflow: routing, parallelizing, debating, and voting. Several of them accept static participants (defined in the modal) or dynamic ones (coming from a Start collection via {{collection.* | filters}}).
router · classifies and directsAn LLM classifier that reads the message and chooses one of the connected paths (route-N). Describe each route well — it's the decision criterion.
namestringpadrão: 'router'Node name (sanitized).
modelstringModel that decides the route. Empty = agent's default model.
routesobjectobrigatórioBy handle: `{target_node_id, target_name, description}` — the description guides the choice.
default_routestringRoute used when confidence falls below the threshold.
confidence_thresholdnumberpadrão: 0.7Minimum confidence to accept the model's decision.
include_historybooleanpadrão: trueConsider conversation history when routing (not just the last message).
routing_promptstringExtra routing instructions.
orchestrator · divides and delegatesBreaks the task into subtasks and delegates them to workers connected in slots, iterating until completion. Good for composite tasks ("research, compare, and write the report").
namestringpadrão: 'Orchestrator'Node name.
modelstringOrchestrator model.
orchestrator_promptstringHow to plan and divide the work.
worker_promptstringBase prompt applied to workers.
max_iterationsnumberpadrão: 10Maximum planning rounds.
worker_max_iterationsnumberpadrão: 10Maximum rounds for each worker.
parallel · simultaneous branchesFires the connected branches (branch-N) at the same time and aggregates the results. Also connects as a tool to an Agent — the model decides when to trigger parallelism. Each branch can receive its own variables.
namestringpadrão: 'parallel'Node name (sanitized).
instructionstringWhat each branch should do with the input.
branchesobjectobrigatórioBy handle: `{target_node_id, target_name, variables[]}` — variables injected into that branch.
aggregation_modeconcat | merge | first | votepadrão: concatHow to combine results: concatenate, merge, first to finish, or vote on the best.
wait_allbooleanpadrão: trueWait for all branches before aggregating.
timeout_secondsnumberWait timeout for branches.
sub_workflow · workflow within workflowExecutes another published agent as a step in this workflow, mapping variables on input and output.
namestringpadrão: 'Sub-Workflow'Node name.
sub_workflow_idstringobrigatórioThe agent to execute.
input_mappingobjectFrom local variable → sub-workflow variable.
output_mappingobjectFrom sub-workflow variable → local variable, on return.
debate · conflicting perspectivesMultiple agents discuss a topic in rounds, each seeing previous statements, with synthesis at the end. Static participants in the modal or dynamic ones from a collection.
namestringpadrão: 'debate'Node name (sanitized).
debate_topicstringobrigatórioThe theme. Accepts `{{variables}}` (e.g., `Analyze the case: {{case}}`)
max_roundsnumberpadrão: 3Discussion rounds.
consensus_thresholdnumberpadrão: 0.7Agreement level that ends the debate before the ceiling.
moderator_promptstringModerator instructions/synthesis.
agent_behaviorstringBehavior guideline attached to all participants.
debate_agents{name, system_prompt}[]Static mode: the participants and their personas.
debate_agents_sourcestringDynamic mode: source `{{collection.* | filters}}`.
agent_name_fieldstringpadrão: nameItem field that gives the participant's name (dynamic).
agent_prompt_templatestringPersona template with `{{fields}}` from the item (dynamic).
msg_hub · private conversationCreates a channel where only the listed participants see each other's messages — parallel conversations invisible to the rest of the workflow (the AgentScope MsgHub standard).
namestringpadrão: 'Msg Hub'Node name.
hub_idstringpadrão: geradoChannel identifier.
participantsstring[]obrigatórioNames of the agents who participate.
announcementstringOpening message announced in the channel.
inherit_parent_hubbooleanpadrão: falseParticipants see messages from the parent channel.
share_to_parentbooleanpadrão: falseMessages from this channel go up to the parent channel.
sequential · one after anotherExecutes a queue of agents in order, each able to see what the previous ones produced. Static participants (with model per participant) or dynamic from a collection, with filters and model mapping.
namestringpadrão: 'sequencia'Node name (sanitized).
source_modedynamic | staticobrigatórioWhere the participants come from.
pass_contextbooleanpadrão: trueEach participant sees the responses of the previous ones.
agent_behaviorstringGuideline common to all.
static_participants{id, name, instructions, model?}[]Static mode: the queue, with persona and model optional per participant.
agents_sourcestringDynamic mode: source `{{collection.* | filters}}`.
agent_name_fieldstringpadrão: nameItem field that gives the name (dynamic).
agent_prompt_templatestringPersona template with `{{fields}}` from the item (dynamic).
model_mapping / default_modelobject / stringModel per participant and fallback (dynamic).
filters{field, operator, value}[]Filters the collection items (`equals`, `contains`, `not_equals`).
max_participantsnumberCeiling of participants per execution.
vote · collective decisionEach voter chooses in secret among the options; the result comes out with count, winner and majority. The on_result saves the winner back to a variable or collection — this is what closes the loop with While and If/Else.
namestringpadrão: 'vote'Node name (sanitized).
vote_promptstringpadrão: 'Cast your vote.'The voting instruction. Accepts `{{variables}}`.
vote_agentsstring[]Static mode: the voters.
vote_agents_sourcestringDynamic mode: `{{collection.* | filters}}` or `{{on-debate.participants.*}}` to reuse participants from a Debate.
voter_id_field / voter_name_fieldstringpadrão: id / nameItem fields that give the voter's id and name (dynamic).
voter_prompt_templatestringVoter persona with `{{fields}}` from the item; without template, the item's `instructions` field becomes the persona.
vote_optionsstring[]Static mode: the options.
vote_options_sourcestringDynamic mode: options from collection (`option_value_field`/`option_label_field`).
exclude_selfbooleanVoter cannot vote for themselves (dynamic options).
require_majoritybooleanpadrão: falseRequires absolute majority to declare a winner.
allow_abstainbooleanpadrão: falseAllows abstention.
on_resultobject`{update_collection, match_field, update_field, update_value}` — records the winner. If the target is an object variable (e.g., `votes`), increments the winner's key.
on_tieobject`{action: none | revote | random, max_retries, reduce_options, fallback}` — what to do in case of a tie.
agent_behaviorstringCommon guideline for voters.
The jury standard
Debate + Voting + While: jurors debate (debate-jur), vote (vote_agents_source: {{debate-jur.participants.*}}), the on_result increments {{votes}} and the While decides if there is a new round ({{votes.guilty}} < 2 AND ...). It is exactly the "Jury Trial" template from the platform.

