{
  "name": "close_all_children",
  "description": "Soft-close every direct child of this coordinator. Fans out close requests with bounded concurrency. Returns `{status, closed, failed, skipped}`. `skipped` holds 404s — covers both already-hard-deleted children (row purged) AND already-closed children whose in-memory session was evicted (row remains marked `state=closed`); the wire shape doesn't distinguish, so treat `skipped` as \"nothing to close\" rather than \"definitely deleted\". `failed` holds dispatch errors worth retrying. Indirect descendants (children of children) are NOT closed — run `stop_cascade` from the operator UI for a full-subtree teardown. The optional `reason` is propagated to every closed child's audit + workstream_config for postmortem (max 512 chars; over the cap returns a tool error).",
  "parameters": {
    "type": "object",
    "properties": {
      "reason": {
        "type": "string",
        "maxLength": 512,
        "description": "Optional human-readable reason (max 512 chars) — propagated to every closed child's audit + workstream_config for postmortem."
      }
    },
    "required": []
  },
  "coordinator": true,
  "primary_key": "reason"
}
