Lesson 2 · Domain 1 — Agentic Architecture & Orchestration (27% of exam)
Lesson 1 gave you the loop a single agent runs. Multi-agent systems are just that loop, run by several agents at once — but only if you get the wiring between them right. The exam tests this wiring, not the loop itself, at this level.
A coordinator agent owns every inter-subagent communication: it decomposes the task, delegates to subagents, and aggregates their results. Subagents never talk to each other directly — everything routes through the hub. This isn't a style preference; it's what gives you observability, consistent error handling, and a single place to control information flow.
The part that catches people out: subagents don't automatically inherit the coordinator's conversation history. Each one starts with isolated context. Whatever it needs — prior findings, source data, constraints — has to be handed to it explicitly, in the prompt, when it's spawned.
The Task tool is the spawning mechanism. A coordinator needs "Task" in its own allowedTools before it can invoke subagents at all. Each subagent type is configured through an AgentDefinition — a description, its own system prompt, and its own tool restrictions, independent of the coordinator's.
// Coordinator turn: spawn two research subagents in parallel.
// Both Task calls appear in ONE assistant turn — that's what "parallel" means here,
// not two sequential turns.
const musicResearch = {
type: "tool_use" as const,
name: "Task",
input: {
subagent_type: "web-search",
description: "Research AI adoption in music production",
prompt: `Research how AI is used in music production and distribution.
Return findings as an array of { claim: string; source: string; date: string }.`,
},
};
const filmResearch = {
type: "tool_use" as const,
name: "Task",
input: {
subagent_type: "web-search",
description: "Research AI adoption in film production",
prompt: `Research how AI is used in film production and post-production.
Return findings as an array of { claim: string; source: string; date: string }.`,
},
};
Notice each prompt is self-contained — a full brief with its own scope and expected return shape, not "continue what we were doing." That's the explicit-context-passing requirement in practice.
The official exam guide's own sample question makes the point precisely: a coordinator researching "the impact of AI on creative industries" decomposes the topic into digital art, graphic design, and photography — three visual-arts subtasks. Every subagent executes flawlessly. The final report still completely misses music, writing, and film.
The subagents aren't the problem. The coordinator's task decomposition was too narrow, and no downstream agent can recover coverage the coordinator never assigned. This is a distinct failure mode from "a subagent did its job badly" — the exam wants you to tell the two apart.
Every multi-agent system you'll design — the customer support agent, the research pipeline, the CI reviewer — is hub-and-spoke underneath. Getting decomposition scope right at the coordinator is a design decision made once, up front; getting it wrong is invisible until you notice a whole category of output is missing.
Primary source: Anthropic's Agent SDK overview covers subagent configuration and the Task tool directly — this lesson compresses Task Statements 1.2 and 1.3 from the official exam guide.
Want to see how AgentDefinition tool restrictions compare to what you configured for the coordinator itself? Just ask.