Agent Team API
Endpoints
GET /agent-team/templates
Returns loaded agent templates.
GET /agent-team/instances
Query params:
missionID(optional)parentInstanceID(optional)status(optional:queued|running|completed|failed|cancelled)
GET /agent-team/missions
Returns mission-level rollups across instances:
instanceCountrunningCountcompletedCountfailedCountcancelledCountqueuedCounttokenUsedTotaltoolCallsUsedTotalstepsUsedTotalcostUsedUsdTotal
GET /agent-team/approvals
Returns:
spawnApprovals: queued spawn approvals (request-only edges / approval-required paths)toolApprovals: pending permission requests scoped to agent-team sessions
POST /agent-team/spawn
Request body:
{ "missionID": "m1", "parentInstanceID": "ins_parent", "templateID": "worker-default", "role": "worker", "source": "ui_action", "justification": "Implement focused task", "budget_override": { "max_tokens": 8000, "max_steps": 4, "max_tool_calls": 10, "max_duration_ms": 240000, "max_cost_usd": 1.25 }}Success response:
{ "ok": true, "missionID": "m1", "instanceID": "ins_...", "sessionID": "ses_...", "runID": null, "status": "running", "skillHash": "sha256:..."}Error response:
{ "ok": false, "code": "spawn_policy_missing", "error": "spawn policy file missing", "requiresUserApproval": false}If policy requires user approval, response shape is still 200 with:
{ "ok": false, "code": "spawn_requires_approval", "requiresUserApproval": true}Tool-driven spawn (spawn_agent)
spawn_agent uses the same server-side policy/runtime gate as POST /agent-team/spawn.
Invoke it through a session prompt:
/tool spawn_agent {"missionID":"m1","role":"worker","templateID":"worker-default","source":"tool_call","justification":"parallelize implementation"}Tool response metadata shape:
{ "ok": true, "missionID": "m1", "instanceID": "ins_...", "sessionID": "ses_...", "runID": null, "status": "running", "skillHash": "sha256:..."}POST /agent-team/instance/{id}/cancel
Request body:
{ "reason": "manual stop"}POST /agent-team/approvals/spawn/{id}/approve
Request body:
{ "reason": "approved from command center"}Response:
{ "ok": true, "approvalID": "appr_...", "decision": "approved", "instanceID": "ins_...", "missionID": "m1", "status": "running"}POST /agent-team/approvals/spawn/{id}/deny
Request body:
{ "reason": "not aligned with mission scope"}Response:
{ "ok": true, "approvalID": "appr_...", "decision": "denied", "reason": "not aligned with mission scope"}Response:
{ "ok": true, "instanceID": "ins_...", "sessionID": "ses_...", "status": "cancelled"}POST /agent-team/mission/{id}/cancel
Request body:
{ "reason": "stop all mission agents"}Response:
{ "ok": true, "missionID": "m1", "cancelledInstances": 3}POST /mission/{id}/event (orchestrator bridge fields)
When mission runtime bridge is active, mission event responses include additive fields:
orchestratorSpawns: spawn results triggered bymission_startedorchestratorCancellations: cancellation summary triggered bymission_canceled