MCP Task Orchestrator · Field guidePlate 3 of 9
Items nest inside parents and block one another through dependency edges. The server refuses to start an item whose blockers are unfinished, and it moves parents on its own when their children move.
Click an item to advance it: queue to work, work to terminal, terminal back to queue with reopen. Thick arrows are BLOCKS edges. The frame is the parent.
When a child enters work, a parent still in queue moves to work. One level up only, and skipped if the parent's own gate is not satisfied.
When the last child reaches terminal, the parent reaches terminal too, and the check repeats up the ancestor chain.
Reopening a child under a terminal parent sends that parent back to work. One level up only.
Each cascade is listed in the cascadeEvents of the response, with no actor, because the system made it. A schema's lifecycle tunes the terminal cascade: AUTO (default) cascades, MANUAL waits for an explicit completion, PERMANENT never auto-terminates.
create_work_tree(
root={ "title": "User Authentication" },
children=[
{ "ref": "schema", "title": "Database schema" },
{ "ref": "api", "title": "Login API" },
{ "ref": "tokens", "title": "Session tokens" },
{ "ref": "tests", "title": "Integration tests" }
],
deps=[
{ "from": "schema", "to": "api" },
{ "from": "schema", "to": "tokens" },
{ "from": "api", "to": "tests" },
{ "from": "tokens", "to": "tests" }
]
)
The hierarchy and its edges are created atomically, so agents never work against a half-built plan. complete_tree is the mirror image: it completes a root and its descendants in topological order.
| Edge type | Meaning |
|---|---|
BLOCKS | The target cannot start until the source reaches the threshold. The default. |
IS_BLOCKED_BY | The same ordering, written from the other end. |
RELATES_TO | A link with no ordering constraint. |
pattern="linear" itemIds=[A, B, C]
pattern="fan-out" fromItemId=A, toItemIds=[B, C, D]
pattern="fan-in" fromItemIds=[A, B], toItemId=C
unblockAt | The edge is satisfied when the blocker reaches |
|---|---|
| queue | any role, so immediately |
| work | work, review or terminal |
| review | review or terminal |
| terminal | terminal (the default) |
An earlier threshold lets downstream work begin while the blocker is still in review, for example building against an API whose shape is settled.