MCP Task Orchestrator · Field guidePlate 3 of 9

A work breakdown the server keeps in order

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.

Run a feature through the graph

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.

User Authentication queue Database schemaqueue Login APIqueue Session tokensqueue Integration testsqueue
A dashed red outline marks an item that is still in queue because a blocker has not reached terminal. An arrow fades once its blocker is done.

Server says

Three cascades happen without a call

Start cascade

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.

Terminal cascade

When the last child reaches terminal, the parent reaches terminal too, and the check repeats up the ancestor chain.

Reopen cascade

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.

Build the whole tree in one call

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 typeMeaning
BLOCKSThe target cannot start until the source reaches the threshold. The default.
IS_BLOCKED_BYThe same ordering, written from the other end.
RELATES_TOA link with no ordering constraint.

Dependency shortcuts

A B C

linear

pattern="linear"
itemIds=[A, B, C]
A B C D

fan-out

pattern="fan-out"
fromItemId=A, toItemIds=[B, C, D]
A B C

fan-in

pattern="fan-in"
fromItemIds=[A, B], toItemId=C
unblockAtThe edge is satisfied when the blocker reaches
queueany role, so immediately
workwork, review or terminal
reviewreview or terminal
terminalterminal (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.