@cleocode/contracts 2026.5.134 → 2026.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/__tests__/operations-registry.test.js +13 -0
  2. package/dist/__tests__/operations-registry.test.js.map +1 -1
  3. package/dist/__tests__/skill-executor-contract.test.d.ts +14 -0
  4. package/dist/__tests__/skill-executor-contract.test.d.ts.map +1 -0
  5. package/dist/__tests__/skill-executor-contract.test.js +85 -0
  6. package/dist/__tests__/skill-executor-contract.test.js.map +1 -0
  7. package/dist/agent-registry.d.ts +1 -3
  8. package/dist/agent-registry.d.ts.map +1 -1
  9. package/dist/backup-manifest.d.ts +1 -1
  10. package/dist/brain-graph.d.ts +2 -2
  11. package/dist/brain-graph.d.ts.map +1 -1
  12. package/dist/config.d.ts +71 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/db-inventory.json +4 -4
  15. package/dist/dispatch/operations-registry.d.ts.map +1 -1
  16. package/dist/dispatch/operations-registry.js +44 -0
  17. package/dist/dispatch/operations-registry.js.map +1 -1
  18. package/dist/exit-codes.d.ts +20 -1
  19. package/dist/exit-codes.d.ts.map +1 -1
  20. package/dist/exit-codes.js +19 -0
  21. package/dist/exit-codes.js.map +1 -1
  22. package/dist/index.d.ts +4 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/migration-parity.d.ts +174 -0
  27. package/dist/migration-parity.d.ts.map +1 -0
  28. package/dist/migration-parity.js +39 -0
  29. package/dist/migration-parity.js.map +1 -0
  30. package/dist/operations/admin.d.ts +4 -2
  31. package/dist/operations/admin.d.ts.map +1 -1
  32. package/dist/operations/brain.d.ts +2 -2
  33. package/dist/operations/brain.d.ts.map +1 -1
  34. package/dist/operations/llm.d.ts +6 -3
  35. package/dist/operations/llm.d.ts.map +1 -1
  36. package/dist/operations/session.d.ts +17 -0
  37. package/dist/operations/session.d.ts.map +1 -1
  38. package/dist/operations/tasks.d.ts +10 -0
  39. package/dist/operations/tasks.d.ts.map +1 -1
  40. package/dist/operations/tasks.js.map +1 -1
  41. package/dist/sub-accessors.d.ts +4 -4
  42. package/dist/sub-accessors.d.ts.map +1 -1
  43. package/dist/sub-accessors.js +1 -1
  44. package/dist/tools/skill-executor.d.ts +156 -0
  45. package/dist/tools/skill-executor.d.ts.map +1 -0
  46. package/dist/tools/skill-executor.js +47 -0
  47. package/dist/tools/skill-executor.js.map +1 -0
  48. package/package.json +6 -2
  49. package/src/__tests__/__snapshots__/operations-registry.test.ts.snap +1 -1
  50. package/src/__tests__/operations-registry.test.ts +14 -0
  51. package/src/__tests__/skill-executor-contract.test.ts +104 -0
  52. package/src/agent-registry.ts +1 -3
  53. package/src/backup-manifest.ts +1 -1
  54. package/src/brain-graph.ts +2 -2
  55. package/src/config.ts +73 -1
  56. package/src/db-inventory.json +4 -4
  57. package/src/dispatch/operations-registry.ts +45 -0
  58. package/src/exit-codes.ts +20 -0
  59. package/src/index.ts +11 -1
  60. package/src/migration-parity.ts +178 -0
  61. package/src/operations/admin.ts +4 -2
  62. package/src/operations/brain.ts +2 -2
  63. package/src/operations/llm.ts +12 -4
  64. package/src/operations/session.ts +17 -0
  65. package/src/operations/tasks.ts +10 -0
  66. package/src/sub-accessors.ts +5 -5
  67. package/src/tools/skill-executor.ts +183 -0
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`operations-registry > OPERATIONS snapshot — zero behavior change across relocation 1`] = `"[{"gateway":"query","domain":"tasks","operation":"show","description":"tasks.show (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"ID of the task to retrieve","cli":{"positional":true}},{"name":"history","type":"boolean","required":false,"description":"Include lifecycle stage history in the response"},{"name":"ivtr-history","type":"boolean","required":false,"description":"Include IVTR phase chain history in the response"},{"name":"relations","type":"boolean","required":false,"description":"Expand relation/doc lists while preserving compact MVI counts"}]},{"gateway":"query","domain":"tasks","operation":"traverse","description":"tasks.traverse (query) — WorkGraph traversal from a task root","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId","direction"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the traversal","cli":{"positional":true}},{"name":"direction","type":"string","required":true,"description":"Traversal direction to project from the root task","enum":["ancestors","descendants","upstream","downstream"]},{"name":"maxDepth","type":"number","required":false,"description":"Maximum traversal depth to include"},{"name":"includeRelations","type":"boolean","required":false,"description":"Include non-containment relation edges"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return"}]},{"gateway":"query","domain":"tasks","operation":"tree","description":"tasks.tree (query) — WorkGraph containment tree projection","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the tree projection","cli":{"positional":true}},{"name":"maxDepth","type":"number","required":false,"description":"Maximum containment depth to include"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return"}]},{"gateway":"query","domain":"tasks","operation":"rollup","description":"tasks.rollup (query) — WorkGraph direct and subtree status/type summary","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the rollup","cli":{"positional":true}},{"name":"expectedDirectRollup","type":"string","required":false,"description":"Optional serialized expected direct rollup for stale-projection diagnostics"}]},{"gateway":"query","domain":"tasks","operation":"frontier","description":"tasks.frontier (query) — WorkGraph ready and blocked frontier under a root","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the frontier","cli":{"positional":true}},{"name":"role","type":"string","required":false,"description":"Optional assignee/role lane filter"}]},{"gateway":"query","domain":"tasks","operation":"workgraph.audit","description":"tasks.workgraph.audit (query) — aggregate WorkGraph hierarchy/traversal/frontier/rollup diagnostics","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the WorkGraph audit","cli":{"positional":true}},{"name":"maxDepth","type":"number","required":false,"description":"Maximum descendant depth to include in audit projections"},{"name":"includeRelations","type":"boolean","required":false,"description":"Include relation-edge diagnostics in the audit result"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return in paginated audit projections"}]},{"gateway":"query","domain":"tasks","operation":"list","description":"tasks.list (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"parent","type":"string","required":false,"description":"Filter by parent task ID"},{"name":"status","type":"string","required":false,"description":"Filter by task status"},{"name":"priority","type":"string","required":false,"description":"Filter by task priority"},{"name":"type","type":"string","required":false,"description":"Filter by task type"},{"name":"phase","type":"string","required":false,"description":"Filter by task phase"},{"name":"label","type":"string","required":false,"description":"Filter by task label"},{"name":"children","type":"boolean","required":false,"description":"Limit parent queries to direct children"},{"name":"limit","type":"number","required":false,"description":"Maximum number of tasks to return"},{"name":"offset","type":"number","required":false,"description":"Number of filtered tasks to skip"},{"name":"compact","type":"boolean","required":false,"description":"Deprecated: request compact task rows for compatibility"}]},{"gateway":"query","domain":"tasks","operation":"find","description":"tasks.find (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"tree","description":"tasks.tree (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"blockers","description":"tasks.blockers (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"depends","description":"tasks.depends (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"deps.validate","description":"tasks.deps.validate (query) — validate dependency graph integrity for an epic or all tasks","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"epicId","type":"string","required":false,"description":"Scope validation to direct children of this epic (optional)"},{"name":"scope","type":"string","required":false,"description":"Which tasks to include: 'all', 'open', or 'critical' (default: 'all')"}]},{"gateway":"query","domain":"tasks","operation":"deps.tree","description":"tasks.deps.tree (query) — render dependency tree for an epic in text, mermaid, or json format","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to visualize (required)"},{"name":"format","type":"string","required":false,"description":"Output format: 'text', 'mermaid', or 'json' (default: 'text')"}]},{"gateway":"query","domain":"tasks","operation":"analyze","description":"tasks.analyze (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"impact","description":"tasks.impact (query) — predict downstream effects of a free-text change description using keyword matching and reverse dependency graph traversal","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["change"],"params":[{"name":"change","type":"string","required":true,"description":"Free-text description of the proposed change (e.g. \\"Modify authentication flow\\")"},{"name":"matchLimit","type":"number","required":false,"description":"Maximum number of seed tasks to match by keyword (default: 5)"}]},{"gateway":"query","domain":"tasks","operation":"next","description":"tasks.next (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"plan","description":"Composite planning view with in-progress epics, ready tasks, blocked tasks, and open bugs (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"completion.list","description":"tasks.completion.list (query) — list typed completion criteria results","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to list completion criteria for","cli":{"positional":true}},{"name":"status","type":"string","required":false,"description":"Optional criterion status filter","enum":["satisfied","unsatisfied","waived","replaced"]},{"name":"kind","type":"string","required":false,"description":"Optional criterion kind filter","enum":["text","evidence_bound","child_task"]}]},{"gateway":"query","domain":"tasks","operation":"completion.evaluate","description":"tasks.completion.evaluate (query) — evaluate completion readiness with typed AC results","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to evaluate completion readiness for","cli":{"positional":true}},{"name":"includeContext","type":"boolean","required":false,"description":"Include bounded audit context pack"},{"name":"limit","type":"number","required":false,"description":"Maximum audit context events when context is included"},{"name":"since","type":"string","required":false,"description":"Lower ISO timestamp bound for audit context"},{"name":"relationDepth","type":"number","required":false,"description":"Related-task audit context depth"}]},{"gateway":"query","domain":"tasks","operation":"completion.explain","description":"tasks.completion.explain (query) — explain completion blockers and stale state","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to explain completion readiness for","cli":{"positional":true}},{"name":"includeContext","type":"boolean","required":false,"description":"Include bounded audit context pack"},{"name":"limit","type":"number","required":false,"description":"Maximum audit context events when context is included"},{"name":"since","type":"string","required":false,"description":"Lower ISO timestamp bound for audit context"},{"name":"relationDepth","type":"number","required":false,"description":"Related-task audit context depth"}]},{"gateway":"mutate","domain":"tasks","operation":"projection.repair","description":"tasks.projection.repair (mutate) — repair stale completion projection state with typed errors","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose completion projection should be repaired","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Preview repair actions without writing projection state"}]},{"gateway":"query","domain":"tasks","operation":"relates","description":"tasks.relates (query) — absorbs relates.find via mode param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"complexity.estimate","description":"tasks.complexity.estimate (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"history","description":"Show task work history (time tracked per task)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"current","description":"tasks.current (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"label.list","description":"List all labels with task counts","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"status","description":"session.status (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"list","description":"session.list (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"status","type":"string","required":false,"description":"Filter by session status"},{"name":"active","type":"boolean","required":false,"description":"Legacy active-session filter"},{"name":"limit","type":"number","required":false,"description":"Maximum sessions to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many sessions before returning results"}]},{"gateway":"query","domain":"session","operation":"show","description":"session.show (query) — absorbs debrief.show via include param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"decision.log","description":"session.decision.log (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"context.drift","description":"session.context.drift (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"handoff.show","description":"session.handoff.show - Show handoff data from the most recent ended session (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"briefing.show","description":"session.briefing.show - Composite session-start context (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"find","description":"session.find (query) — lightweight session discovery","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"lint","description":"session.lint (query) — agent-accountability harness: flag raw-md writes to canonical doc paths in a transcript (T9797)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["transcript"],"params":[{"name":"transcript","type":"string","required":true,"description":"Absolute path to the *.jsonl session transcript to lint"}]},{"gateway":"query","domain":"orchestrate","operation":"status","description":"orchestrate.status (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"ivtr.status","description":"orchestrate.ivtr.status (query) — current IVTR phase + history","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.start","description":"orchestrate.ivtr.start (mutate) — begin Implement phase","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.next","description":"orchestrate.ivtr.next (mutate) — advance to next phase (requires prior evidence)","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.release","description":"orchestrate.ivtr.release (mutate) — final gate, requires I+V+T evidence","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.loop-back","description":"orchestrate.ivtr.loop-back (mutate) — rewind to phase on failure","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId","phase","reason"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"phase","type":"string","required":true,"description":"phase parameter"},{"name":"reason","type":"string","required":true,"description":"reason parameter"}]},{"gateway":"query","domain":"orchestrate","operation":"next","description":"orchestrate.next (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"ready","description":"orchestrate.ready (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"analyze","description":"orchestrate.analyze (query) — absorbs critical.path via mode param; Wave 7a adds mode=\\"parallel-safety\\"","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"epicId","type":"string","required":false,"description":"Epic ID for standard analysis (required unless mode=critical-path or parallel-safety)"},{"name":"mode","type":"string","required":false,"description":"Analysis mode: omit for standard analysis, \\"critical-path\\" for CPM, \\"parallel-safety\\" for dep-graph grouping"},{"name":"taskIds","type":"array","required":false,"description":"Task ID list for mode=\\"parallel-safety\\" — returns {parallelSafe, groups} dep-graph analysis"}]},{"gateway":"query","domain":"orchestrate","operation":"context","description":"orchestrate.context (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"waves","description":"orchestrate.waves (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"report","description":"orchestrate.report (query) — grouped readiness report: ready, blocked, blockedBy, gate-blocked, invalid (T10631)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to generate the report for","cli":{"positional":true}},{"name":"page","type":"number","required":false,"description":"Page number for paginated output (1-indexed, default 1)"},{"name":"pageSize","type":"number","required":false,"description":"Page size for paginated output (default 50, max 200)"}]},{"gateway":"query","domain":"orchestrate","operation":"plan","description":"orchestrate.plan (query) — deterministic wave+worker plan (T889)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to emit a plan for","cli":{"positional":true}},{"name":"preferTier","type":"number","required":false,"description":"Preferred resolver tier (0=project, 1=global, 2=packaged)"}]},{"gateway":"query","domain":"orchestrate","operation":"bootstrap","description":"orchestrate.bootstrap (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"unblock.opportunities","description":"orchestrate.unblock.opportunities (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"find","description":"memory.find (query) — cross-table brain.db FTS5 search","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"agent","type":"string","required":false,"description":"Filter results to observations produced by the named agent (T418 mental models)","cli":{"flag":"--agent <name>"}}]},{"gateway":"query","domain":"memory","operation":"timeline","description":"memory.timeline (query) — chronological context around anchor","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["anchor"],"params":[{"name":"anchor","type":"string","required":true,"description":"anchor parameter"}]},{"gateway":"query","domain":"memory","operation":"fetch","description":"memory.fetch (query) — batch fetch brain entries by IDs","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["ids"],"params":[{"name":"ids","type":"string","required":true,"description":"ids parameter"}]},{"gateway":"query","domain":"memory","operation":"decision.find","description":"memory.decision.find (query) — search decisions in brain.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"pattern.find","description":"memory.pattern.find (query) — search BRAIN pattern memory by type, impact, or keyword","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"learning.find","description":"memory.learning.find (query) — search BRAIN learning memory by confidence, actionability, or keyword","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"graph.show","description":"memory.graph.show (query) — get a PageIndex graph node and its edges","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.neighbors","description":"memory.graph.neighbors (query) — get neighbor nodes from the PageIndex graph","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.trace","description":"memory.graph.trace (query) — BFS traversal from a seed node via recursive CTE (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.related","description":"memory.graph.related (query) — 1-hop typed neighbours of a brain graph node (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.context","description":"memory.graph.context (query) — 360-degree context view: node + all edges + neighbours (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.stats","description":"memory.graph.stats (query) — aggregate node and edge counts by type (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"reason.why","description":"memory.reason.why (query) — causal trace through task dependency chains","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"reason.similar","description":"memory.reason.similar (query) — find semantically similar brain entries","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"search.hybrid","description":"memory.search.hybrid (query) — hybrid search across FTS5, vector, and graph","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"stage.validate","description":"pipeline.stage.validate (query) — absorbs stage.prerequisites in response","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.status","description":"pipeline.stage.status (query) — absorbs stage.gates via include param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.history","description":"pipeline.stage.history (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.guidance","description":"pipeline.stage.guidance (query) — stage-aware LLM prompt guidance (Phase 2). Pi extensions shell out to this on before_agent_start.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"phase.show","description":"Show phase details by slug or current phase (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"phaseId","type":"string","required":false,"description":"Phase slug (omit for current phase)"}]},{"gateway":"query","domain":"pipeline","operation":"phase.list","description":"List all phases with status and task counts (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"manifest.show","description":"pipeline.manifest.show (query) — get manifest entry by ID","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"manifest.list","description":"pipeline.manifest.list (query) — list manifest entries with filters","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"manifest.find","description":"pipeline.manifest.find (query) — search manifest entries by text","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"manifest.stats","description":"pipeline.manifest.stats (query) — manifest statistics","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"chain.show","description":"pipeline.chain.show (query) — get chain definition by ID","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["chainId"],"params":[{"name":"chainId","type":"string","required":true,"description":"chainId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"chain.list","description":"pipeline.chain.list (query) — list all chain definitions","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"schema","description":"check.schema (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["type"],"params":[{"name":"type","type":"string","required":true,"description":"Schema type to validate (todo, config, archive, log, sessions)","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"protocol","description":"check.protocol (query) — absorbs all protocol.* ops via protocolType param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"task","description":"check.task (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"manifest","description":"check.manifest (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"output","description":"check.output (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"compliance.summary","description":"check.compliance.summary (query) — absorbs compliance.violations via detail param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"test","description":"check.test (query) — combined test status and coverage via format param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"test.coverage","description":"check.test.coverage (query) — dedicated test coverage sub-op (T1434)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"coherence","description":"check.coherence (query) — renamed from coherence.check (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"gate.status","description":"check.gate.status (query) — read-only gate state; split from gate.verify (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"archive.stats","description":"check.archive.stats (query) — archive analytics; moved from admin (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"grade","description":"check.grade (query) — grade agent behavioral session; moved from admin (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["sessionId"],"params":[{"name":"sessionId","type":"string","required":true,"description":"sessionId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"grade.list","description":"check.grade.list (query) — list past session grade results; moved from admin (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sessionId","type":"string","required":false,"description":"Filter grades by session ID"},{"name":"limit","type":"number","required":false,"description":"Maximum grade entries to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many grade entries before returning results"}]},{"gateway":"query","domain":"check","operation":"chain.validate","description":"check.chain.validate (query) — validate a WarpChain definition","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["chain"],"params":[{"name":"chain","type":"string","required":true,"description":"chain parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"canon","description":"check.canon (query) — CI gate: detects canon drift between docs and live code (CANONICAL_DOMAINS count, forbidden phrases, required assertions)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"canon.docs","description":"check.canon.docs (query) — CI gate: rejects new *.md files that bypass the docs SSoT (.cleo/canon.yml routing). Scans git diff additions against rawMdPaths whose owning DocKind has rawMdAllowed:false.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"baseRef","type":"string","required":false,"description":"Git revision to diff against (default: origin/main)"}]},{"gateway":"query","domain":"check","operation":"workflow.compliance","description":"check.workflow.compliance (query) — WF-001..WF-005 compliance dashboard; AC rate, session rate, gate rate","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"since","type":"string","required":false,"description":"ISO 8601 date; only include tasks/events on or after this date"}]},{"gateway":"query","domain":"admin","operation":"version","description":"admin.version (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"health","description":"admin.health (query) — absorbs doctor via mode param","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"config.show","description":"admin.config.show (query) — show config value","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"config.presets","description":"admin.config.presets (query) — list all strictness presets with descriptions and values","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"stats","description":"admin.stats (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"context","description":"admin.context (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"context.pull","description":"admin.context.pull (query) — JIT bundle: task details + brain memories + last handoff","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"admin","operation":"runtime","description":"admin.runtime (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"paths","description":"admin.paths (query) — report all CleoOS paths (project + global hub) and scaffolding status","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"job","description":"admin.job (query) — absorbs job.status and job.list via action param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: status (default) or list"},{"name":"status","type":"string","required":false,"description":"Filter jobs by status (for list action)"},{"name":"limit","type":"number","required":false,"description":"Maximum jobs to return (for list action)"},{"name":"offset","type":"number","required":false,"description":"Skip this many jobs before returning results"}]},{"gateway":"query","domain":"admin","operation":"dash","description":"admin.dash (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"roadmap","description":"admin.roadmap (query) — project roadmap from task provenance, epics grouped by status with progress","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"includeHistory","type":"boolean","required":false,"description":"Include release history from CHANGELOG.md"},{"name":"upcomingOnly","type":"boolean","required":false,"description":"Only show pending/upcoming epics (exclude completed)"}]},{"gateway":"query","domain":"admin","operation":"log","description":"admin.log (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"sequence","description":"admin.sequence (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"help","description":"Get operations list and guidance filtered to specified disclosure tier","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier: 0=basic (default), 1=+memory/check, 2=all operations","cli":{"flag":"tier","short":"-t"}},{"name":"verbose","type":"boolean","required":false,"description":"Return full operation objects instead of compact domain-grouped format","cli":{"flag":"verbose"}}]},{"gateway":"query","domain":"tools","operation":"issue.diagnostics","description":"tools.issue.diagnostics (query) — CLEO install integrity check","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.list","description":"tools.skill.list (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.show","description":"tools.skill.show (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.find","description":"tools.skill.find (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.federated.find","description":"tools.skill.federated.find (T9731 federation-aware multi-source query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.dispatch","description":"tools.skill.dispatch (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.verify","description":"tools.skill.verify (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.dependencies","description":"tools.skill.dependencies (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.spawn.providers","description":"List spawn-capable providers by capability (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.catalog","description":"tools.skill.catalog (query) — CAAMP catalog; absorbs catalog.protocols/profiles/resources/info via type param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"type","type":"string","required":false,"description":"Catalog type: protocols, profiles, resources, or info (default)"}]},{"gateway":"query","domain":"tools","operation":"skill.precedence","description":"tools.skill.precedence (query) — absorbs precedence.show and precedence.resolve via action param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: show (default) or resolve"},{"name":"providerId","type":"string","required":false,"description":"Provider ID for resolve action"}]},{"gateway":"query","domain":"tools","operation":"skill.doctor.diagnose","description":"tools.skill.doctor.diagnose (query) — read-only health report on skill storage layout, db drift, orphans, and bridge symlinks","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"verbose","type":"boolean","required":false,"description":"Include per-skill detail in the rendered human-readable summary"}]},{"gateway":"mutate","domain":"tools","operation":"skill.prune.telemetry","description":"tools.skill.prune.telemetry (mutate) — delete skill_usage rows older than --older-than DAYS (default 180)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"olderThanDays","type":"number","required":false,"description":"Age threshold in days (default 180)"},{"name":"dryRun","type":"boolean","required":false,"description":"Return the plan without touching the DB"},{"name":"vacuum","type":"boolean","required":false,"description":"Run VACUUM after the delete to reclaim disk space"}]},{"gateway":"mutate","domain":"tools","operation":"skill.import.hermes","description":"tools.skill.import.hermes (mutate) — migrate ~/.hermes/skills/.usage.json sidecars into CLEO skills.db","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"hermesHome","type":"string","required":false,"description":"Override Hermes home directory (default: $HERMES_HOME or ~/.hermes)"},{"name":"dryRun","type":"boolean","required":false,"description":"Print planned writes without mutating skills.db"}]},{"gateway":"mutate","domain":"tools","operation":"skill.migrate","description":"tools.skill.migrate (mutate) — migrate ~/.local/share/agents/skills into ~/.cleo/skills (SSoT); supports --dry-run preview + --rollback restore","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dryRun","type":"boolean","required":false,"description":"Preview the plan without writing anything"},{"name":"rollback","type":"boolean","required":false,"description":"Restore the legacy tree from the most recent backup tarball"}]},{"gateway":"query","domain":"tools","operation":"skill.stats","description":"tools.skill.stats (query) — Sphere B telemetry rollup; top-N usage, lifecycle / source-type breakdowns, agent-created list","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"top","type":"number","required":false,"description":"Top-N usage rollup limit (default 10)"},{"name":"sinceDays","type":"number","required":false,"description":"Restrict top-N rollup to the last N days (default: all-time)"},{"name":"bySource","type":"boolean","required":false,"description":"Include source-type breakdown facet"},{"name":"byLifecycle","type":"boolean","required":false,"description":"Include lifecycle-state breakdown facet"},{"name":"agentCreated","type":"boolean","required":false,"description":"Include agent-created skill list facet"}]},{"gateway":"query","domain":"tools","operation":"provider.list","description":"tools.provider.list (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.detect","description":"tools.provider.detect (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.inject.status","description":"tools.provider.inject.status (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.supports","description":"tools.provider.supports (query) - check if provider supports capability","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["providerId","capability"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider ID (e.g., claude-code)"},{"name":"capability","type":"string","required":true,"description":"Capability path in dot notation (e.g., spawn.supportsSubagents)"}]},{"gateway":"query","domain":"tools","operation":"provider.hooks","description":"tools.provider.hooks (query) - list providers by hook event support","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["event"],"params":[{"name":"event","type":"string","required":true,"description":"Hook event to query (e.g., onSessionStart, onToolComplete)"}]},{"gateway":"mutate","domain":"tasks","operation":"add","description":"tasks.add (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["title"],"params":[{"name":"title","type":"string","required":true,"description":"Task title (3–500 characters)","cli":{"positional":true}},{"name":"parent","type":"string","required":false,"description":"Parent task ID (makes this task a subtask)","cli":{"flag":"parent"}},{"name":"priority","type":"string","required":false,"description":"Task priority","enum":["low","medium","high","critical"],"cli":{"flag":"priority","short":"-p"}},{"name":"type","type":"string","required":false,"description":"Task type","enum":["epic","task","subtask"],"cli":{"flag":"type","short":"-t"}},{"name":"size","type":"string","required":false,"description":"Scope size estimate","enum":["small","medium","large"],"cli":{"flag":"size"}},{"name":"description","type":"string","required":false,"description":"Detailed task description (must differ meaningfully from title)","cli":{"flag":"description","short":"-d"}},{"name":"acceptance","type":"array","required":false,"description":"Pipe-separated acceptance criteria (e.g. \\"AC1|AC2|AC3\\")","cli":{"flag":"acceptance"}},{"name":"labels","type":"array","required":false,"description":"Comma-separated labels","cli":{"flag":"labels","short":"-l"}},{"name":"depends","type":"array","required":false,"description":"Comma-separated dependency task IDs","cli":{"flag":"depends","short":"-D"}},{"name":"phase","type":"string","required":false,"description":"Phase slug to assign the task to","cli":{"flag":"phase","short":"-P"}},{"name":"notes","type":"string","required":false,"description":"Initial note entry for the task","cli":{"flag":"notes"}}]},{"gateway":"mutate","domain":"tasks","operation":"add-batch","description":"tasks.add-batch (mutate) — bulk-create N tasks atomically in a single transaction (epic decomposition: 1 call instead of N)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["tasks"],"params":[{"name":"tasks","type":"array","required":true,"description":"Array of task specs to insert atomically (each must have a title)"},{"name":"defaultParent","type":"string","required":false,"description":"Optional default parent task ID applied when a task spec omits parent"},{"name":"dryRun","type":"boolean","required":false,"description":"Validate and predict IDs without writing to the database"}]},{"gateway":"mutate","domain":"tasks","operation":"update","description":"tasks.update (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"complete","description":"tasks.complete (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"cancel","description":"tasks.cancel (mutate) — cancel task (soft terminal state; reversible via tasks.restore)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional human-readable cancellation reason stored on the task"}]},{"gateway":"mutate","domain":"tasks","operation":"delete","description":"tasks.delete (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"archive","description":"tasks.archive (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tasks","operation":"restore","description":"tasks.restore (mutate) — absorbs reopen and unarchive via from param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"reparent","description":"tasks.reparent (mutate) — absorbs promote via newParentId:null","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"reorder","description":"tasks.reorder (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","position"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"position","type":"string","required":true,"description":"position parameter"}]},{"gateway":"mutate","domain":"tasks","operation":"relates.add","description":"tasks.relates.add (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","type"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"type","type":"string","required":true,"description":"type parameter"}]},{"gateway":"mutate","domain":"tasks","operation":"relates.remove","description":"tasks.relates.remove (mutate) — delete a relation between two tasks. Pass \`type\` to scope deletion to a single relation kind; omit to remove any type.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId","relatedId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Source task ID","cli":{"positional":true}},{"name":"relatedId","type":"string","required":true,"description":"Target task ID to remove the relation to","cli":{"positional":true}},{"name":"type","type":"string","required":false,"description":"Optional relation type (blocks|related|duplicates|absorbs|fixes|extends|supersedes). Omit to remove any type.","cli":{"flag":"type"}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.create","description":"tasks.saga.create (mutate) — create a Saga as a first-class TaskType (type=saga) per ADR-083","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["title"],"params":[{"name":"title","type":"string","required":true,"description":"Saga title (3–500 characters)","cli":{"flag":"title"}},{"name":"description","type":"string","required":false,"description":"Saga description","cli":{"flag":"description","short":"-d"}},{"name":"acceptance","type":"array","required":false,"description":"Pipe-separated acceptance criteria","cli":{"flag":"acceptance"}},{"name":"dryRun","type":"boolean","required":false,"description":"Validate and preview without writing task, relation, or doc rows","cli":{"flag":"dry-run"}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.add","description":"tasks.saga.add (mutate) — link an Epic to a Saga via task_relations type=groups","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["sagaId","epicId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID (must have type=saga)","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"Epic task ID to link as member","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.detach","description":"tasks.saga.detach (mutate) — remove a Saga member relation (task_relations type=groups); idempotent; appends to .cleo/audit/saga-detach.jsonl (T10118)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId","memberId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}},{"name":"memberId","type":"string","required":true,"description":"Member task ID to detach from the Saga","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Human-readable reason recorded in the audit log entry"}]},{"gateway":"query","domain":"tasks","operation":"saga.list","description":"tasks.saga.list (query) — list all Sagas (labeled top-level Epics)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"saga.members","description":"tasks.saga.members (query) — list member Epics linked to a Saga","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"saga.rollup","description":"tasks.saga.rollup (query) — aggregate member Epic statuses (total/done/active/blocked/pending + completionPct)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.repair","description":"tasks.saga.repair (mutate) — detach I5-violating parentId and re-attach via task_relations type=groups; idempotent","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID (must have type=saga)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.reconcile","description":"tasks.saga.reconcile (mutate) — idempotent cron-safe saga auto-close repair; per-saga advisory lock + audit log; supersedes T10098","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sagaId","type":"string","required":false,"description":"Optional saga task ID. Omit to walk every saga.","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Report what would happen without mutating rows or writing audit log"}]},{"gateway":"mutate","domain":"tasks","operation":"saga.migrate-containment","description":"tasks.saga.migrate-containment (mutate) — convert parent_id-based Saga membership to groups relations; idempotent; audits to saga-contain-migration.jsonl","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sagaId","type":"string","required":false,"description":"Optional saga task ID. Omit to migrate all sagas.","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Report what would happen without mutating rows or writing audit log"}]},{"gateway":"mutate","domain":"tasks","operation":"start","description":"tasks.start (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"stop","description":"tasks.stop (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tasks","operation":"sync.reconcile","description":"tasks.sync.reconcile (mutate) — reconcile external tasks with CLEO as SSoT","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["providerId","externalTasks"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider identifier (e.g. linear, jira, github)"},{"name":"externalTasks","type":"array","required":true,"description":"Array of normalized ExternalTask objects"},{"name":"dryRun","type":"boolean","required":false,"description":"Compute actions without applying them"},{"name":"conflictPolicy","type":"string","required":false,"description":"Conflict resolution: cleo-wins, provider-wins, latest-wins, report-only"},{"name":"defaultPhase","type":"string","required":false,"description":"Default phase for newly created tasks"},{"name":"defaultLabels","type":"array","required":false,"description":"Default labels for newly created tasks"}]},{"gateway":"query","domain":"tasks","operation":"sync.links","description":"tasks.sync.links (query) — list external task links by provider or task ID","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"providerId","type":"string","required":false,"description":"Filter links by provider"},{"name":"taskId","type":"string","required":false,"description":"Filter links by CLEO task ID"}]},{"gateway":"mutate","domain":"tasks","operation":"sync.links.remove","description":"tasks.sync.links.remove (mutate) — remove all external task links for a provider","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["providerId"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider whose links should be removed"}]},{"gateway":"mutate","domain":"tasks","operation":"claim","description":"tasks.claim (mutate) — claim a task by assigning it to the current session","tier":0,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId","agentId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to claim"},{"name":"agentId","type":"string","required":true,"description":"Agent ID to assign the task to"}]},{"gateway":"mutate","domain":"tasks","operation":"unclaim","description":"tasks.unclaim (mutate) — unclaim a task by removing the current assignee","tier":0,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to unclaim"}]},{"gateway":"mutate","domain":"session","operation":"start","description":"session.start (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"end","description":"session.end (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"resume","description":"session.resume (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"suspend","description":"session.suspend (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"gc","description":"session.gc (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"record.decision","description":"session.record.decision (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"record.assumption","description":"session.record.assumption (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"adopt","description":"session.adopt — rebind env to a specific session for multi-agent isolation (T9975)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sessionId","type":"string","required":true,"description":"Session ID to adopt"}]},{"gateway":"mutate","domain":"orchestrate","operation":"start","description":"orchestrate.start (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"spawn","description":"orchestrate.spawn (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"handoff","description":"orchestrate.handoff (mutate) — composite handoff (context.inject -> session.end -> spawn)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","protocolType"],"params":[{"name":"taskId","type":"string","required":true,"description":"Successor task ID for spawn context"},{"name":"protocolType","type":"string","required":true,"description":"Protocol name for handoff context injection"},{"name":"note","type":"string","required":false,"description":"Optional handoff note persisted through session.end"},{"name":"nextAction","type":"string","required":false,"description":"Optional next action metadata for the handoff payload"},{"name":"variant","type":"string","required":false,"description":"Optional context injection variant"},{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier (0-2)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Caller-provided retry correlation key (reported in metadata)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"spawn.execute","description":"orchestrate.spawn.execute (mutate) — execute spawn for a task using adapter registry","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to spawn"},{"name":"adapterId","type":"string","required":false,"description":"Adapter ID (auto-select if omitted)"},{"name":"protocolType","type":"string","required":false,"description":"Protocol type override"},{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier (0-2)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"validate","description":"orchestrate.validate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"pivot","description":"orchestrate.pivot (mutate) — record an audited context switch from one task to another (replaces silent reframes)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["fromTaskId","toTaskId","reason"],"params":[{"name":"fromTaskId","type":"string","required":true,"description":"Currently-active task ID being paused","cli":{"positional":true}},{"name":"toTaskId","type":"string","required":true,"description":"Task ID becoming active in the current session","cli":{"positional":true}},{"name":"reason","type":"string","required":true,"description":"Free-form rationale for the pivot — REQUIRED, no silent pivots"},{"name":"blocksFrom","type":"boolean","required":false,"description":"When true (default), adds toTaskId as a dependency on fromTaskId so it cannot complete before the pivot resolves"}]},{"gateway":"mutate","domain":"orchestrate","operation":"parallel","description":"orchestrate.parallel (mutate) — absorbs parallel.start and parallel.end via action param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["action"],"params":[{"name":"action","type":"string","required":true,"description":"Action: start or end"}]},{"gateway":"mutate","domain":"memory","operation":"observe","description":"memory.observe (mutate) — save observation to brain.db","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["text"],"params":[{"name":"text","type":"string","required":true,"description":"text parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"decision.store","description":"memory.decision.store (mutate) — store decision to brain.db","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["decision","rationale"],"params":[{"name":"decision","type":"string","required":true,"description":"decision parameter","cli":{"positional":true}},{"name":"rationale","type":"string","required":true,"description":"rationale parameter"}]},{"gateway":"mutate","domain":"memory","operation":"pattern.store","description":"memory.pattern.store (mutate) — store a reusable workflow or anti-pattern in BRAIN pattern memory","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["pattern","context"],"params":[{"name":"pattern","type":"string","required":true,"description":"pattern parameter","cli":{"positional":true}},{"name":"context","type":"string","required":true,"description":"context parameter"}]},{"gateway":"mutate","domain":"memory","operation":"learning.store","description":"memory.learning.store (mutate) — store an insight or lesson learned in BRAIN learning memory","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["insight","source"],"params":[{"name":"insight","type":"string","required":true,"description":"insight parameter","cli":{"positional":true}},{"name":"source","type":"string","required":true,"description":"source parameter"}]},{"gateway":"mutate","domain":"memory","operation":"link","description":"memory.link (mutate) — link brain entry to task","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","entryId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"graph.add","description":"memory.graph.add (mutate) — add a node or edge to the PageIndex graph","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"graph.remove","description":"memory.graph.remove (mutate) — remove a node or edge from the PageIndex graph","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"quality","description":"Memory quality report: retrieval stats, noise ratio, tier distribution","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"code.links","description":"List code_reference edges connecting memories to nexus code symbols","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"code.memories-for-code","description":"Find memories linked to a code symbol via code_reference edges","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"symbol parameter"}]},{"gateway":"query","domain":"memory","operation":"code.for-memory","description":"Find code symbols linked to a memory entry via code_reference edges","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["memoryId"],"params":[{"name":"memoryId","type":"string","required":true,"description":"memoryId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"code.link","description":"Create code_reference edge from memory to nexus symbol","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["memoryId","codeSymbol"],"params":[{"name":"memoryId","type":"string","required":true,"description":"memoryId parameter","cli":{"positional":true}},{"name":"codeSymbol","type":"string","required":true,"description":"codeSymbol parameter"}]},{"gateway":"mutate","domain":"memory","operation":"code.auto-link","description":"Scan memories for entity references and auto-link to nexus nodes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"doctor","description":"memory.doctor (query) — read-only brain noise scan: detects duplicate-content, missing-type, missing-provenance, orphan-edge, low-confidence, stale-unverified patterns. Used as M7 assert-clean gate for Sentient v1 activation.","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"assert-clean","type":"boolean","required":false,"description":"If true, exit non-zero when any noise patterns are detected (M7 gate for Sentient v1)."}]},{"gateway":"query","domain":"memory","operation":"sweep","description":"memory.sweep (query/mutate) — T1147 W7 BRAIN noise sweep. dry-run: detect noise candidates and write sample JSON to agent-outputs. approve <runId>: apply sweep to live brain tables (sets killSwitch during tx). status: list all noise-sweep-2440 runs. rollback <runId>: discard a staged run without applying changes.","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dry-run","type":"boolean","required":false,"description":"Detect noise candidates without staging DB writes."},{"name":"approve","type":"string","required":false,"description":"Run ID to approve and apply to live tables."},{"name":"status","type":"boolean","required":false,"description":"List recent noise-sweep-2440 runs."},{"name":"rollback","type":"string","required":false,"description":"Run ID to roll back without applying changes."}]},{"gateway":"mutate","domain":"memory","operation":"sweep","description":"memory.sweep (mutate) — T1147 W7 BRAIN noise sweep approve/rollback. approve <runId>: apply sweep to live brain tables. rollback <runId>: discard a staged run without applying changes.","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"approve","type":"string","required":false,"description":"Run ID to approve and apply to live tables."},{"name":"rollback","type":"string","required":false,"description":"Run ID to roll back without applying changes."}]},{"gateway":"query","domain":"memory","operation":"llm-status","description":"memory.llm-status (query) — report LLM backend resolution status and extraction readiness","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"pending-verify","description":"memory.pending-verify (query) — list unverified brain entries with citation_count >= threshold","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"minCitations","type":"number","required":false,"description":"Minimum citation count threshold (default: 5)"},{"name":"limit","type":"number","required":false,"description":"Maximum entries to return (default: 50)"}]},{"gateway":"query","domain":"memory","operation":"bridge","description":"memory.bridge (query) — stream brain.db memory-bridge content directly (cli mode default)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"promote-explain","description":"memory.promote-explain (query) — read-only view over STDP weights, retrieval log, and citation_count for a brain entry; returns tier decision and score breakdown","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Brain entry id (e.g. O-abc123, D-def456, P-ghi789, L-jkl012)"}]},{"gateway":"query","domain":"memory","operation":"digest","description":"memory.digest (query) — summarized top-N observations by citation_count for session briefings","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max observations to include in digest (default: 10)"}]},{"gateway":"query","domain":"memory","operation":"recent","description":"memory.recent (query) — tail recent brain_observations with optional filters (since, type, session, tier)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max entries to return (default: 20)"},{"name":"since","type":"string","required":false,"description":"ISO timestamp or duration (e.g. '24h', '7d') to filter from"},{"name":"type","type":"string","required":false,"description":"Filter by observation type (e.g. diary, observation, pattern)"},{"name":"session","type":"string","required":false,"description":"Filter by source_session_id"},{"name":"tier","type":"string","required":false,"description":"Filter by memory_tier (short, medium, long)"}]},{"gateway":"query","domain":"memory","operation":"diary","description":"memory.diary (query) — list observations with type='diary' in reverse chronological order","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max diary entries to return (default: 20)"}]},{"gateway":"query","domain":"memory","operation":"watch","description":"memory.watch (query) — poll for new brain_observations since a cursor; returns nextCursor for chained polling","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"cursor","type":"string","required":false,"description":"ISO datetime cursor; only observations after this time are returned"},{"name":"limit","type":"number","required":false,"description":"Max events per poll (default: 10)"}]},{"gateway":"mutate","domain":"memory","operation":"diary.write","description":"memory.diary.write (mutate) — store an observation with type='diary' (thin wrapper over observe)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["text"],"params":[{"name":"text","type":"string","required":true,"description":"Diary entry text"},{"name":"title","type":"string","required":false,"description":"Optional title"},{"name":"sourceSessionId","type":"string","required":false,"description":"Session that produced this entry"},{"name":"agent","type":"string","required":false,"description":"Agent provenance"}]},{"gateway":"mutate","domain":"memory","operation":"verify","description":"memory.verify (mutate) — flip verified=1 on a brain entry; requires project-orchestrator or owner identity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Brain entry ID to verify"},{"name":"agent","type":"string","required":false,"description":"Caller identity ('project-orchestrator' or 'owner'). Legacy alias 'cleo-prime' accepted per T1258 E1 migration shim. Omit for terminal invocation."}]},{"gateway":"mutate","domain":"memory","operation":"precompact-flush","description":"memory.precompact-flush (mutate) — flush in-flight brain observations and issue a WAL checkpoint before context window compaction","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"backfill.list","description":"memory.backfill.list (query) — list staged backfill runs with status (pending/approved/rolled-back)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"backfill.run","description":"memory.backfill.run (mutate) — stage a new graph backfill run (rows held pending approval)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"backfill.approve","description":"memory.backfill.approve (mutate) — approve a staged backfill run (commits rows to live tables)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Backfill run ID to approve"}]},{"gateway":"mutate","domain":"memory","operation":"backfill.rollback","description":"memory.backfill.rollback (mutate) — rollback a backfill run (removes staged/committed rows)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Backfill run ID to rollback"}]},{"gateway":"mutate","domain":"pipeline","operation":"stage.record","description":"pipeline.stage.record (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.skip","description":"pipeline.stage.skip (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.reset","description":"pipeline.stage.reset (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.gate.pass","description":"pipeline.stage.gate.pass (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.gate.fail","description":"pipeline.stage.gate.fail (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"manifest.append","description":"pipeline.manifest.append (mutate) — append entry to pipeline_manifest (SQLite table per ADR-027)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["entry"],"params":[{"name":"entry","type":"string","required":true,"description":"entry parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"manifest.archive","description":"pipeline.manifest.archive (mutate) — archive old manifest entries","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["beforeDate"],"params":[{"name":"beforeDate","type":"string","required":true,"description":"beforeDate parameter"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.set","description":"Set the active phase","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["phaseId"],"params":[{"name":"phaseId","type":"string","required":true,"description":"Phase slug to set as current"},{"name":"rollback","type":"boolean","required":false,"description":"Allow backward phase movement"},{"name":"force","type":"boolean","required":false,"description":"Skip confirmation prompt"},{"name":"dryRun","type":"boolean","required":false,"description":"Preview changes without modifying files"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.advance","description":"Complete current phase and start next","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"force","type":"boolean","required":false,"description":"Skip validation and interactive prompt"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.rename","description":"Rename a phase and update all task references","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["oldName","newName"],"params":[{"name":"oldName","type":"string","required":true,"description":"oldName parameter"},{"name":"newName","type":"string","required":true,"description":"newName parameter"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.delete","description":"Delete a phase with task reassignment protection","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["phaseId"],"params":[{"name":"phaseId","type":"string","required":true,"description":"Phase slug to delete"},{"name":"reassignTo","type":"string","required":false,"description":"Reassign tasks to another phase"},{"name":"force","type":"boolean","required":false,"description":"Required safety flag"}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.add","description":"pipeline.chain.add (mutate) — store a validated chain definition","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["chain"],"params":[{"name":"chain","type":"string","required":true,"description":"chain parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.instantiate","description":"pipeline.chain.instantiate (mutate) — create chain instance for epic","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["chainId","epicId"],"params":[{"name":"chainId","type":"string","required":true,"description":"chainId parameter","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"epicId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.advance","description":"pipeline.chain.advance (mutate) — advance instance to next stage","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["instanceId","nextStage"],"params":[{"name":"instanceId","type":"string","required":true,"description":"instanceId parameter","cli":{"positional":true}},{"name":"nextStage","type":"string","required":true,"description":"nextStage parameter"}]},{"gateway":"mutate","domain":"check","operation":"compliance.record","description":"check.compliance.record (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"test.run","description":"check.test.run (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"compliance.sync","description":"check.compliance.sync (mutate) — sync project compliance metrics to global","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"gate.set","description":"check.gate.set (mutate) — write path of former gate.verify; set/reset gates (T5615)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"verify.explain","description":"check.verify.explain (query) — show evidence atoms + gate state for a task in human-readable format (read-only)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to explain verification state for (e.g. T1006)"}]},{"gateway":"query","domain":"pipeline","operation":"release.list","description":"List all releases from release_manifests table","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"release.show","description":"Show details for a specific release version","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"release.channel.show","description":"Show the current release channel based on git branch (latest/beta/alpha)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"release.pr-status","description":"Poll GitHub CI check statuses for the open release PR matching release/v<version> (T9095)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version (e.g. 2026.5.43 or v2026.5.43)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"release.cancel","description":"pipeline.release.cancel (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"release.rollback","description":"pipeline.release.rollback (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"release.rollback.full","description":"Full rollback: delete git tag (local + remote), revert release commit, remove manifest record (T820 RELEASE-05)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"init","description":"admin.init (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"scaffold-hub","description":"admin.scaffold-hub (mutate) — create CleoOS Hub dirs (global-recipes, pi-extensions, cant-workflows, agents) and seed starter justfile","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"config.set","description":"admin.config.set (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"config.set-preset","description":"admin.config.set-preset (mutate) — apply a strictness preset (strict, standard, minimal)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["preset"],"params":[{"name":"preset","type":"string","required":true,"description":"Preset name: strict | standard | minimal"}]},{"gateway":"query","domain":"admin","operation":"backup","description":"admin.backup (query) — list available backups (read-only)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"backup","description":"admin.backup (mutate) — absorbs restore and backup.restore via action param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"migrate","description":"admin.migrate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"cleanup","description":"admin.cleanup (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"job.cancel","description":"admin.job.cancel (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"safestop","description":"admin.safestop (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"inject.generate","description":"admin.inject.generate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.install","description":"tools.skill.install (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.uninstall","description":"tools.skill.uninstall (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.refresh","description":"tools.skill.refresh (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"provider.inject","description":"tools.provider.inject (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.list","description":"tools.adapter.list (query) — list all discovered provider adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.show","description":"tools.adapter.show (query) — show details for a specific adapter","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Adapter ID"}]},{"gateway":"query","domain":"tools","operation":"adapter.detect","description":"tools.adapter.detect (query) — detect active providers in current environment","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.health","description":"tools.adapter.health (query) — health status for adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Specific adapter ID (omit for all)"}]},{"gateway":"mutate","domain":"tools","operation":"adapter.activate","description":"tools.adapter.activate (mutate) — load and activate a provider adapter","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Adapter ID to activate"}]},{"gateway":"mutate","domain":"tools","operation":"adapter.dispose","description":"tools.adapter.dispose (mutate) — dispose one or all adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Adapter ID (omit to dispose all)"}]},{"gateway":"mutate","domain":"admin","operation":"install.global","description":"Refresh global CLEO setup: provider files, configs, ~/.agents/AGENTS.md","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"token","description":"admin.token (query) — summarize/list/show token telemetry; absorbs token.summary, token.list, token.show via action param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: summary (default), list, or show"},{"name":"tokenId","type":"string","required":false,"description":"Token ID for show action"},{"name":"provider","type":"string","required":false,"description":"Filter by provider"},{"name":"transport","type":"string","required":false,"description":"Filter by transport"},{"name":"domain","type":"string","required":false,"description":"Filter by domain"},{"name":"operationName","type":"string","required":false,"description":"Filter by operation name"},{"name":"sessionId","type":"string","required":false,"description":"Filter by session ID"},{"name":"taskId","type":"string","required":false,"description":"Filter by task ID"},{"name":"limit","type":"number","required":false,"description":"Maximum records to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many records before returning results"}]},{"gateway":"mutate","domain":"admin","operation":"token","description":"admin.token (mutate) — record/delete/clear token telemetry; absorbs token.record, token.delete, token.clear via action param","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: record (default), delete, or clear"},{"name":"tokenId","type":"string","required":false,"description":"Token ID for delete action"}]},{"gateway":"query","domain":"admin","operation":"adr.show","description":"admin.adr.show (query) — retrieve single ADR by ID with frontmatter","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["adrId"],"params":[{"name":"adrId","type":"string","required":true,"description":"adrId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"adr.sync","description":"admin.adr.sync (mutate) — sync .cleo/adrs/ markdown files into architecture_decisions DB table; absorbs adr.validate via validate flag","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"adr.find","description":"admin.adr.find (query) — fuzzy search ADRs; absorbs adr.list when query absent","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"query","type":"string","required":false,"description":"Search query (omit to list all ADRs)"},{"name":"status","type":"string","required":false,"description":"Filter ADRs by status"},{"name":"since","type":"string","required":false,"description":"Filter ADRs created on or after this date"},{"name":"limit","type":"number","required":false,"description":"Maximum ADRs to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many ADRs before returning results"}]},{"gateway":"mutate","domain":"admin","operation":"health","description":"admin.health (mutate) — auto-fix failed health/doctor checks; mode:\\"repair\\" form of admin.health query (T5615)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"context.inject","description":"admin.context.inject (mutate) — inject protocol content into session context; moved from session domain (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["protocolType"],"params":[{"name":"protocolType","type":"string","required":true,"description":"protocolType parameter"}]},{"gateway":"query","domain":"admin","operation":"export","description":"admin.export (query) — export tasks; absorbs snapshot.export and export.tasks via scope param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"import","description":"admin.import (mutate) — import tasks; absorbs snapshot.import and import.tasks via scope param","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["file"],"params":[{"name":"file","type":"string","required":true,"description":"file parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"detect","description":"Refresh project-context.json — re-detect project type, framework, and LLM hints","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"smoke","description":"admin.smoke (query) — operational smoke test: one read-only query per domain","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"smoke.provider","description":"admin.smoke.provider (query) — ADR-049 harness sovereignty probe: verify adapter shape, DB locality, hooks, spawn, and agent folder for a named provider","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider ID to probe (claude-code | claude-sdk | codex | cursor | gemini-cli | kimi | openai-sdk | opencode | pi)"}]},{"gateway":"query","domain":"admin","operation":"hooks.matrix","description":"admin.hooks.matrix (query) — cross-provider hook support matrix using CAAMP canonical taxonomy","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"providerIds","type":"string","required":false,"description":"Limit matrix to specific provider IDs (default: all mapped providers)"},{"name":"detectProvider","type":"boolean","required":false,"description":"Detect current runtime provider (default: true)"}]},{"gateway":"query","domain":"admin","operation":"map","description":"admin.map (query) — analyze codebase structure, return structured mapping","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"focus","type":"string","required":false,"description":"Focus analysis on one area: stack, architecture, structure, conventions, testing, integrations, concerns"}]},{"gateway":"mutate","domain":"admin","operation":"map","description":"admin.map (mutate) — analyze codebase and store findings to brain.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"focus","type":"string","required":false,"description":"Focus analysis on one area: stack, architecture, structure, conventions, testing, integrations, concerns"}]},{"gateway":"query","domain":"nexus","operation":"augment","description":"nexus.augment (query) — BM25 symbol context for PreToolUse hooks and search-code","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"Symbol name or pattern"},{"name":"limit","type":"number","required":false,"description":"Max results (default 5)"}]},{"gateway":"query","domain":"nexus","operation":"share.status","description":"nexus.share.status (query) — sharing status","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"share.snapshot.export","description":"nexus.share.snapshot.export (mutate) — export project snapshot","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"share.snapshot.import","description":"nexus.share.snapshot.import (mutate) — import project snapshot","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"status","description":"nexus.status (query) — overall NEXUS health status","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"list","description":"nexus.list (query) — list all registered NEXUS projects","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"show","description":"nexus.show (query) — show a specific project by name or hash","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"}]},{"gateway":"query","domain":"nexus","operation":"resolve","description":"nexus.resolve (query) — resolve a cross-project project:taskId reference; renamed from nexus.query (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"deps","description":"nexus.deps (query) — cross-project dependency analysis","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"graph","description":"nexus.graph (query) — global dependency graph across all projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"path.show","description":"nexus.path.show (query) — show critical dependency path across projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"blockers.show","description":"nexus.blockers.show (query) — show blocking impact for a task query","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"orphans.list","description":"nexus.orphans.list (query) — list orphaned cross-project dependencies","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"discover","description":"nexus.discover (query) — discover related tasks across registered projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"search","description":"nexus.search (query) — search for patterns across registered projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"pattern parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"init","description":"nexus.init (mutate) — initialize NEXUS (creates registry and directories)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"register","description":"nexus.register (mutate) — register a project in NEXUS","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["path"],"params":[{"name":"path","type":"string","required":true,"description":"path parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"unregister","description":"nexus.unregister (mutate) — remove a project from NEXUS","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"}]},{"gateway":"mutate","domain":"nexus","operation":"sync","description":"nexus.sync (mutate) — sync project(s) metadata; absorbs sync.all when name omitted","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"name","type":"string","required":false,"description":"Project name to sync (omit to sync all)"}]},{"gateway":"mutate","domain":"nexus","operation":"permission.set","description":"nexus.permission.set (mutate) — update project permissions","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["name","level"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"},{"name":"level","type":"string","required":true,"description":"level parameter"}]},{"gateway":"mutate","domain":"nexus","operation":"reconcile","description":"nexus.reconcile (mutate) — reconcile project identity with global nexus registry","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"transfer.preview","description":"nexus.transfer.preview (query) — preview a cross-project task transfer","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskIds","sourceProject","targetProject"],"params":[{"name":"taskIds","type":"array","required":true,"description":"Task IDs to transfer"},{"name":"sourceProject","type":"string","required":true,"description":"Source project name or hash"},{"name":"targetProject","type":"string","required":true,"description":"Target project name or hash"},{"name":"mode","type":"string","required":false,"description":"Transfer mode: 'copy' (default) or 'move'"},{"name":"scope","type":"string","required":false,"description":"Transfer scope: 'subtree' (default) or 'single'"}]},{"gateway":"mutate","domain":"nexus","operation":"transfer","description":"nexus.transfer (mutate) — transfer tasks between NEXUS projects","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["taskIds","sourceProject","targetProject"],"params":[{"name":"taskIds","type":"array","required":true,"description":"Task IDs to transfer"},{"name":"sourceProject","type":"string","required":true,"description":"Source project name or hash"},{"name":"targetProject","type":"string","required":true,"description":"Target project name or hash"},{"name":"mode","type":"string","required":false,"description":"Transfer mode: 'copy' (default) or 'move'"},{"name":"scope","type":"string","required":false,"description":"Transfer scope: 'subtree' (default) or 'single'"},{"name":"onConflict","type":"string","required":false,"description":"Conflict strategy: 'rename' (default), 'skip', 'duplicate', 'fail'"},{"name":"transferBrain","type":"boolean","required":false,"description":"Whether to transfer brain observations (default: false)"}]},{"gateway":"query","domain":"nexus","operation":"top-entries","description":"nexus.top-entries (query) — top-weighted symbols from nexus_relations by weight DESC (Hebbian plasticity aggregate)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum entries to return (default: 20)"},{"name":"kind","type":"string","required":false,"description":"Filter by nexus_nodes.kind (e.g. function, method, class, interface)"}]},{"gateway":"query","domain":"nexus","operation":"impact","description":"nexus.impact (query) — BFS blast radius for a symbol with optional reasons[] path-strings when why=true","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name to analyze (case-insensitive substring match)"},{"name":"why","type":"boolean","required":false,"description":"Append reasons[] per affected symbol (caller count, edge strength, hop depth). Default false"},{"name":"depth","type":"number","required":false,"description":"Maximum BFS depth (default 3, capped at 5)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID (default: auto-detected from cwd)"}]},{"gateway":"query","domain":"nexus","operation":"full-context","description":"nexus.full-context (query) — full 5-substrate Living Brain context for a code symbol (NEXUS callers/callees, BRAIN memories, TASKS, sentient proposals, conduit threads)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID"}]},{"gateway":"query","domain":"nexus","operation":"task-footprint","description":"nexus.task-footprint (query) — full code impact for a task: files, symbols, blast radius, brain observations, decisions, risk tier","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID (e.g., T001)"}]},{"gateway":"query","domain":"nexus","operation":"brain-anchors","description":"nexus.brain-anchors (query) — code anchors for a brain memory entry: linked nexus nodes, tasks that touched them, plasticity signal","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"Brain entry node ID (e.g., observation:abc123)"}]},{"gateway":"query","domain":"nexus","operation":"why","description":"nexus.why (query) — causal trace: why is a code symbol structured this way? walks BRAIN decisions, observations, and tasks","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID to trace"}]},{"gateway":"query","domain":"nexus","operation":"impact-full","description":"nexus.impact-full (query) — merged structural + task + brain impact report for a code symbol","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID to analyze"}]},{"gateway":"query","domain":"nexus","operation":"route-map","description":"nexus.route-map (query) — display all routes with their handlers and dependencies for a project (route ID, handler name, HTTP method/path, dep count, caller count)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Project identifier (auto-derived from project root if omitted)"}]},{"gateway":"query","domain":"nexus","operation":"shape-check","description":"nexus.shape-check (query) — check response shape compatibility between a route handler and its callers; returns per-caller compatibility status and recommendations","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["routeSymbol"],"params":[{"name":"routeSymbol","type":"string","required":true,"description":"Route symbol ID (format: <filePath>::<routeName>)"},{"name":"projectId","type":"string","required":false,"description":"Project identifier (auto-derived from project root if omitted)"}]},{"gateway":"query","domain":"nexus","operation":"search-code","description":"nexus.search-code (query) — BM25 search of code symbols in nexus.db; returns symbol names, kinds, file paths, and relevance scores","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"Search query (symbol name, file pattern, or keyword)"},{"name":"limit","type":"number","required":false,"description":"Max results (default: 10)"}]},{"gateway":"query","domain":"nexus","operation":"wiki","description":"nexus.wiki (query) — generate community-grouped wiki index from the nexus code graph; scaffold mode when LOOM provider unavailable","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"outputDir","type":"string","required":false,"description":"Output directory for wiki files (default: <projectRoot>/.cleo/wiki)"},{"name":"communityFilter","type":"string","required":false,"description":"Filter generation to a single community ID (e.g. \\"community:3\\")"},{"name":"incremental","type":"boolean","required":false,"description":"Only regenerate communities whose symbols changed since last wiki run (uses .cleo/wiki-state.json)"}]},{"gateway":"query","domain":"nexus","operation":"contracts-show","description":"nexus.contracts-show (query) — show contract compatibility matrix between two registered projects; matches HTTP/gRPC/topic contracts and returns per-match compatibility scores","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["projectA","projectB"],"params":[{"name":"projectA","type":"string","required":true,"description":"First project name or ID"},{"name":"projectB","type":"string","required":true,"description":"Second project name or ID"}]},{"gateway":"query","domain":"nexus","operation":"task-symbols","description":"nexus.task-symbols (query) — show code symbols touched by a task via task_touches_symbol forward-lookup; returns symbol label, kind, filePath, weight, matchStrategy","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to look up (e.g. T001)"}]},{"gateway":"mutate","domain":"nexus","operation":"contracts-sync","description":"nexus.contracts-sync (mutate) — extract HTTP, gRPC, and topic contracts from a project and store them in nexus.db; idempotent upsert","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd / projectRoot)"},{"name":"projectId","type":"string","required":false,"description":"Override the project ID (default: auto-detected from repoPath)"}]},{"gateway":"mutate","domain":"nexus","operation":"contracts-link-tasks","description":"nexus.contracts-link-tasks (mutate) — link extracted contracts to tasks that touch their source symbols via task_touches_symbol edges; runs git-log task linker","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd / projectRoot)"},{"name":"projectId","type":"string","required":false,"description":"Override the project ID (default: auto-detected from repoPath)"}]},{"gateway":"mutate","domain":"nexus","operation":"conduit-scan","description":"nexus.conduit-scan (mutate) — scan conduit messages for symbol mentions and write conduit_mentions_symbol edges to brain_page_edges; gracefully no-ops when conduit.db or nexus.db is absent","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"profile.view","description":"nexus.profile.view (query) — list all user-profile traits, optionally filtered by minimum confidence","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"minConfidence","type":"number","required":false,"description":"Minimum confidence threshold in [0.0, 1.0]. Defaults to 0.0."},{"name":"includeSuperseded","type":"boolean","required":false,"description":"Include superseded (deprecated) traits. Defaults to false."}]},{"gateway":"query","domain":"nexus","operation":"profile.get","description":"nexus.profile.get (query) — fetch a single user-profile trait by key","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["traitKey"],"params":[{"name":"traitKey","type":"string","required":true,"description":"Trait key to retrieve (e.g. \\"prefers-zero-deps\\")","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"profile.import","description":"nexus.profile.import (mutate) — import user-profile traits from a portable JSON file (default: ~/.cleo/user_profile.json)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"path","type":"string","required":false,"description":"Absolute path to the JSON file. Defaults to ~/.cleo/user_profile.json."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.export","description":"nexus.profile.export (mutate) — export user-profile traits to a portable JSON file (default: ~/.cleo/user_profile.json)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"path","type":"string","required":false,"description":"Absolute output path. Defaults to ~/.cleo/user_profile.json."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.reinforce","description":"nexus.profile.reinforce (mutate) — increment reinforcement count and boost confidence for a user-profile trait","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["traitKey"],"params":[{"name":"traitKey","type":"string","required":true,"description":"Key of the trait to reinforce","cli":{"positional":true}},{"name":"source","type":"string","required":false,"description":"Source identifier for this reinforcement event. Defaults to \\"manual\\"."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.upsert","description":"nexus.profile.upsert (mutate) — create or update a user-profile trait in nexus.db","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["trait"],"params":[{"name":"trait","type":"string","required":true,"description":"UserProfileTrait JSON object with traitKey, traitValue, confidence, source (accepted as JSON string at CLI boundary; parsed in dispatch handler)"}]},{"gateway":"mutate","domain":"nexus","operation":"profile.supersede","description":"nexus.profile.supersede (mutate) — mark a user-profile trait as superseded by another (T1139 supersession prep)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["oldKey","newKey"],"params":[{"name":"oldKey","type":"string","required":true,"description":"Trait key being deprecated"},{"name":"newKey","type":"string","required":true,"description":"Trait key that replaces the old one"}]},{"gateway":"query","domain":"nexus","operation":"sigil.list","description":"nexus.sigil.list (query) — list every sigil currently stored in nexus.db, optionally filtered by role","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"role","type":"string","required":false,"description":"Filter by role (e.g. \\"orchestrator\\", \\"lead\\", \\"worker\\", \\"specialist\\", \\"subagent\\")"}]},{"gateway":"mutate","domain":"nexus","operation":"sigil.sync","description":"nexus.sigil.sync (mutate) — populate the sigils table with one row per canonical CANT agent (cleo-subagent + 5 seed roles + 2 meta agents). Idempotent.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"clusters","description":"nexus.clusters (query) — list all detected Louvain community clusters for a project from nexus.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"}]},{"gateway":"query","domain":"nexus","operation":"flows","description":"nexus.flows (query) — list all detected execution flow nodes for a project from nexus.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"}]},{"gateway":"query","domain":"nexus","operation":"context","description":"nexus.context (query) — show callers, callees, community membership, and process participation for a code symbol","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name to look up","cli":{"positional":true}},{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"limit","type":"number","required":false,"description":"Max callers/callees per side (default: 20)"},{"name":"content","type":"boolean","required":false,"description":"Append source code content"}]},{"gateway":"query","domain":"nexus","operation":"projects.list","description":"nexus.projects.list (query) — list all projects registered in the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"projects.register","description":"nexus.projects.register (mutate) — register a project in the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["path"],"params":[{"name":"path","type":"string","required":true,"description":"Path to the project directory","cli":{"positional":true}},{"name":"name","type":"string","required":false,"description":"Custom project name"}]},{"gateway":"mutate","domain":"nexus","operation":"projects.remove","description":"nexus.projects.remove (mutate) — remove a project from the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["nameOrHash"],"params":[{"name":"nameOrHash","type":"string","required":true,"description":"Project name or hash to remove","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"projects.scan","description":"nexus.projects.scan (mutate) — walk filesystem roots to discover unregistered .cleo/ project directories","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"roots","type":"string","required":false,"description":"Comma-separated search roots"},{"name":"maxDepth","type":"number","required":false,"description":"Maximum traversal depth (default: 4)"},{"name":"autoRegister","type":"boolean","required":false,"description":"Auto-register discovered projects"},{"name":"includeExisting","type":"boolean","required":false,"description":"Also report already-registered projects"}]},{"gateway":"mutate","domain":"nexus","operation":"projects.clean","description":"nexus.projects.clean (mutate) — bulk-purge project registry rows matching configurable criteria","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dryRun","type":"boolean","required":false,"description":"Dry-run only (no deletions)"},{"name":"pattern","type":"string","required":false,"description":"JS regex matched against project_path"},{"name":"includeTemp","type":"boolean","required":false,"description":"Match .temp/ paths"},{"name":"includeTests","type":"boolean","required":false,"description":"Match test/tmp/fixture paths"},{"name":"matchUnhealthy","type":"boolean","required":false,"description":"Match unhealthy rows"},{"name":"matchNeverIndexed","type":"boolean","required":false,"description":"Match never-indexed rows"},{"name":"matchOrphaned","type":"boolean","required":false,"description":"Match rows whose project_path no longer exists on disk (T9117)"},{"name":"removeFs","type":"boolean","required":false,"description":"After DB delete, rm -rf each matched on-disk directory (T9117)"},{"name":"vacuum","type":"boolean","required":false,"description":"After delete, run sqlite VACUUM on nexus.db to reclaim space (T9117)"}]},{"gateway":"mutate","domain":"nexus","operation":"refresh-bridge","description":"nexus.refresh-bridge (mutate) — regenerate .cleo/nexus-bridge.md from the existing nexus.db index","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID"}]},{"gateway":"query","domain":"nexus","operation":"diff","description":"nexus.diff (query) — compare NEXUS index state between two git commits; shows new/removed relations and broken call chains","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"beforeRef","type":"string","required":false,"description":"Git ref for \\"before\\" snapshot (default: HEAD~1)"},{"name":"afterRef","type":"string","required":false,"description":"Git ref for \\"after\\" snapshot (default: HEAD)"},{"name":"repoPath","type":"string","required":false,"description":"Repository path (default: cwd)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID"}]},{"gateway":"query","domain":"nexus","operation":"query-cte","description":"nexus.query-cte (query) — execute a recursive CTE query against nexus.db; supports template aliases (callers-of, callees-of, co-changed, co-cited, path-between, community-members)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["cte"],"params":[{"name":"cte","type":"string","required":true,"description":"CTE SQL or template alias","cli":{"positional":true}},{"name":"params","type":"string","required":false,"description":"Comma-separated CTE parameters"}]},{"gateway":"query","domain":"nexus","operation":"hot-paths","description":"nexus.hot-paths (query) — list highest-weight relation edges by Hebbian plasticity weight","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum edges to return (default: 20)"}]},{"gateway":"query","domain":"nexus","operation":"hot-nodes","description":"nexus.hot-nodes (query) — list symbols with highest aggregate Hebbian weight","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return (default: 20)"}]},{"gateway":"query","domain":"nexus","operation":"cold-symbols","description":"nexus.cold-symbols (query) — list cold symbols (stale access + low weight) as pruning candidates","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Age threshold in days (default: 30)"}]},{"gateway":"query","domain":"sticky","operation":"list","description":"sticky.list (query) — list sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"sticky","operation":"show","description":"sticky.show (query) — show a specific sticky note","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"add","description":"sticky.add (mutate) — create a new sticky note","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"content","type":"string","required":true,"description":"content parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"convert","description":"sticky.convert (mutate) — convert sticky to task, memory, task_note, or session_note","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["stickyId","targetType"],"params":[{"name":"stickyId","type":"string","required":true,"description":"ID of the sticky note"},{"name":"targetType","type":"string","required":true,"description":"Target type: task, memory, task_note, or session_note"},{"name":"title","type":"string","required":false,"description":"Optional task title (for task conversion)"},{"name":"memoryType","type":"string","required":false,"description":"Optional memory type (for memory conversion)"},{"name":"taskId","type":"string","required":false,"description":"Target task ID (required for task_note conversion)"},{"name":"sessionId","type":"string","required":false,"description":"Target session ID (optional for session_note conversion, defaults to active session)"}]},{"gateway":"mutate","domain":"sticky","operation":"archive","description":"sticky.archive (mutate) — archive sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"purge","description":"sticky.purge (mutate) — permanently delete sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"orchestrate","operation":"tessera.list","description":"orchestrate.tessera.list (query) — list Tessera templates; absorbs tessera.show via optional id param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Optional template ID for single-item lookup (replaces tessera.show)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"tessera.instantiate","description":"orchestrate.tessera.instantiate (mutate) — instantiate a Tessera template into a chain instance","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["templateId","epicId"],"params":[{"name":"templateId","type":"string","required":true,"description":"templateId parameter","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"epicId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"orchestrate","operation":"classify","description":"orchestrate.classify (query) — classify a request against CANT team registry to route to correct team/lead/protocol","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["request"],"params":[{"name":"request","type":"string","required":true,"description":"The request or task description to classify against team consult-when hints"},{"name":"context","type":"string","required":false,"description":"Optional additional context to improve classification accuracy"}]},{"gateway":"query","domain":"orchestrate","operation":"fanout.status","description":"orchestrate.fanout.status (query) — get status of a running fanout by its manifest entry ID","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["manifestEntryId"],"params":[{"name":"manifestEntryId","type":"string","required":true,"description":"Manifest entry ID returned by orchestrate.fanout"}]},{"gateway":"mutate","domain":"orchestrate","operation":"fanout","description":"orchestrate.fanout (mutate) — fan out N spawn requests in parallel via Promise.allSettled","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["items"],"params":[{"name":"items","type":"array","required":true,"description":"Array of {team, taskId, skill?} objects to fan out"}]},{"gateway":"query","domain":"conduit","operation":"status","description":"conduit.status (query) — check agent connection status and unread count","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to check (defaults to active agent)"}]},{"gateway":"query","domain":"conduit","operation":"peek","description":"conduit.peek (query) — one-shot poll for new messages without acking","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to poll as (defaults to active agent)"},{"name":"limit","type":"number","required":false,"description":"Max messages to fetch (default: 20)"}]},{"gateway":"mutate","domain":"conduit","operation":"start","description":"conduit.start (mutate) — start continuous message polling for the active agent","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to poll as (defaults to active agent)"},{"name":"pollIntervalMs","type":"number","required":false,"description":"Poll interval in milliseconds (default: 5000)"},{"name":"groupConversationIds","type":"array","required":false,"description":"Group conversation IDs to monitor for @mentions"}]},{"gateway":"mutate","domain":"conduit","operation":"stop","description":"conduit.stop (mutate) — stop the active polling loop","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"conduit","operation":"send","description":"conduit.send (mutate) — send a message to an agent or conversation","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"to","type":"string","required":false,"description":"Target agent ID (required if no conversationId)"},{"name":"conversationId","type":"string","required":false,"description":"Target conversation ID (required if no to)"},{"name":"content","type":"string","required":true,"description":"Message content to send"},{"name":"agentId","type":"string","required":false,"description":"Send as this agent (defaults to active agent)"}]},{"gateway":"mutate","domain":"conduit","operation":"publish","description":"conduit.publish (mutate) — publish message to a topic (A2A, T1252)","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["topicName","payload"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to publish to"},{"name":"payload","type":"string","required":true,"description":"Message payload (JSON-stringified object)"},{"name":"agentId","type":"string","required":false,"description":"Publish as this agent (defaults to active agent)"}]},{"gateway":"mutate","domain":"conduit","operation":"subscribe","description":"conduit.subscribe (mutate) — subscribe agent to a topic (A2A, T1252)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["topicName"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to subscribe to"},{"name":"agentId","type":"string","required":false,"description":"Agent to subscribe (defaults to active agent)"},{"name":"filter","type":"string","required":false,"description":"Optional filter expression (JSON-stringified) for subscription"}]},{"gateway":"query","domain":"conduit","operation":"listen","description":"conduit.listen (query) — one-shot poll for topic messages (A2A, T1252)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["topicName"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to poll"},{"name":"agentId","type":"string","required":false,"description":"Agent to poll as (defaults to active agent)"},{"name":"max","type":"number","required":false,"description":"Max messages to return (default: 20)"}]},{"gateway":"query","domain":"intelligence","operation":"predict","description":"Calculate risk score for a task, or predict validation outcome for a stage","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to assess"},{"name":"stage","type":"string","required":false,"description":"Lifecycle stage for validation outcome prediction"}]},{"gateway":"query","domain":"intelligence","operation":"suggest","description":"Suggest verification gate focus for a task","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to analyze"}]},{"gateway":"query","domain":"intelligence","operation":"learn-errors","description":"Extract recurring failure patterns from task and brain history","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum number of patterns to return"}]},{"gateway":"query","domain":"intelligence","operation":"confidence","description":"Score verification confidence for a task based on current gate state","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to score"}]},{"gateway":"query","domain":"intelligence","operation":"match","description":"Match known brain patterns against a task","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to match patterns against"}]},{"gateway":"query","domain":"diagnostics","operation":"status","description":"diagnostics.status (query) — show telemetry opt-in state and DB path","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"diagnostics","operation":"analyze","description":"diagnostics.analyze (query) — aggregate telemetry patterns; surface failing/slow commands and generate BRAIN observations","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Analysis window in days (default: 30)","cli":{"flag":"days","short":"-d"}},{"name":"noBrain","type":"boolean","required":false,"description":"Skip pushing observations to BRAIN","cli":{"flag":"no-brain"}}]},{"gateway":"query","domain":"diagnostics","operation":"export","description":"diagnostics.export (query) — JSON dump of all telemetry events","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Limit export to last N days (default: all)","cli":{"flag":"days","short":"-d"}}]},{"gateway":"mutate","domain":"diagnostics","operation":"enable","description":"diagnostics.enable (mutate) — opt in to anonymous command telemetry; generates stable anonymousId","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"diagnostics","operation":"disable","description":"diagnostics.disable (mutate) — opt out of telemetry collection","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"docs","operation":"add","description":"docs.add (mutate) — attach a local file or URL to a CLEO owner entity (task, session, observation)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["ownerId"],"params":[{"name":"ownerId","type":"string","required":true,"description":"Owner entity ID (e.g. T123, ses_*, O-abc)"},{"name":"file","type":"string","required":false,"description":"Path to local file to attach"},{"name":"url","type":"string","required":false,"description":"Remote URL to attach"},{"name":"desc","type":"string","required":false,"description":"Free-text description"},{"name":"labels","type":"string","required":false,"description":"Comma-separated labels"},{"name":"attachedBy","type":"string","required":false,"description":"Agent identity (defaults to \\"human\\")"}]},{"gateway":"query","domain":"docs","operation":"list","description":"docs.list (query) — list attachments associated with a CLEO owner entity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"task","type":"string","required":false,"description":"Filter by task ID (e.g. T123)"},{"name":"session","type":"string","required":false,"description":"Filter by session ID (e.g. ses_*)"},{"name":"observation","type":"string","required":false,"description":"Filter by observation ID (e.g. O-abc)"}]},{"gateway":"query","domain":"docs","operation":"fetch","description":"docs.fetch (query) — retrieve attachment bytes and metadata by attachment ID or SHA-256","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["attachmentRef"],"params":[{"name":"attachmentRef","type":"string","required":true,"description":"Attachment ID (att_*) or SHA-256 hex"}]},{"gateway":"mutate","domain":"docs","operation":"remove","description":"docs.remove (mutate) — remove an attachment ref from an owner; purges blob when refCount reaches zero","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["attachmentRef","from"],"params":[{"name":"attachmentRef","type":"string","required":true,"description":"Attachment ID (att_*) or SHA-256 hex"},{"name":"from","type":"string","required":true,"description":"Owner entity ID to remove the ref from"}]},{"gateway":"mutate","domain":"docs","operation":"supersede","description":"docs.supersede (mutate) — atomically flip an older doc to \`superseded\` and link both rows via the supersedes/superseded_by self-FK pointers (T10162 · Saga T9855)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["oldSlug","newSlug"],"params":[{"name":"oldSlug","type":"string","required":true,"description":"Slug of the doc being replaced","cli":{"positional":true}},{"name":"newSlug","type":"string","required":true,"description":"Slug of the doc that replaces oldSlug","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional human-readable reason carried back on the response"}]},{"gateway":"query","domain":"docs","operation":"generate","description":"docs.generate (query) — generate llms.txt-format doc summarising all attachments on a CLEO entity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["for"],"params":[{"name":"for","type":"string","required":true,"description":"Target entity ID (e.g. T798, ses_*, O-abc)"},{"name":"attach","type":"boolean","required":false,"description":"Save the generated output as an llms-txt attachment on the target entity"}]},{"gateway":"query","domain":"docs","operation":"llm-output","description":"docs.llm-output (query) — unified LLM output: task export (rich Markdown) or attachment-bundle (llms.txt). Replaces \`docs export\` and \`docs generate\`.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["for"],"params":[{"name":"for","type":"string","required":true,"description":"Target entity ID"},{"name":"mode","type":"string","required":false,"description":"Output mode: task-export|attachment-bundle (auto-detected)"},{"name":"out","type":"string","required":false,"description":"Output file path"},{"name":"includeAttachments","type":"boolean","required":false,"description":"Include attachment manifest (task-export)"},{"name":"includeMemoryRefs","type":"boolean","required":false,"description":"Include memory refs (task-export)"},{"name":"attach","type":"boolean","required":false,"description":"Save as llms-txt attachment (attachment-bundle)"}]},{"gateway":"mutate","domain":"docs","operation":"update","description":"docs.update (mutate) — replace blob content for an existing slug while preserving the slug. New sha256 + new attachment row; the old row stays reachable by ID for history. NO supersession edge (use \`cleo docs supersede\` for that). Audit log entry appended to .cleo/audit/docs-versioning.jsonl (squashed within a 5-min window).","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["slug"],"params":[{"name":"slug","type":"string","required":true,"description":"Slug of the existing attachment to update","cli":{"positional":true}},{"name":"file","type":"string","required":false,"description":"Path to a local file containing the new content"},{"name":"allowExternal","type":"boolean","required":false,"description":"Permit --file to resolve outside the canonical project root; required for explicit external/worktree update ingestion.","cli":{"flag":"allow-external"}},{"name":"content","type":"string","required":false,"description":"Inline UTF-8 content (mutually exclusive with file)"},{"name":"message","type":"string","required":false,"description":"One-line summary describing the change (recorded in the audit log)"},{"name":"status","type":"string","required":false,"enum":["draft","proposed","accepted","superseded","archived","deprecated"],"description":"Override the new lifecycle status. Defaults to \\"draft\\" on every update. Valid: draft|proposed|accepted|superseded|archived|deprecated."},{"name":"dryRun","type":"boolean","required":false,"description":"Preview validation and resulting envelope without mutating attachment rows, blob storage, or audit logs.","cli":{"flag":"dry-run"}},{"name":"strict","type":"boolean","required":false,"description":"Fail body-schema diagnostics instead of surfacing advisory warnings before the write."},{"name":"attachedBy","type":"string","required":false,"description":"Agent identity that performed the update (defaults to \\"human\\")","cli":{"flag":"attached-by"}}]},{"gateway":"mutate","domain":"playbook","operation":"run","description":"playbook.run (mutate) — load a .cantbook by name and execute it via the playbook runtime state machine","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"Playbook name (looks up <name>.cantbook in the configured search path)","cli":{"positional":true}},{"name":"context","type":"string","required":false,"description":"JSON object string seeding the initial run context (e.g. {\\"epicId\\":\\"T999\\"})"}]},{"gateway":"query","domain":"playbook","operation":"status","description":"playbook.status (query) — return the current state of a playbook run from playbook_runs","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Playbook run identifier (FK into playbook_runs.run_id)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"playbook","operation":"resume","description":"playbook.resume (mutate) — resume a paused playbook run once its HITL gate is approved","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Playbook run identifier to resume","cli":{"positional":true}}]},{"gateway":"query","domain":"playbook","operation":"list","description":"playbook.list (query) — enumerate playbook runs with optional status filter (active|completed|pending)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"status","type":"string","required":false,"description":"Filter on status (active|running|pending|paused|completed|failed|cancelled)"},{"name":"epicId","type":"string","required":false,"description":"Filter runs by the epic they belong to"},{"name":"limit","type":"number","required":false,"description":"Maximum number of runs to return"},{"name":"offset","type":"number","required":false,"description":"Skip the first N runs (applied after limit)"}]},{"gateway":"query","domain":"playbook","operation":"validate","description":"playbook.validate (query) — parse and validate a .cantbook file without executing it; exit 0 on success, exit 70 on parse error","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"file","type":"string","required":false,"description":"Absolute or relative path to the .cantbook file","cli":{"positional":true}},{"name":"name","type":"string","required":false,"description":"Playbook name (resolved through the standard search path)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"approve","description":"orchestrate.approve (mutate) — approve a pending playbook approval gate to unblock the run","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["resumeToken"],"params":[{"name":"resumeToken","type":"string","required":true,"description":"HMAC-signed resume token returned when the gate was created","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional justification note recorded on the approval row"},{"name":"approver","type":"string","required":false,"description":"Identity of the approver (defaults to cli-user)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"reject","description":"orchestrate.reject (mutate) — reject a pending playbook approval gate with a mandatory reason","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["resumeToken","reason"],"params":[{"name":"resumeToken","type":"string","required":true,"description":"HMAC-signed resume token returned when the gate was created","cli":{"positional":true}},{"name":"reason","type":"string","required":true,"description":"Justification for the rejection (recorded on the audit row)"},{"name":"approver","type":"string","required":false,"description":"Identity of the rejector (defaults to cli-user)"}]},{"gateway":"query","domain":"orchestrate","operation":"pending","description":"orchestrate.pending (query) — list all approval gates awaiting a decision across every run","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.complete","description":"orchestrate.worktree.complete (mutate) — merge (--no-ff) a task worktree branch into the project default branch (preserves agent commit SHAs per ADR-062) and clean up the worktree. T9548: idempotent (re-run on completed worktree = no-op).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose worktree should be merged and cleaned up"},{"name":"resolve","type":"string","required":false,"description":"T9548 conflict-recovery mode: \\"auto\\" (default — attempt git merge --no-ff) or \\"manual\\" (skip merge, mark worktree as manually-handled in audit log)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.cleanup","description":"orchestrate.worktree.cleanup (mutate) — prune orphaned agent worktrees (e.g. after agent crash or session end)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"olderThanHours","type":"number","required":false,"description":"Remove worktrees idle for longer than this many hours (default: 24)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.prune","description":"orchestrate.worktree.prune (mutate) — prune the worktree for a single completed task, or all orphaned worktrees when no taskId is supplied","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"taskId","type":"string","required":false,"description":"Task ID whose worktree should be pruned (omit for bulk prune)"}]},{"gateway":"query","domain":"sentient","operation":"status","description":"sentient.status (query) — daemon state, kill-switch status, Tier-2 enabled flag, and proposal statistics","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[],"mcpExposed":true},{"gateway":"query","domain":"sentient","operation":"propose.list","description":"sentient.propose.list (query) — list all pending Tier-2 proposals (status=proposed)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum number of proposals to return (default: 50)"}],"mcpExposed":true},{"gateway":"query","domain":"sentient","operation":"propose.diff","description":"sentient.propose.diff (query) — show what a proposal would change (Tier-3 stub)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID","cli":{"positional":true}}]},{"gateway":"query","domain":"sentient","operation":"allowlist.list","description":"sentient.allowlist.list (query) — list owner pubkeys in the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"propose.accept","description":"sentient.propose.accept (mutate) — accept a Tier-2 proposal, transitioning proposed → pending","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID to accept","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sentient","operation":"propose.reject","description":"sentient.propose.reject (mutate) — reject a Tier-2 proposal, transitioning proposed → cancelled","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID to reject","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Human-readable reason for rejection"}]},{"gateway":"mutate","domain":"sentient","operation":"propose.run","description":"sentient.propose.run (mutate) — manually trigger a single Tier-2 propose tick in-process","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"propose.enable","description":"sentient.propose.enable (mutate) — enable Tier-2 autonomous proposal generation (M7 gate)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[],"mcpExposed":true},{"gateway":"mutate","domain":"sentient","operation":"propose.disable","description":"sentient.propose.disable (mutate) — disable Tier-2 autonomous proposal generation","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"allowlist.add","description":"sentient.allowlist.add (mutate) — add a base64-encoded owner pubkey to the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pubkey"],"params":[{"name":"pubkey","type":"string","required":true,"description":"Base64-encoded public key to add"}]},{"gateway":"mutate","domain":"sentient","operation":"allowlist.remove","description":"sentient.allowlist.remove (mutate) — remove a base64-encoded owner pubkey from the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pubkey"],"params":[{"name":"pubkey","type":"string","required":true,"description":"Base64-encoded public key to remove"}]},{"gateway":"query","domain":"release","operation":"gate","description":"release.gate (query) — check all IVTR loops in a release epic have reached the released phase before allowing release.ship (T820 RELEASE-03)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID whose child tasks should be inspected"},{"name":"force","type":"boolean","required":false,"description":"Bypass the IVTR gate — requires explicit owner confirmation"}]},{"gateway":"mutate","domain":"release","operation":"gate","description":"release.gate (mutate) — same IVTR gate check as query.gate; safe in both gateways (no DB writes)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID whose child tasks should be inspected"},{"name":"force","type":"boolean","required":false,"description":"Bypass the IVTR gate — requires explicit owner confirmation"}]},{"gateway":"query","domain":"release","operation":"ivtr-suggest","description":"release.ivtr-suggest (query) — check if all epic tasks are released and suggest cleo release ship (T820 RELEASE-07)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID that just reached the released phase"}]},{"gateway":"mutate","domain":"release","operation":"ivtr-suggest","description":"release.ivtr-suggest (mutate) — same auto-suggest as query.ivtr-suggest; safe in both gateways (no DB writes)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID that just reached the released phase"}]},{"gateway":"mutate","domain":"release","operation":"plan","description":"release.plan (mutate) — build canonical Release Plan envelope, write .cleo/release/<version>.plan.json, INSERT/UPDATE releases row status=planned (T9525 / SPEC-T9345 §4.2).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Candidate version (e.g. v2026.5.80)"},{"name":"epicId","type":"string","required":false,"description":"Epic task ID whose children scope the release (R-303); mutually exclusive with sagaId/taskIds"},{"name":"sagaId","type":"string","required":false,"description":"Saga task ID whose grouped member Epics scope the release; mutually exclusive with epicId/taskIds"},{"name":"taskIds","type":"array","required":false,"description":"Explicit task-list release scope; mutually exclusive with epicId/sagaId (T10088)"},{"name":"scheme","type":"string","required":false,"description":"Versioning scheme: calver | semver | calver-suffix"},{"name":"channel","type":"string","required":false,"description":"Release channel: latest | beta | alpha | rc"},{"name":"hotfix","type":"boolean","required":false,"description":"Mark plan as release_kind=hotfix"},{"name":"dryRun","type":"boolean","required":false,"description":"Compute the plan without writing file or DB row"}]},{"gateway":"mutate","domain":"release","operation":"open","description":"release.open (mutate) — dispatch release-prepare.yml via gh workflow run, UPDATE releases.status to pr-opened (T9530 / SPEC-T9345 §4.3).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version whose plan file lives at .cleo/release/<version>.plan.json"},{"name":"workflow","type":"string","required":false,"description":"Workflow file name (default: release-prepare.yml)"},{"name":"watch","type":"boolean","required":false,"description":"Poll gh run watch until terminal state"},{"name":"commitPlan","type":"boolean","required":false,"description":"Commit plan file before dispatching"}]},{"gateway":"mutate","domain":"release","operation":"reconcile","description":"release.reconcile (mutate) — v2 reconcile verb: backfill the 11 provenance tables from git log + gh api. Single SQLite TX, UPSERT-everywhere, idempotent (T9526 / SPEC-T9345 §4.4).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Version string whose tag has landed on main (e.g. v2026.6.0)"},{"name":"fromWorkflow","type":"boolean","required":false,"description":"Indicates invocation from release-publish.yml (affects logging only)"},{"name":"rollback","type":"boolean","required":false,"description":"Reconcile a rollback rather than a publish (deferred to T9528)"}]},{"gateway":"query","domain":"release","operation":"validate-changelog","description":"release.validate-changelog (query) — validate that CHANGELOG.md contains the canonical \`## [VERSION]\` header per ADR-028 §2.5. Replaces the brittle inline grep in .github/workflows/release.yml (T9937 / Saga T9862).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version (accepts v2026.5.94 or 2026.5.94)","cli":{"positional":true}},{"name":"changelogPath","type":"string","required":false,"description":"Override the CHANGELOG file path (default: <projectRoot>/CHANGELOG.md)"}]},{"gateway":"mutate","domain":"provenance","operation":"backfill","description":"provenance.backfill (mutate) — walk historical git tags from --since forward and populate the 11 provenance tables. UPSERT-everywhere, idempotent, restartable via .cleo/release/backfill-state.json (T9528 / SPEC-T9345 §8.3).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["since"],"params":[{"name":"since","type":"string","required":true,"allowEmpty":true,"description":"Lower-bound version (exclusive). Empty string = walk every reachable tag from the beginning of history."},{"name":"forceOverwrite","type":"boolean","required":false,"description":"UPDATE existing rows on conflict (audit-logged). Default: UPSERT only."},{"name":"dryRun","type":"boolean","required":false,"description":"Enumerate the tag set and return the plan without writing to the DB"},{"name":"resetCheckpoint","type":"boolean","required":false,"description":"Clear .cleo/release/backfill-state.json before starting (do NOT resume)"}]},{"gateway":"query","domain":"provenance","operation":"verify","description":"provenance.verify (query) — READ-ONLY audit of the 11 provenance tables for a release. Checks FK integrity (release_commits, task_commits, pr_commits, pr_tasks, release_changes, release_artifacts), orphan rows, and ADR-051 evidence-atom staleness. Exit code 0 on pass, non-zero on any fail (T9529 / SPEC-T9345 §4.6).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"version","type":"string","required":false,"description":"Release version to verify (e.g. v2026.6.0). Required unless --all is set."},{"name":"all","type":"boolean","required":false,"description":"Verify the most-recent N releases instead of a single version"},{"name":"limit","type":"number","required":false,"description":"How many releases to verify in --all mode (default 5)"}]},{"gateway":"query","domain":"llm","operation":"list","description":"llm.list (query) — list redacted credentials from the multi-credential pool, optionally filtered by provider","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"provider","type":"string","required":false,"description":"Filter to a single provider transport"}]},{"gateway":"query","domain":"llm","operation":"test","description":"llm.test (query) — round-trip ping against the resolved provider; returns latency + response id (tokens never surfaced)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport to probe","cli":{"positional":true}},{"name":"label","type":"string","required":false,"description":"Credential label to pin the test to a specific store entry"},{"name":"model","type":"string","required":false,"description":"Model override (defaults to the provider's implicit fallback)"}]},{"gateway":"query","domain":"llm","operation":"whoami","description":"llm.whoami (query) — resolve every role and report which provider / model / credential would be picked","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"role","type":"string","required":false,"description":"Optional role filter (extraction | consolidation | derivation | hygiene | judgement)"}]},{"gateway":"query","domain":"llm","operation":"auxiliary-status","description":"llm.auxiliary-status (query) — show the active multi-provider auxiliary fallback chain and how to configure it (T9319)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectRoot","type":"string","required":false,"description":"Optional project root for config resolution"}]},{"gateway":"mutate","domain":"llm","operation":"add","description":"llm.add (mutate) — upsert a credential into the multi-credential pool; auto-detects authType from token prefix","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["provider","apiKey"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport","cli":{"positional":true}},{"name":"apiKey","type":"string","required":true,"description":"API key or OAuth bearer token to persist"},{"name":"label","type":"string","required":false,"description":"Human-readable label, unique within provider (default: 'default')"},{"name":"baseUrl","type":"string","required":false,"description":"Optional override for the provider base URL"},{"name":"authType","type":"string","required":false,"description":"Explicit auth type override ('api_key' | 'oauth' | 'aws_sdk')"},{"name":"priority","type":"number","required":false,"description":"Optional priority override (lower wins)"}]},{"gateway":"mutate","domain":"llm","operation":"remove","description":"llm.remove (mutate) — delete a (provider, label) credential pair from the pool","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider","label"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport","cli":{"positional":true}},{"name":"label","type":"string","required":true,"description":"Label of the credential to remove"}]},{"gateway":"mutate","domain":"llm","operation":"use","description":"llm.use (mutate) — set llm.default.{provider,model} in the global config","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport to mark as default","cli":{"positional":true}},{"name":"model","type":"string","required":false,"description":"Optional default model identifier"}]},{"gateway":"mutate","domain":"llm","operation":"profile","description":"llm.profile (mutate) — pin a role to a specific provider / model / credential label","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["role","provider"],"params":[{"name":"role","type":"string","required":true,"description":"Role name (extraction | consolidation | derivation | hygiene | judgement)","cli":{"positional":true}},{"name":"provider","type":"string","required":true,"description":"Provider transport for this role","cli":{"positional":true}},{"name":"model","type":"string","required":false,"description":"Optional model identifier for this role"},{"name":"credentialLabel","type":"string","required":false,"description":"Optional credential label to pin this role to a specific store entry"}]},{"gateway":"query","domain":"upgrade","operation":"workflows","description":"upgrade.workflows (query) — re-render the four release-pipeline workflow templates and report drift against .github/workflows/release-*.yml. Read-only (forces dryRun). Honours .workflow-overrides.yml for operator-declared customizations (T9536).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"includeRendered","type":"boolean","required":false,"description":"Include the freshly rendered YAML in the response (for diff display)"}]},{"gateway":"mutate","domain":"upgrade","operation":"workflows","description":"upgrade.workflows (mutate) — re-render the four release-pipeline workflow templates; with force=true, overwrite drifted files and audit-log to .cleo/audit/upgrade-workflows.jsonl. .workflow-overrides.yml entries are preserved (operator-declared customization). hasDrift flag in the response drives the --check exit-code contract (T9536).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"force","type":"boolean","required":false,"description":"Overwrite drifted files (excluding .workflow-overrides.yml keys)"},{"name":"dryRun","type":"boolean","required":false,"description":"Print the per-template diff without writing"},{"name":"includeRendered","type":"boolean","required":false,"description":"Include the freshly rendered YAML in the response (for diff display)"}]},{"gateway":"query","domain":"worktree","operation":"list","description":"worktree.list (query) — enumerate git worktrees with 5 status categories (active|stale|merged|orphan|locked). Reads tasks.db for owning-task status. 60s git timeout (T9546).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"statusFilter","type":"string","required":false,"description":"Filter to one or more status categories (comma-separated)"},{"name":"staleDays","type":"number","required":false,"description":"Days of inactivity before flagging stale (default 7)"}]},{"gateway":"mutate","domain":"worktree","operation":"prune","description":"worktree.prune (mutate) — remove orphaned worktrees with per-orphan confirmation. Audit-logs to .cleo/audit/worktree-lifecycle.jsonl (T9547).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"paths","type":"array","required":false,"description":"Pre-confirmed paths to remove"},{"name":"dryRun","type":"boolean","required":false,"description":"Enumerate orphans without acting"}]},{"gateway":"mutate","domain":"worktree","operation":"forceUnlock","description":"worktree.forceUnlock (mutate) — remove .git/index.lock and run git worktree unlock for a task. Warns on uncommitted changes (T9547).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose worktree (branch task/T<id>) to unlock"}]},{"gateway":"mutate","domain":"worktree","operation":"adopt","description":"worktree.adopt (mutate) — register an externally-created worktree (e.g. Claude Code Agent isolation:worktree) in the CLEO SSoT. Writes to .cleo/worktrees.json sentinel index and appends audit entry (T9804).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["worktreePath"],"params":[{"name":"worktreePath","type":"string","required":true,"description":"Absolute or relative path to the worktree directory to adopt"},{"name":"source","type":"string","required":false,"description":"Source classification (claude-agent | manual | adopted). Inferred from path when omitted."},{"name":"taskId","type":"string","required":false,"description":"Task ID to associate with this worktree. Extracted from branch name when omitted."},{"name":"actor","type":"string","required":false,"description":"Override actor name written to the audit log."}]},{"gateway":"mutate","domain":"worktree","operation":"destroy","description":"worktree.destroy (mutate) — explicitly destroy the XDG worktree for a task, remove its sentinel index entry, and append an audit-log row to .cleo/audit/worktree-lifecycle.jsonl (T9805 AC1).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose XDG worktree should be destroyed (e.g. T9805).","cli":{"positional":true}},{"name":"force","type":"boolean","required":false,"description":"Force removal even when the worktree has uncommitted changes. Default: false."},{"name":"deleteBranch","type":"boolean","required":false,"description":"Delete the task branch (task/T<id>) after removing the worktree. Default: true."},{"name":"reason","type":"string","required":false,"description":"Free-form reason recorded in the audit log (e.g. pr-merged, manual, idle-timeout). Default: manual."}]},{"gateway":"query","domain":"focus","operation":"show","description":"focus.show (query) — single-envelope orientation for a task, epic, or saga. Aggregates identity + scope + members + blockers + readyWave + attachedDocs + recentActivity + brainContext into ≤ 1 500 tokens.","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Task, Epic, or Saga ID to orient on (e.g. T9973, T9831)"}]},{"gateway":"mutate","domain":"attention","operation":"add","description":"attention.add (mutate · alias jot) — record a scope-keyed working-memory jot. Session/agent identity + current task are auto-resolved from the environment (E0); the item keys to the narrowest scope (agent>task>epic>saga>session>global). No session/agent/task flags by default.","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"content","type":"string","required":true,"description":"The jot content","cli":{"positional":true}},{"name":"tags","type":"array","required":false,"description":"Tags to attach (comma-separated on the CLI)"},{"name":"scope","type":"string","required":false,"description":"Explicit scope escalation: agent|task|epic|saga|session|global (default: narrowest)"},{"name":"ttlSeconds","type":"number","required":false,"description":"Optional time-to-live in seconds (sets expires_at)"}]},{"gateway":"query","domain":"attention","operation":"list","description":"attention.list (query) — list open working-memory jots visible to the calling agent across its resolved scope chain. Optional --scope / --tag filters.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"scope","type":"string","required":false,"description":"Restrict to one scope kind: agent|task|epic|saga|session|global"},{"name":"tags","type":"array","required":false,"description":"Filter by tags (contains-ALL; comma-separated on the CLI)"},{"name":"includeAll","type":"boolean","required":false,"description":"Include non-open (consolidated/discarded) items too. Default: false"},{"name":"limit","type":"number","required":false,"description":"Maximum rows. Default: 50"}]},{"gateway":"query","domain":"attention","operation":"show","description":"attention.show (query) — synonym for attention.list; emits the open working-memory jots for the calling agent within token budget.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"scope","type":"string","required":false,"description":"Restrict to one scope kind: agent|task|epic|saga|session|global"},{"name":"tags","type":"array","required":false,"description":"Filter by tags (contains-ALL; comma-separated on the CLI)"},{"name":"includeAll","type":"boolean","required":false,"description":"Include non-open items too. Default: false"},{"name":"limit","type":"number","required":false,"description":"Maximum rows. Default: 50"}]},{"gateway":"query","domain":"tasks","operation":"context","description":"tasks.context (query) — bounded context pack for a single task. Combines identity + acceptance criteria + blockers + attached docs + graph edges (from tasks.slice) + recent activity within a configurable token budget, with explicit omission tracking and expansion hints.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to build context for (e.g. T10629)","cli":{"positional":true}},{"name":"budgetTokens","type":"number","required":false,"description":"Maximum token budget for the returned pack. Default: 1500"},{"name":"includeAcceptance","type":"boolean","required":false,"description":"Include acceptance criteria in the pack. Default: true"},{"name":"includeBlockers","type":"boolean","required":false,"description":"Include blocker summary in the pack. Default: true"},{"name":"includeDocs","type":"boolean","required":false,"description":"Include attached docs in the pack. Default: true"},{"name":"includeEdges","type":"boolean","required":false,"description":"Include graph edges (upstream/downstream/siblings/related) in the pack. Default: true"},{"name":"includeActivity","type":"boolean","required":false,"description":"Include recent activity (audit log) in the pack. Default: true"},{"name":"activityLimit","type":"number","required":false,"description":"Maximum number of recent activity events. Default: 10"},{"name":"edgeDepth","type":"number","required":false,"description":"Maximum depth for graph edges when includeEdges is true. Default: 1"}]}]"`;
3
+ exports[`operations-registry > OPERATIONS snapshot — zero behavior change across relocation 1`] = `"[{"gateway":"query","domain":"tasks","operation":"show","description":"tasks.show (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"ID of the task to retrieve","cli":{"positional":true}},{"name":"history","type":"boolean","required":false,"description":"Include lifecycle stage history in the response"},{"name":"ivtr-history","type":"boolean","required":false,"description":"Include IVTR phase chain history in the response"},{"name":"relations","type":"boolean","required":false,"description":"Expand relation/doc lists while preserving compact MVI counts"}]},{"gateway":"query","domain":"tasks","operation":"traverse","description":"tasks.traverse (query) — WorkGraph traversal from a task root","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId","direction"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the traversal","cli":{"positional":true}},{"name":"direction","type":"string","required":true,"description":"Traversal direction to project from the root task","enum":["ancestors","descendants","upstream","downstream"]},{"name":"maxDepth","type":"number","required":false,"description":"Maximum traversal depth to include"},{"name":"includeRelations","type":"boolean","required":false,"description":"Include non-containment relation edges"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return"}]},{"gateway":"query","domain":"tasks","operation":"tree","description":"tasks.tree (query) — WorkGraph containment tree projection","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the tree projection","cli":{"positional":true}},{"name":"maxDepth","type":"number","required":false,"description":"Maximum containment depth to include"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return"}]},{"gateway":"query","domain":"tasks","operation":"rollup","description":"tasks.rollup (query) — WorkGraph direct and subtree status/type summary","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the rollup","cli":{"positional":true}},{"name":"expectedDirectRollup","type":"string","required":false,"description":"Optional serialized expected direct rollup for stale-projection diagnostics"}]},{"gateway":"query","domain":"tasks","operation":"frontier","description":"tasks.frontier (query) — WorkGraph ready and blocked frontier under a root","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the frontier","cli":{"positional":true}},{"name":"role","type":"string","required":false,"description":"Optional assignee/role lane filter"}]},{"gateway":"query","domain":"tasks","operation":"workgraph.audit","description":"tasks.workgraph.audit (query) — aggregate WorkGraph hierarchy/traversal/frontier/rollup diagnostics","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["rootId"],"params":[{"name":"rootId","type":"string","required":true,"description":"Root task ID for the WorkGraph audit","cli":{"positional":true}},{"name":"maxDepth","type":"number","required":false,"description":"Maximum descendant depth to include in audit projections"},{"name":"includeRelations","type":"boolean","required":false,"description":"Include relation-edge diagnostics in the audit result"},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor"},{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return in paginated audit projections"}]},{"gateway":"query","domain":"tasks","operation":"list","description":"tasks.list (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"parent","type":"string","required":false,"description":"Filter by parent task ID"},{"name":"status","type":"string","required":false,"description":"Filter by task status"},{"name":"priority","type":"string","required":false,"description":"Filter by task priority"},{"name":"type","type":"string","required":false,"description":"Filter by task type"},{"name":"phase","type":"string","required":false,"description":"Filter by task phase"},{"name":"label","type":"string","required":false,"description":"Filter by task label"},{"name":"children","type":"boolean","required":false,"description":"Limit parent queries to direct children"},{"name":"limit","type":"number","required":false,"description":"Maximum number of tasks to return"},{"name":"offset","type":"number","required":false,"description":"Number of filtered tasks to skip"},{"name":"compact","type":"boolean","required":false,"description":"Deprecated: request compact task rows for compatibility"}]},{"gateway":"query","domain":"tasks","operation":"find","description":"tasks.find (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"tree","description":"tasks.tree (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"blockers","description":"tasks.blockers (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"depends","description":"tasks.depends (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"deps.validate","description":"tasks.deps.validate (query) — validate dependency graph integrity for an epic or all tasks","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"epicId","type":"string","required":false,"description":"Scope validation to direct children of this epic (optional)"},{"name":"scope","type":"string","required":false,"description":"Which tasks to include: 'all', 'open', or 'critical' (default: 'all')"}]},{"gateway":"query","domain":"tasks","operation":"deps.tree","description":"tasks.deps.tree (query) — render dependency tree for an epic in text, mermaid, or json format","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to visualize (required)"},{"name":"format","type":"string","required":false,"description":"Output format: 'text', 'mermaid', or 'json' (default: 'text')"}]},{"gateway":"query","domain":"tasks","operation":"analyze","description":"tasks.analyze (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"impact","description":"tasks.impact (query) — predict downstream effects of a free-text change description using keyword matching and reverse dependency graph traversal","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["change"],"params":[{"name":"change","type":"string","required":true,"description":"Free-text description of the proposed change (e.g. \\"Modify authentication flow\\")"},{"name":"matchLimit","type":"number","required":false,"description":"Maximum number of seed tasks to match by keyword (default: 5)"}]},{"gateway":"query","domain":"tasks","operation":"next","description":"tasks.next (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"plan","description":"Composite planning view with in-progress epics, ready tasks, blocked tasks, and open bugs (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"completion.list","description":"tasks.completion.list (query) — list typed completion criteria results","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to list completion criteria for","cli":{"positional":true}},{"name":"status","type":"string","required":false,"description":"Optional criterion status filter","enum":["satisfied","unsatisfied","waived","replaced"]},{"name":"kind","type":"string","required":false,"description":"Optional criterion kind filter","enum":["text","evidence_bound","child_task"]}]},{"gateway":"query","domain":"tasks","operation":"completion.evaluate","description":"tasks.completion.evaluate (query) — evaluate completion readiness with typed AC results","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to evaluate completion readiness for","cli":{"positional":true}},{"name":"includeContext","type":"boolean","required":false,"description":"Include bounded audit context pack"},{"name":"limit","type":"number","required":false,"description":"Maximum audit context events when context is included"},{"name":"since","type":"string","required":false,"description":"Lower ISO timestamp bound for audit context"},{"name":"relationDepth","type":"number","required":false,"description":"Related-task audit context depth"}]},{"gateway":"query","domain":"tasks","operation":"completion.explain","description":"tasks.completion.explain (query) — explain completion blockers and stale state","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to explain completion readiness for","cli":{"positional":true}},{"name":"includeContext","type":"boolean","required":false,"description":"Include bounded audit context pack"},{"name":"limit","type":"number","required":false,"description":"Maximum audit context events when context is included"},{"name":"since","type":"string","required":false,"description":"Lower ISO timestamp bound for audit context"},{"name":"relationDepth","type":"number","required":false,"description":"Related-task audit context depth"}]},{"gateway":"mutate","domain":"tasks","operation":"projection.repair","description":"tasks.projection.repair (mutate) — repair stale completion projection state with typed errors","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose completion projection should be repaired","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Preview repair actions without writing projection state"}]},{"gateway":"query","domain":"tasks","operation":"relates","description":"tasks.relates (query) — absorbs relates.find via mode param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"complexity.estimate","description":"tasks.complexity.estimate (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"history","description":"Show task work history (time tracked per task)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"current","description":"tasks.current (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"label.list","description":"List all labels with task counts","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"status","description":"session.status (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"list","description":"session.list (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"status","type":"string","required":false,"description":"Filter by session status"},{"name":"active","type":"boolean","required":false,"description":"Legacy active-session filter"},{"name":"limit","type":"number","required":false,"description":"Maximum sessions to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many sessions before returning results"}]},{"gateway":"query","domain":"session","operation":"show","description":"session.show (query) — absorbs debrief.show via include param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"decision.log","description":"session.decision.log (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"context.drift","description":"session.context.drift (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"handoff.show","description":"session.handoff.show - Show handoff data from the most recent ended session (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"briefing.show","description":"session.briefing.show - Composite session-start context (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"find","description":"session.find (query) — lightweight session discovery","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"session","operation":"lint","description":"session.lint (query) — agent-accountability harness: flag raw-md writes to canonical doc paths in a transcript (T9797)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["transcript"],"params":[{"name":"transcript","type":"string","required":true,"description":"Absolute path to the *.jsonl session transcript to lint"}]},{"gateway":"query","domain":"orchestrate","operation":"status","description":"orchestrate.status (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"ivtr.status","description":"orchestrate.ivtr.status (query) — current IVTR phase + history","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.start","description":"orchestrate.ivtr.start (mutate) — begin Implement phase","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.next","description":"orchestrate.ivtr.next (mutate) — advance to next phase (requires prior evidence)","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.release","description":"orchestrate.ivtr.release (mutate) — final gate, requires I+V+T evidence","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"orchestrate","operation":"ivtr.loop-back","description":"orchestrate.ivtr.loop-back (mutate) — rewind to phase on failure","tier":1,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId","phase","reason"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"phase","type":"string","required":true,"description":"phase parameter"},{"name":"reason","type":"string","required":true,"description":"reason parameter"}]},{"gateway":"query","domain":"orchestrate","operation":"next","description":"orchestrate.next (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"ready","description":"orchestrate.ready (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"analyze","description":"orchestrate.analyze (query) — absorbs critical.path via mode param; Wave 7a adds mode=\\"parallel-safety\\"","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"epicId","type":"string","required":false,"description":"Epic ID for standard analysis (required unless mode=critical-path or parallel-safety)"},{"name":"mode","type":"string","required":false,"description":"Analysis mode: omit for standard analysis, \\"critical-path\\" for CPM, \\"parallel-safety\\" for dep-graph grouping"},{"name":"taskIds","type":"array","required":false,"description":"Task ID list for mode=\\"parallel-safety\\" — returns {parallelSafe, groups} dep-graph analysis"}]},{"gateway":"query","domain":"orchestrate","operation":"context","description":"orchestrate.context (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"waves","description":"orchestrate.waves (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"report","description":"orchestrate.report (query) — grouped readiness report: ready, blocked, blockedBy, gate-blocked, invalid (T10631)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to generate the report for","cli":{"positional":true}},{"name":"page","type":"number","required":false,"description":"Page number for paginated output (1-indexed, default 1)"},{"name":"pageSize","type":"number","required":false,"description":"Page size for paginated output (default 50, max 200)"}]},{"gateway":"query","domain":"orchestrate","operation":"plan","description":"orchestrate.plan (query) — deterministic wave+worker plan (T889)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID to emit a plan for","cli":{"positional":true}},{"name":"preferTier","type":"number","required":false,"description":"Preferred resolver tier (0=project, 1=global, 2=packaged)"}]},{"gateway":"query","domain":"orchestrate","operation":"bootstrap","description":"orchestrate.bootstrap (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"orchestrate","operation":"unblock.opportunities","description":"orchestrate.unblock.opportunities (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"find","description":"memory.find (query) — cross-table brain.db FTS5 search","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"agent","type":"string","required":false,"description":"Filter results to observations produced by the named agent (T418 mental models)","cli":{"flag":"--agent <name>"}}]},{"gateway":"query","domain":"memory","operation":"timeline","description":"memory.timeline (query) — chronological context around anchor","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["anchor"],"params":[{"name":"anchor","type":"string","required":true,"description":"anchor parameter"}]},{"gateway":"query","domain":"memory","operation":"fetch","description":"memory.fetch (query) — batch fetch brain entries by IDs","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["ids"],"params":[{"name":"ids","type":"string","required":true,"description":"ids parameter"}]},{"gateway":"query","domain":"memory","operation":"decision.find","description":"memory.decision.find (query) — search decisions in brain.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"pattern.find","description":"memory.pattern.find (query) — search BRAIN pattern memory by type, impact, or keyword","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"learning.find","description":"memory.learning.find (query) — search BRAIN learning memory by confidence, actionability, or keyword","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"graph.show","description":"memory.graph.show (query) — get a PageIndex graph node and its edges","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.neighbors","description":"memory.graph.neighbors (query) — get neighbor nodes from the PageIndex graph","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.trace","description":"memory.graph.trace (query) — BFS traversal from a seed node via recursive CTE (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.related","description":"memory.graph.related (query) — 1-hop typed neighbours of a brain graph node (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.context","description":"memory.graph.context (query) — 360-degree context view: node + all edges + neighbours (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["nodeId"],"params":[{"name":"nodeId","type":"string","required":true,"description":"nodeId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"graph.stats","description":"memory.graph.stats (query) — aggregate node and edge counts by type (T535)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"reason.why","description":"memory.reason.why (query) — causal trace through task dependency chains","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"reason.similar","description":"memory.reason.similar (query) — find semantically similar brain entries","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"memory","operation":"search.hybrid","description":"memory.search.hybrid (query) — hybrid search across FTS5, vector, and graph","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"stage.validate","description":"pipeline.stage.validate (query) — absorbs stage.prerequisites in response","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.status","description":"pipeline.stage.status (query) — absorbs stage.gates via include param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.history","description":"pipeline.stage.history (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"stage.guidance","description":"pipeline.stage.guidance (query) — stage-aware LLM prompt guidance (Phase 2). Pi extensions shell out to this on before_agent_start.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"phase.show","description":"Show phase details by slug or current phase (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"phaseId","type":"string","required":false,"description":"Phase slug (omit for current phase)"}]},{"gateway":"query","domain":"pipeline","operation":"phase.list","description":"List all phases with status and task counts (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"manifest.show","description":"pipeline.manifest.show (query) — get manifest entry by ID","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"manifest.list","description":"pipeline.manifest.list (query) — list manifest entries with filters","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"manifest.find","description":"pipeline.manifest.find (query) — search manifest entries by text","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"manifest.stats","description":"pipeline.manifest.stats (query) — manifest statistics","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"chain.show","description":"pipeline.chain.show (query) — get chain definition by ID","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["chainId"],"params":[{"name":"chainId","type":"string","required":true,"description":"chainId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"chain.list","description":"pipeline.chain.list (query) — list all chain definitions","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"schema","description":"check.schema (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["type"],"params":[{"name":"type","type":"string","required":true,"description":"Schema type to validate (todo, config, archive, log, sessions)","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"protocol","description":"check.protocol (query) — absorbs all protocol.* ops via protocolType param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"task","description":"check.task (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"manifest","description":"check.manifest (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"output","description":"check.output (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"compliance.summary","description":"check.compliance.summary (query) — absorbs compliance.violations via detail param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"test","description":"check.test (query) — combined test status and coverage via format param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"test.coverage","description":"check.test.coverage (query) — dedicated test coverage sub-op (T1434)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"coherence","description":"check.coherence (query) — renamed from coherence.check (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"gate.status","description":"check.gate.status (query) — read-only gate state; split from gate.verify (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"archive.stats","description":"check.archive.stats (query) — archive analytics; moved from admin (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"grade","description":"check.grade (query) — grade agent behavioral session; moved from admin (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["sessionId"],"params":[{"name":"sessionId","type":"string","required":true,"description":"sessionId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"grade.list","description":"check.grade.list (query) — list past session grade results; moved from admin (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sessionId","type":"string","required":false,"description":"Filter grades by session ID"},{"name":"limit","type":"number","required":false,"description":"Maximum grade entries to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many grade entries before returning results"}]},{"gateway":"query","domain":"check","operation":"chain.validate","description":"check.chain.validate (query) — validate a WarpChain definition","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["chain"],"params":[{"name":"chain","type":"string","required":true,"description":"chain parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"check","operation":"canon","description":"check.canon (query) — CI gate: detects canon drift between docs and live code (CANONICAL_DOMAINS count, forbidden phrases, required assertions)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"canon.docs","description":"check.canon.docs (query) — CI gate: rejects new *.md files that bypass the docs SSoT (.cleo/canon.yml routing). Scans git diff additions against rawMdPaths whose owning DocKind has rawMdAllowed:false.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"baseRef","type":"string","required":false,"description":"Git revision to diff against (default: origin/main)"}]},{"gateway":"query","domain":"check","operation":"workflow.compliance","description":"check.workflow.compliance (query) — WF-001..WF-005 compliance dashboard; AC rate, session rate, gate rate","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"since","type":"string","required":false,"description":"ISO 8601 date; only include tasks/events on or after this date"}]},{"gateway":"query","domain":"admin","operation":"version","description":"admin.version (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"health","description":"admin.health (query) — absorbs doctor via mode param","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"config.show","description":"admin.config.show (query) — show config value","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"config.presets","description":"admin.config.presets (query) — list all strictness presets with descriptions and values","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"stats","description":"admin.stats (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"context","description":"admin.context (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"context.pull","description":"admin.context.pull (query) — JIT bundle: task details + brain memories + last handoff","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"admin","operation":"runtime","description":"admin.runtime (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"paths","description":"admin.paths (query) — report all CleoOS paths (project + global hub) and scaffolding status","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"job","description":"admin.job (query) — absorbs job.status and job.list via action param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: status (default) or list"},{"name":"status","type":"string","required":false,"description":"Filter jobs by status (for list action)"},{"name":"limit","type":"number","required":false,"description":"Maximum jobs to return (for list action)"},{"name":"offset","type":"number","required":false,"description":"Skip this many jobs before returning results"}]},{"gateway":"query","domain":"admin","operation":"dash","description":"admin.dash (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"roadmap","description":"admin.roadmap (query) — project roadmap from task provenance, epics grouped by status with progress","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"includeHistory","type":"boolean","required":false,"description":"Include release history from CHANGELOG.md"},{"name":"upcomingOnly","type":"boolean","required":false,"description":"Only show pending/upcoming epics (exclude completed)"}]},{"gateway":"query","domain":"admin","operation":"log","description":"admin.log (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"sequence","description":"admin.sequence (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"help","description":"Get operations list and guidance filtered to specified disclosure tier","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier: 0=basic (default), 1=+memory/check, 2=all operations","cli":{"flag":"tier","short":"-t"}},{"name":"verbose","type":"boolean","required":false,"description":"Return full operation objects instead of compact domain-grouped format","cli":{"flag":"verbose"}}]},{"gateway":"query","domain":"tools","operation":"issue.diagnostics","description":"tools.issue.diagnostics (query) — CLEO install integrity check","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.list","description":"tools.skill.list (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.show","description":"tools.skill.show (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.find","description":"tools.skill.find (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.federated.find","description":"tools.skill.federated.find (T9731 federation-aware multi-source query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.dispatch","description":"tools.skill.dispatch (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.verify","description":"tools.skill.verify (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.dependencies","description":"tools.skill.dependencies (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.spawn.providers","description":"List spawn-capable providers by capability (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"skill.catalog","description":"tools.skill.catalog (query) — CAAMP catalog; absorbs catalog.protocols/profiles/resources/info via type param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"type","type":"string","required":false,"description":"Catalog type: protocols, profiles, resources, or info (default)"}]},{"gateway":"query","domain":"tools","operation":"skill.precedence","description":"tools.skill.precedence (query) — absorbs precedence.show and precedence.resolve via action param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: show (default) or resolve"},{"name":"providerId","type":"string","required":false,"description":"Provider ID for resolve action"}]},{"gateway":"query","domain":"tools","operation":"skill.doctor.diagnose","description":"tools.skill.doctor.diagnose (query) — read-only health report on skill storage layout, db drift, orphans, and bridge symlinks","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"verbose","type":"boolean","required":false,"description":"Include per-skill detail in the rendered human-readable summary"}]},{"gateway":"mutate","domain":"tools","operation":"skill.prune.telemetry","description":"tools.skill.prune.telemetry (mutate) — delete skill_usage rows older than --older-than DAYS (default 180)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"olderThanDays","type":"number","required":false,"description":"Age threshold in days (default 180)"},{"name":"dryRun","type":"boolean","required":false,"description":"Return the plan without touching the DB"},{"name":"vacuum","type":"boolean","required":false,"description":"Run VACUUM after the delete to reclaim disk space"}]},{"gateway":"mutate","domain":"tools","operation":"skill.import.hermes","description":"tools.skill.import.hermes (mutate) — migrate ~/.hermes/skills/.usage.json sidecars into CLEO skills.db","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"hermesHome","type":"string","required":false,"description":"Override Hermes home directory (default: $HERMES_HOME or ~/.hermes)"},{"name":"dryRun","type":"boolean","required":false,"description":"Print planned writes without mutating skills.db"}]},{"gateway":"mutate","domain":"tools","operation":"skill.migrate","description":"tools.skill.migrate (mutate) — migrate ~/.local/share/agents/skills into ~/.cleo/skills (SSoT); supports --dry-run preview + --rollback restore","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dryRun","type":"boolean","required":false,"description":"Preview the plan without writing anything"},{"name":"rollback","type":"boolean","required":false,"description":"Restore the legacy tree from the most recent backup tarball"}]},{"gateway":"query","domain":"tools","operation":"skill.stats","description":"tools.skill.stats (query) — Sphere B telemetry rollup; top-N usage, lifecycle / source-type breakdowns, agent-created list","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"top","type":"number","required":false,"description":"Top-N usage rollup limit (default 10)"},{"name":"sinceDays","type":"number","required":false,"description":"Restrict top-N rollup to the last N days (default: all-time)"},{"name":"bySource","type":"boolean","required":false,"description":"Include source-type breakdown facet"},{"name":"byLifecycle","type":"boolean","required":false,"description":"Include lifecycle-state breakdown facet"},{"name":"agentCreated","type":"boolean","required":false,"description":"Include agent-created skill list facet"}]},{"gateway":"query","domain":"tools","operation":"provider.list","description":"tools.provider.list (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.detect","description":"tools.provider.detect (query)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.inject.status","description":"tools.provider.inject.status (query)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"provider.supports","description":"tools.provider.supports (query) - check if provider supports capability","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["providerId","capability"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider ID (e.g., claude-code)"},{"name":"capability","type":"string","required":true,"description":"Capability path in dot notation (e.g., spawn.supportsSubagents)"}]},{"gateway":"query","domain":"tools","operation":"provider.hooks","description":"tools.provider.hooks (query) - list providers by hook event support","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["event"],"params":[{"name":"event","type":"string","required":true,"description":"Hook event to query (e.g., onSessionStart, onToolComplete)"}]},{"gateway":"mutate","domain":"tasks","operation":"add","description":"tasks.add (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["title"],"params":[{"name":"title","type":"string","required":true,"description":"Task title (3–500 characters)","cli":{"positional":true}},{"name":"parent","type":"string","required":false,"description":"Parent task ID (makes this task a subtask)","cli":{"flag":"parent"}},{"name":"priority","type":"string","required":false,"description":"Task priority","enum":["low","medium","high","critical"],"cli":{"flag":"priority","short":"-p"}},{"name":"type","type":"string","required":false,"description":"Task type","enum":["epic","task","subtask"],"cli":{"flag":"type","short":"-t"}},{"name":"size","type":"string","required":false,"description":"Scope size estimate","enum":["small","medium","large"],"cli":{"flag":"size"}},{"name":"description","type":"string","required":false,"description":"Detailed task description (must differ meaningfully from title)","cli":{"flag":"description","short":"-d"}},{"name":"acceptance","type":"array","required":false,"description":"Pipe-separated acceptance criteria (e.g. \\"AC1|AC2|AC3\\")","cli":{"flag":"acceptance"}},{"name":"labels","type":"array","required":false,"description":"Comma-separated labels","cli":{"flag":"labels","short":"-l"}},{"name":"depends","type":"array","required":false,"description":"Comma-separated dependency task IDs","cli":{"flag":"depends","short":"-D"}},{"name":"phase","type":"string","required":false,"description":"Phase slug to assign the task to","cli":{"flag":"phase","short":"-P"}},{"name":"notes","type":"string","required":false,"description":"Initial note entry for the task","cli":{"flag":"notes"}}]},{"gateway":"mutate","domain":"tasks","operation":"add-batch","description":"tasks.add-batch (mutate) — bulk-create N tasks atomically in a single transaction (epic decomposition: 1 call instead of N)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["tasks"],"params":[{"name":"tasks","type":"array","required":true,"description":"Array of task specs to insert atomically (each must have a title)"},{"name":"defaultParent","type":"string","required":false,"description":"Optional default parent task ID applied when a task spec omits parent"},{"name":"dryRun","type":"boolean","required":false,"description":"Validate and predict IDs without writing to the database"}]},{"gateway":"mutate","domain":"tasks","operation":"update","description":"tasks.update (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"complete","description":"tasks.complete (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"cancel","description":"tasks.cancel (mutate) — cancel task (soft terminal state; reversible via tasks.restore)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional human-readable cancellation reason stored on the task"}]},{"gateway":"mutate","domain":"tasks","operation":"delete","description":"tasks.delete (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"archive","description":"tasks.archive (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tasks","operation":"restore","description":"tasks.restore (mutate) — absorbs reopen and unarchive via from param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"reparent","description":"tasks.reparent (mutate) — absorbs promote via newParentId:null","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"reorder","description":"tasks.reorder (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","position"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"position","type":"string","required":true,"description":"position parameter"}]},{"gateway":"mutate","domain":"tasks","operation":"relates.add","description":"tasks.relates.add (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","type"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"type","type":"string","required":true,"description":"type parameter"}]},{"gateway":"mutate","domain":"tasks","operation":"relates.add-batch","description":"tasks.relates.add-batch (mutate) — bulk-add advisory relation edges from a JSON payload ({relations:[...]} or {edges:[...]}); use dryRun to preview without writing.","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"relations","type":"array","required":false,"description":"Array of relation edges ({from|taskId, to|relatedId, type, reason})"},{"name":"edges","type":"array","required":false,"description":"Alias for \`relations\` — array of relation edges"},{"name":"dryRun","type":"boolean","required":false,"description":"Validate and report what would be created without writing"},{"name":"reasonWaiver","type":"string","required":false,"description":"Explicit audit waiver text for edges without per-edge reasons"}]},{"gateway":"mutate","domain":"tasks","operation":"relates.remove","description":"tasks.relates.remove (mutate) — delete a relation between two tasks. Pass \`type\` to scope deletion to a single relation kind; omit to remove any type.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId","relatedId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Source task ID","cli":{"positional":true}},{"name":"relatedId","type":"string","required":true,"description":"Target task ID to remove the relation to","cli":{"positional":true}},{"name":"type","type":"string","required":false,"description":"Optional relation type (blocks|related|duplicates|absorbs|fixes|extends|supersedes). Omit to remove any type.","cli":{"flag":"type"}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.create","description":"tasks.saga.create (mutate) — create a Saga as a first-class TaskType (type=saga) per ADR-083","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["title"],"params":[{"name":"title","type":"string","required":true,"description":"Saga title (3–500 characters)","cli":{"flag":"title"}},{"name":"description","type":"string","required":false,"description":"Saga description","cli":{"flag":"description","short":"-d"}},{"name":"acceptance","type":"array","required":false,"description":"Pipe-separated acceptance criteria","cli":{"flag":"acceptance"}},{"name":"dryRun","type":"boolean","required":false,"description":"Validate and preview without writing task, relation, or doc rows","cli":{"flag":"dry-run"}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.add","description":"tasks.saga.add (mutate) — link an Epic to a Saga via task_relations type=groups","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["sagaId","epicId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID (must have type=saga)","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"Epic task ID to link as member","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.detach","description":"tasks.saga.detach (mutate) — remove a Saga member relation (task_relations type=groups); idempotent; appends to .cleo/audit/saga-detach.jsonl (T10118)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId","memberId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}},{"name":"memberId","type":"string","required":true,"description":"Member task ID to detach from the Saga","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Human-readable reason recorded in the audit log entry"}]},{"gateway":"query","domain":"tasks","operation":"saga.list","description":"tasks.saga.list (query) — list all Sagas (labeled top-level Epics)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tasks","operation":"saga.members","description":"tasks.saga.members (query) — list member Epics linked to a Saga","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}}]},{"gateway":"query","domain":"tasks","operation":"saga.rollup","description":"tasks.saga.rollup (query) — aggregate member Epic statuses (total/done/active/blocked/pending + completionPct)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.repair","description":"tasks.saga.repair (mutate) — detach I5-violating parentId and re-attach via task_relations type=groups; idempotent","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["sagaId"],"params":[{"name":"sagaId","type":"string","required":true,"description":"Saga task ID (must have type=saga)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"saga.reconcile","description":"tasks.saga.reconcile (mutate) — idempotent cron-safe saga auto-close repair; per-saga advisory lock + audit log; supersedes T10098","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sagaId","type":"string","required":false,"description":"Optional saga task ID. Omit to walk every saga.","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Report what would happen without mutating rows or writing audit log"}]},{"gateway":"mutate","domain":"tasks","operation":"saga.migrate-containment","description":"tasks.saga.migrate-containment (mutate) — convert parent_id-based Saga membership to groups relations; idempotent; audits to saga-contain-migration.jsonl","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sagaId","type":"string","required":false,"description":"Optional saga task ID. Omit to migrate all sagas.","cli":{"positional":true}},{"name":"dryRun","type":"boolean","required":false,"description":"Report what would happen without mutating rows or writing audit log"}]},{"gateway":"mutate","domain":"tasks","operation":"start","description":"tasks.start (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"tasks","operation":"stop","description":"tasks.stop (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tasks","operation":"sync.reconcile","description":"tasks.sync.reconcile (mutate) — reconcile external tasks with CLEO as SSoT","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["providerId","externalTasks"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider identifier (e.g. linear, jira, github)"},{"name":"externalTasks","type":"array","required":true,"description":"Array of normalized ExternalTask objects"},{"name":"dryRun","type":"boolean","required":false,"description":"Compute actions without applying them"},{"name":"conflictPolicy","type":"string","required":false,"description":"Conflict resolution: cleo-wins, provider-wins, latest-wins, report-only"},{"name":"defaultPhase","type":"string","required":false,"description":"Default phase for newly created tasks"},{"name":"defaultLabels","type":"array","required":false,"description":"Default labels for newly created tasks"}]},{"gateway":"query","domain":"tasks","operation":"sync.links","description":"tasks.sync.links (query) — list external task links by provider or task ID","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"providerId","type":"string","required":false,"description":"Filter links by provider"},{"name":"taskId","type":"string","required":false,"description":"Filter links by CLEO task ID"}]},{"gateway":"mutate","domain":"tasks","operation":"sync.links.remove","description":"tasks.sync.links.remove (mutate) — remove all external task links for a provider","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["providerId"],"params":[{"name":"providerId","type":"string","required":true,"description":"Provider whose links should be removed"}]},{"gateway":"mutate","domain":"tasks","operation":"claim","description":"tasks.claim (mutate) — claim a task by assigning it to the current session","tier":0,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId","agentId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to claim"},{"name":"agentId","type":"string","required":true,"description":"Agent ID to assign the task to"}]},{"gateway":"mutate","domain":"tasks","operation":"unclaim","description":"tasks.unclaim (mutate) — unclaim a task by removing the current assignee","tier":0,"idempotent":false,"sessionRequired":true,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to unclaim"}]},{"gateway":"mutate","domain":"session","operation":"start","description":"session.start (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"end","description":"session.end (mutate)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"resume","description":"session.resume (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"suspend","description":"session.suspend (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"gc","description":"session.gc (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"record.decision","description":"session.record.decision (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"record.assumption","description":"session.record.assumption (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"session","operation":"adopt","description":"session.adopt — rebind env to a specific session for multi-agent isolation (T9975)","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"sessionId","type":"string","required":true,"description":"Session ID to adopt"}]},{"gateway":"mutate","domain":"orchestrate","operation":"start","description":"orchestrate.start (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"spawn","description":"orchestrate.spawn (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"handoff","description":"orchestrate.handoff (mutate) — composite handoff (context.inject -> session.end -> spawn)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","protocolType"],"params":[{"name":"taskId","type":"string","required":true,"description":"Successor task ID for spawn context"},{"name":"protocolType","type":"string","required":true,"description":"Protocol name for handoff context injection"},{"name":"note","type":"string","required":false,"description":"Optional handoff note persisted through session.end"},{"name":"nextAction","type":"string","required":false,"description":"Optional next action metadata for the handoff payload"},{"name":"variant","type":"string","required":false,"description":"Optional context injection variant"},{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier (0-2)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Caller-provided retry correlation key (reported in metadata)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"spawn.execute","description":"orchestrate.spawn.execute (mutate) — execute spawn for a task using adapter registry","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to spawn"},{"name":"adapterId","type":"string","required":false,"description":"Adapter ID (auto-select if omitted)"},{"name":"protocolType","type":"string","required":false,"description":"Protocol type override"},{"name":"tier","type":"number","required":false,"description":"Progressive disclosure tier (0-2)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"validate","description":"orchestrate.validate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"pivot","description":"orchestrate.pivot (mutate) — record an audited context switch from one task to another (replaces silent reframes)","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["fromTaskId","toTaskId","reason"],"params":[{"name":"fromTaskId","type":"string","required":true,"description":"Currently-active task ID being paused","cli":{"positional":true}},{"name":"toTaskId","type":"string","required":true,"description":"Task ID becoming active in the current session","cli":{"positional":true}},{"name":"reason","type":"string","required":true,"description":"Free-form rationale for the pivot — REQUIRED, no silent pivots"},{"name":"blocksFrom","type":"boolean","required":false,"description":"When true (default), adds toTaskId as a dependency on fromTaskId so it cannot complete before the pivot resolves"}]},{"gateway":"mutate","domain":"orchestrate","operation":"parallel","description":"orchestrate.parallel (mutate) — absorbs parallel.start and parallel.end via action param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["action"],"params":[{"name":"action","type":"string","required":true,"description":"Action: start or end"}]},{"gateway":"mutate","domain":"memory","operation":"observe","description":"memory.observe (mutate) — save observation to brain.db","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":["text"],"params":[{"name":"text","type":"string","required":true,"description":"text parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"decision.store","description":"memory.decision.store (mutate) — store decision to brain.db","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["decision","rationale"],"params":[{"name":"decision","type":"string","required":true,"description":"decision parameter","cli":{"positional":true}},{"name":"rationale","type":"string","required":true,"description":"rationale parameter"}]},{"gateway":"mutate","domain":"memory","operation":"pattern.store","description":"memory.pattern.store (mutate) — store a reusable workflow or anti-pattern in BRAIN pattern memory","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["pattern","context"],"params":[{"name":"pattern","type":"string","required":true,"description":"pattern parameter","cli":{"positional":true}},{"name":"context","type":"string","required":true,"description":"context parameter"}]},{"gateway":"mutate","domain":"memory","operation":"learning.store","description":"memory.learning.store (mutate) — store an insight or lesson learned in BRAIN learning memory","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["insight","source"],"params":[{"name":"insight","type":"string","required":true,"description":"insight parameter","cli":{"positional":true}},{"name":"source","type":"string","required":true,"description":"source parameter"}]},{"gateway":"mutate","domain":"memory","operation":"link","description":"memory.link (mutate) — link brain entry to task","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["taskId","entryId"],"params":[{"name":"taskId","type":"string","required":true,"description":"taskId parameter","cli":{"positional":true}},{"name":"entryId","type":"string","required":true,"description":"entryId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"graph.add","description":"memory.graph.add (mutate) — add a node or edge to the PageIndex graph","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"graph.remove","description":"memory.graph.remove (mutate) — remove a node or edge from the PageIndex graph","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"quality","description":"Memory quality report: retrieval stats, noise ratio, tier distribution","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"code.links","description":"List code_reference edges connecting memories to nexus code symbols","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"code.memories-for-code","description":"Find memories linked to a code symbol via code_reference edges","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"symbol parameter"}]},{"gateway":"query","domain":"memory","operation":"code.for-memory","description":"Find code symbols linked to a memory entry via code_reference edges","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["memoryId"],"params":[{"name":"memoryId","type":"string","required":true,"description":"memoryId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"memory","operation":"code.link","description":"Create code_reference edge from memory to nexus symbol","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["memoryId","codeSymbol"],"params":[{"name":"memoryId","type":"string","required":true,"description":"memoryId parameter","cli":{"positional":true}},{"name":"codeSymbol","type":"string","required":true,"description":"codeSymbol parameter"}]},{"gateway":"mutate","domain":"memory","operation":"code.auto-link","description":"Scan memories for entity references and auto-link to nexus nodes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"doctor","description":"memory.doctor (query) — read-only brain noise scan: detects duplicate-content, missing-type, missing-provenance, orphan-edge, low-confidence, stale-unverified patterns. Used as M7 assert-clean gate for Sentient v1 activation.","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"assert-clean","type":"boolean","required":false,"description":"If true, exit non-zero when any noise patterns are detected (M7 gate for Sentient v1)."}]},{"gateway":"query","domain":"memory","operation":"sweep","description":"memory.sweep (query/mutate) — T1147 W7 BRAIN noise sweep. dry-run: detect noise candidates and write sample JSON to agent-outputs. approve <runId>: apply sweep to live brain tables (sets killSwitch during tx). status: list all noise-sweep-2440 runs. rollback <runId>: discard a staged run without applying changes.","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dry-run","type":"boolean","required":false,"description":"Detect noise candidates without staging DB writes."},{"name":"approve","type":"string","required":false,"description":"Run ID to approve and apply to live tables."},{"name":"status","type":"boolean","required":false,"description":"List recent noise-sweep-2440 runs."},{"name":"rollback","type":"string","required":false,"description":"Run ID to roll back without applying changes."}]},{"gateway":"mutate","domain":"memory","operation":"sweep","description":"memory.sweep (mutate) — T1147 W7 BRAIN noise sweep approve/rollback. approve <runId>: apply sweep to live brain tables. rollback <runId>: discard a staged run without applying changes.","tier":0,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"approve","type":"string","required":false,"description":"Run ID to approve and apply to live tables."},{"name":"rollback","type":"string","required":false,"description":"Run ID to roll back without applying changes."}]},{"gateway":"query","domain":"memory","operation":"llm-status","description":"memory.llm-status (query) — report LLM backend resolution status and extraction readiness","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"pending-verify","description":"memory.pending-verify (query) — list unverified brain entries with citation_count >= threshold","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"minCitations","type":"number","required":false,"description":"Minimum citation count threshold (default: 5)"},{"name":"limit","type":"number","required":false,"description":"Maximum entries to return (default: 50)"}]},{"gateway":"query","domain":"memory","operation":"bridge","description":"memory.bridge (query) — stream brain.db memory-bridge content directly (cli mode default)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"promote-explain","description":"memory.promote-explain (query) — read-only view over STDP weights, retrieval log, and citation_count for a brain entry; returns tier decision and score breakdown","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Brain entry id (e.g. O-abc123, D-def456, P-ghi789, L-jkl012)"}]},{"gateway":"query","domain":"memory","operation":"digest","description":"memory.digest (query) — summarized top-N observations by citation_count for session briefings","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max observations to include in digest (default: 10)"}]},{"gateway":"query","domain":"memory","operation":"recent","description":"memory.recent (query) — tail recent brain_observations with optional filters (since, type, session, tier)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max entries to return (default: 20)"},{"name":"since","type":"string","required":false,"description":"ISO timestamp or duration (e.g. '24h', '7d') to filter from"},{"name":"type","type":"string","required":false,"description":"Filter by observation type (e.g. diary, observation, pattern)"},{"name":"session","type":"string","required":false,"description":"Filter by source_session_id"},{"name":"tier","type":"string","required":false,"description":"Filter by memory_tier (short, medium, long)"}]},{"gateway":"query","domain":"memory","operation":"diary","description":"memory.diary (query) — list observations with type='diary' in reverse chronological order","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Max diary entries to return (default: 20)"}]},{"gateway":"query","domain":"memory","operation":"watch","description":"memory.watch (query) — poll for new brain_observations since a cursor; returns nextCursor for chained polling","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"cursor","type":"string","required":false,"description":"ISO datetime cursor; only observations after this time are returned"},{"name":"limit","type":"number","required":false,"description":"Max events per poll (default: 10)"}]},{"gateway":"mutate","domain":"memory","operation":"diary.write","description":"memory.diary.write (mutate) — store an observation with type='diary' (thin wrapper over observe)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["text"],"params":[{"name":"text","type":"string","required":true,"description":"Diary entry text"},{"name":"title","type":"string","required":false,"description":"Optional title"},{"name":"sourceSessionId","type":"string","required":false,"description":"Session that produced this entry"},{"name":"agent","type":"string","required":false,"description":"Agent provenance"}]},{"gateway":"mutate","domain":"memory","operation":"verify","description":"memory.verify (mutate) — flip verified=1 on a brain entry; requires project-orchestrator or owner identity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Brain entry ID to verify"},{"name":"agent","type":"string","required":false,"description":"Caller identity ('project-orchestrator' or 'owner'). Legacy alias 'cleo-prime' accepted per T1258 E1 migration shim. Omit for terminal invocation."}]},{"gateway":"mutate","domain":"memory","operation":"precompact-flush","description":"memory.precompact-flush (mutate) — flush in-flight brain observations and issue a WAL checkpoint before context window compaction","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"memory","operation":"backfill.list","description":"memory.backfill.list (query) — list staged backfill runs with status (pending/approved/rolled-back)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"backfill.run","description":"memory.backfill.run (mutate) — stage a new graph backfill run (rows held pending approval)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"memory","operation":"backfill.approve","description":"memory.backfill.approve (mutate) — approve a staged backfill run (commits rows to live tables)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Backfill run ID to approve"}]},{"gateway":"mutate","domain":"memory","operation":"backfill.rollback","description":"memory.backfill.rollback (mutate) — rollback a backfill run (removes staged/committed rows)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Backfill run ID to rollback"}]},{"gateway":"mutate","domain":"pipeline","operation":"stage.record","description":"pipeline.stage.record (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.skip","description":"pipeline.stage.skip (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.reset","description":"pipeline.stage.reset (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.gate.pass","description":"pipeline.stage.gate.pass (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"stage.gate.fail","description":"pipeline.stage.gate.fail (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"manifest.append","description":"pipeline.manifest.append (mutate) — append entry to pipeline_manifest (SQLite table per ADR-027)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["entry"],"params":[{"name":"entry","type":"string","required":true,"description":"entry parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"manifest.archive","description":"pipeline.manifest.archive (mutate) — archive old manifest entries","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["beforeDate"],"params":[{"name":"beforeDate","type":"string","required":true,"description":"beforeDate parameter"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.set","description":"Set the active phase","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["phaseId"],"params":[{"name":"phaseId","type":"string","required":true,"description":"Phase slug to set as current"},{"name":"rollback","type":"boolean","required":false,"description":"Allow backward phase movement"},{"name":"force","type":"boolean","required":false,"description":"Skip confirmation prompt"},{"name":"dryRun","type":"boolean","required":false,"description":"Preview changes without modifying files"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.advance","description":"Complete current phase and start next","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"force","type":"boolean","required":false,"description":"Skip validation and interactive prompt"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.rename","description":"Rename a phase and update all task references","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["oldName","newName"],"params":[{"name":"oldName","type":"string","required":true,"description":"oldName parameter"},{"name":"newName","type":"string","required":true,"description":"newName parameter"}]},{"gateway":"mutate","domain":"pipeline","operation":"phase.delete","description":"Delete a phase with task reassignment protection","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["phaseId"],"params":[{"name":"phaseId","type":"string","required":true,"description":"Phase slug to delete"},{"name":"reassignTo","type":"string","required":false,"description":"Reassign tasks to another phase"},{"name":"force","type":"boolean","required":false,"description":"Required safety flag"}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.add","description":"pipeline.chain.add (mutate) — store a validated chain definition","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["chain"],"params":[{"name":"chain","type":"string","required":true,"description":"chain parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.instantiate","description":"pipeline.chain.instantiate (mutate) — create chain instance for epic","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["chainId","epicId"],"params":[{"name":"chainId","type":"string","required":true,"description":"chainId parameter","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"epicId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"chain.advance","description":"pipeline.chain.advance (mutate) — advance instance to next stage","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["instanceId","nextStage"],"params":[{"name":"instanceId","type":"string","required":true,"description":"instanceId parameter","cli":{"positional":true}},{"name":"nextStage","type":"string","required":true,"description":"nextStage parameter"}]},{"gateway":"mutate","domain":"check","operation":"compliance.record","description":"check.compliance.record (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"test.run","description":"check.test.run (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"compliance.sync","description":"check.compliance.sync (mutate) — sync project compliance metrics to global","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"check","operation":"gate.set","description":"check.gate.set (mutate) — write path of former gate.verify; set/reset gates (T5615)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"check","operation":"verify.explain","description":"check.verify.explain (query) — show evidence atoms + gate state for a task in human-readable format (read-only)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to explain verification state for (e.g. T1006)"}]},{"gateway":"query","domain":"pipeline","operation":"release.list","description":"List all releases from release_manifests table","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"release.show","description":"Show details for a specific release version","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"pipeline","operation":"release.channel.show","description":"Show the current release channel based on git branch (latest/beta/alpha)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"pipeline","operation":"release.pr-status","description":"Poll GitHub CI check statuses for the open release PR matching release/v<version> (T9095)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version (e.g. 2026.5.43 or v2026.5.43)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"release.cancel","description":"pipeline.release.cancel (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"pipeline","operation":"release.rollback","description":"pipeline.release.rollback (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"pipeline","operation":"release.rollback.full","description":"Full rollback: delete git tag (local + remote), revert release commit, remove manifest record (T820 RELEASE-05)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"version parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"init","description":"admin.init (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"scaffold-hub","description":"admin.scaffold-hub (mutate) — create CleoOS Hub dirs (global-recipes, pi-extensions, cant-workflows, agents) and seed starter justfile","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"config.set","description":"admin.config.set (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"config.set-preset","description":"admin.config.set-preset (mutate) — apply a strictness preset (strict, standard, minimal)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["preset"],"params":[{"name":"preset","type":"string","required":true,"description":"Preset name: strict | standard | minimal"}]},{"gateway":"query","domain":"admin","operation":"backup","description":"admin.backup (query) — list available backups (read-only)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"backup","description":"admin.backup (mutate) — absorbs restore and backup.restore via action param","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"migrate","description":"admin.migrate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"cleanup","description":"admin.cleanup (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"job.cancel","description":"admin.job.cancel (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"safestop","description":"admin.safestop (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"inject.generate","description":"admin.inject.generate (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.install","description":"tools.skill.install (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.uninstall","description":"tools.skill.uninstall (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"skill.refresh","description":"tools.skill.refresh (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"tools","operation":"provider.inject","description":"tools.provider.inject (mutate)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.list","description":"tools.adapter.list (query) — list all discovered provider adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.show","description":"tools.adapter.show (query) — show details for a specific adapter","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Adapter ID"}]},{"gateway":"query","domain":"tools","operation":"adapter.detect","description":"tools.adapter.detect (query) — detect active providers in current environment","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"tools","operation":"adapter.health","description":"tools.adapter.health (query) — health status for adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Specific adapter ID (omit for all)"}]},{"gateway":"mutate","domain":"tools","operation":"adapter.activate","description":"tools.adapter.activate (mutate) — load and activate a provider adapter","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Adapter ID to activate"}]},{"gateway":"mutate","domain":"tools","operation":"adapter.dispose","description":"tools.adapter.dispose (mutate) — dispose one or all adapters","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Adapter ID (omit to dispose all)"}]},{"gateway":"mutate","domain":"admin","operation":"install.global","description":"Refresh global CLEO setup: provider files, configs, ~/.agents/AGENTS.md","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"token","description":"admin.token (query) — summarize/list/show token telemetry; absorbs token.summary, token.list, token.show via action param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: summary (default), list, or show"},{"name":"tokenId","type":"string","required":false,"description":"Token ID for show action"},{"name":"provider","type":"string","required":false,"description":"Filter by provider"},{"name":"transport","type":"string","required":false,"description":"Filter by transport"},{"name":"domain","type":"string","required":false,"description":"Filter by domain"},{"name":"operationName","type":"string","required":false,"description":"Filter by operation name"},{"name":"sessionId","type":"string","required":false,"description":"Filter by session ID"},{"name":"taskId","type":"string","required":false,"description":"Filter by task ID"},{"name":"limit","type":"number","required":false,"description":"Maximum records to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many records before returning results"}]},{"gateway":"mutate","domain":"admin","operation":"token","description":"admin.token (mutate) — record/delete/clear token telemetry; absorbs token.record, token.delete, token.clear via action param","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"action","type":"string","required":false,"description":"Action: record (default), delete, or clear"},{"name":"tokenId","type":"string","required":false,"description":"Token ID for delete action"}]},{"gateway":"query","domain":"admin","operation":"adr.show","description":"admin.adr.show (query) — retrieve single ADR by ID with frontmatter","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["adrId"],"params":[{"name":"adrId","type":"string","required":true,"description":"adrId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"adr.sync","description":"admin.adr.sync (mutate) — sync .cleo/adrs/ markdown files into architecture_decisions DB table; absorbs adr.validate via validate flag","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"adr.find","description":"admin.adr.find (query) — fuzzy search ADRs; absorbs adr.list when query absent","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"query","type":"string","required":false,"description":"Search query (omit to list all ADRs)"},{"name":"status","type":"string","required":false,"description":"Filter ADRs by status"},{"name":"since","type":"string","required":false,"description":"Filter ADRs created on or after this date"},{"name":"limit","type":"number","required":false,"description":"Maximum ADRs to return"},{"name":"offset","type":"number","required":false,"description":"Skip this many ADRs before returning results"}]},{"gateway":"mutate","domain":"admin","operation":"health","description":"admin.health (mutate) — auto-fix failed health/doctor checks; mode:\\"repair\\" form of admin.health query (T5615)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"context.inject","description":"admin.context.inject (mutate) — inject protocol content into session context; moved from session domain (T5615)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["protocolType"],"params":[{"name":"protocolType","type":"string","required":true,"description":"protocolType parameter"}]},{"gateway":"query","domain":"admin","operation":"export","description":"admin.export (query) — export tasks; absorbs snapshot.export and export.tasks via scope param","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"admin","operation":"import","description":"admin.import (mutate) — import tasks; absorbs snapshot.import and import.tasks via scope param","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["file"],"params":[{"name":"file","type":"string","required":true,"description":"file parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"admin","operation":"detect","description":"Refresh project-context.json — re-detect project type, framework, and LLM hints","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"smoke","description":"admin.smoke (query) — operational smoke test: one read-only query per domain","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"admin","operation":"smoke.provider","description":"admin.smoke.provider (query) — ADR-049 harness sovereignty probe: verify adapter shape, DB locality, hooks, spawn, and agent folder for a named provider","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider ID to probe (claude-code | claude-sdk | codex | cursor | gemini-cli | kimi | openai-sdk | opencode | pi)"}]},{"gateway":"query","domain":"admin","operation":"hooks.matrix","description":"admin.hooks.matrix (query) — cross-provider hook support matrix using CAAMP canonical taxonomy","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"providerIds","type":"string","required":false,"description":"Limit matrix to specific provider IDs (default: all mapped providers)"},{"name":"detectProvider","type":"boolean","required":false,"description":"Detect current runtime provider (default: true)"}]},{"gateway":"query","domain":"admin","operation":"map","description":"admin.map (query) — analyze codebase structure, return structured mapping","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"focus","type":"string","required":false,"description":"Focus analysis on one area: stack, architecture, structure, conventions, testing, integrations, concerns"}]},{"gateway":"mutate","domain":"admin","operation":"map","description":"admin.map (mutate) — analyze codebase and store findings to brain.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"focus","type":"string","required":false,"description":"Focus analysis on one area: stack, architecture, structure, conventions, testing, integrations, concerns"}]},{"gateway":"query","domain":"nexus","operation":"augment","description":"nexus.augment (query) — BM25 symbol context for PreToolUse hooks and search-code","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"Symbol name or pattern"},{"name":"limit","type":"number","required":false,"description":"Max results (default 5)"}]},{"gateway":"query","domain":"nexus","operation":"share.status","description":"nexus.share.status (query) — sharing status","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"share.snapshot.export","description":"nexus.share.snapshot.export (mutate) — export project snapshot","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"share.snapshot.import","description":"nexus.share.snapshot.import (mutate) — import project snapshot","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"status","description":"nexus.status (query) — overall NEXUS health status","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"list","description":"nexus.list (query) — list all registered NEXUS projects","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"show","description":"nexus.show (query) — show a specific project by name or hash","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"}]},{"gateway":"query","domain":"nexus","operation":"resolve","description":"nexus.resolve (query) — resolve a cross-project project:taskId reference; renamed from nexus.query (T5615)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"deps","description":"nexus.deps (query) — cross-project dependency analysis","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"graph","description":"nexus.graph (query) — global dependency graph across all projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"path.show","description":"nexus.path.show (query) — show critical dependency path across projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"blockers.show","description":"nexus.blockers.show (query) — show blocking impact for a task query","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"orphans.list","description":"nexus.orphans.list (query) — list orphaned cross-project dependencies","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"discover","description":"nexus.discover (query) — discover related tasks across registered projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["query"],"params":[{"name":"query","type":"string","required":true,"description":"query parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"nexus","operation":"search","description":"nexus.search (query) — search for patterns across registered projects","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"pattern parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"init","description":"nexus.init (mutate) — initialize NEXUS (creates registry and directories)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"register","description":"nexus.register (mutate) — register a project in NEXUS","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["path"],"params":[{"name":"path","type":"string","required":true,"description":"path parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"unregister","description":"nexus.unregister (mutate) — remove a project from NEXUS","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"}]},{"gateway":"mutate","domain":"nexus","operation":"sync","description":"nexus.sync (mutate) — sync project(s) metadata; absorbs sync.all when name omitted","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"name","type":"string","required":false,"description":"Project name to sync (omit to sync all)"}]},{"gateway":"mutate","domain":"nexus","operation":"permission.set","description":"nexus.permission.set (mutate) — update project permissions","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["name","level"],"params":[{"name":"name","type":"string","required":true,"description":"name parameter"},{"name":"level","type":"string","required":true,"description":"level parameter"}]},{"gateway":"mutate","domain":"nexus","operation":"reconcile","description":"nexus.reconcile (mutate) — reconcile project identity with global nexus registry","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"transfer.preview","description":"nexus.transfer.preview (query) — preview a cross-project task transfer","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskIds","sourceProject","targetProject"],"params":[{"name":"taskIds","type":"array","required":true,"description":"Task IDs to transfer"},{"name":"sourceProject","type":"string","required":true,"description":"Source project name or hash"},{"name":"targetProject","type":"string","required":true,"description":"Target project name or hash"},{"name":"mode","type":"string","required":false,"description":"Transfer mode: 'copy' (default) or 'move'"},{"name":"scope","type":"string","required":false,"description":"Transfer scope: 'subtree' (default) or 'single'"}]},{"gateway":"mutate","domain":"nexus","operation":"transfer","description":"nexus.transfer (mutate) — transfer tasks between NEXUS projects","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["taskIds","sourceProject","targetProject"],"params":[{"name":"taskIds","type":"array","required":true,"description":"Task IDs to transfer"},{"name":"sourceProject","type":"string","required":true,"description":"Source project name or hash"},{"name":"targetProject","type":"string","required":true,"description":"Target project name or hash"},{"name":"mode","type":"string","required":false,"description":"Transfer mode: 'copy' (default) or 'move'"},{"name":"scope","type":"string","required":false,"description":"Transfer scope: 'subtree' (default) or 'single'"},{"name":"onConflict","type":"string","required":false,"description":"Conflict strategy: 'rename' (default), 'skip', 'duplicate', 'fail'"},{"name":"transferBrain","type":"boolean","required":false,"description":"Whether to transfer brain observations (default: false)"}]},{"gateway":"query","domain":"nexus","operation":"top-entries","description":"nexus.top-entries (query) — top-weighted symbols from nexus_relations by weight DESC (Hebbian plasticity aggregate)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum entries to return (default: 20)"},{"name":"kind","type":"string","required":false,"description":"Filter by nexus_nodes.kind (e.g. function, method, class, interface)"}]},{"gateway":"query","domain":"nexus","operation":"impact","description":"nexus.impact (query) — BFS blast radius for a symbol with optional reasons[] path-strings when why=true","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name to analyze (case-insensitive substring match)"},{"name":"why","type":"boolean","required":false,"description":"Append reasons[] per affected symbol (caller count, edge strength, hop depth). Default false"},{"name":"depth","type":"number","required":false,"description":"Maximum BFS depth (default 3, capped at 5)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID (default: auto-detected from cwd)"}]},{"gateway":"query","domain":"nexus","operation":"full-context","description":"nexus.full-context (query) — full 5-substrate Living Brain context for a code symbol (NEXUS callers/callees, BRAIN memories, TASKS, sentient proposals, conduit threads)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID"}]},{"gateway":"query","domain":"nexus","operation":"task-footprint","description":"nexus.task-footprint (query) — full code impact for a task: files, symbols, blast radius, brain observations, decisions, risk tier","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID (e.g., T001)"}]},{"gateway":"query","domain":"nexus","operation":"brain-anchors","description":"nexus.brain-anchors (query) — code anchors for a brain memory entry: linked nexus nodes, tasks that touched them, plasticity signal","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["entryId"],"params":[{"name":"entryId","type":"string","required":true,"description":"Brain entry node ID (e.g., observation:abc123)"}]},{"gateway":"query","domain":"nexus","operation":"why","description":"nexus.why (query) — causal trace: why is a code symbol structured this way? walks BRAIN decisions, observations, and tasks","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID to trace"}]},{"gateway":"query","domain":"nexus","operation":"impact-full","description":"nexus.impact-full (query) — merged structural + task + brain impact report for a code symbol","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name or nexus node ID to analyze"}]},{"gateway":"query","domain":"nexus","operation":"route-map","description":"nexus.route-map (query) — display all routes with their handlers and dependencies for a project (route ID, handler name, HTTP method/path, dep count, caller count)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Project identifier (auto-derived from project root if omitted)"}]},{"gateway":"query","domain":"nexus","operation":"shape-check","description":"nexus.shape-check (query) — check response shape compatibility between a route handler and its callers; returns per-caller compatibility status and recommendations","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["routeSymbol"],"params":[{"name":"routeSymbol","type":"string","required":true,"description":"Route symbol ID (format: <filePath>::<routeName>)"},{"name":"projectId","type":"string","required":false,"description":"Project identifier (auto-derived from project root if omitted)"}]},{"gateway":"query","domain":"nexus","operation":"search-code","description":"nexus.search-code (query) — BM25 search of code symbols in nexus.db; returns symbol names, kinds, file paths, and relevance scores","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pattern"],"params":[{"name":"pattern","type":"string","required":true,"description":"Search query (symbol name, file pattern, or keyword)"},{"name":"limit","type":"number","required":false,"description":"Max results (default: 10)"}]},{"gateway":"query","domain":"nexus","operation":"wiki","description":"nexus.wiki (query) — generate community-grouped wiki index from the nexus code graph; scaffold mode when LOOM provider unavailable","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"outputDir","type":"string","required":false,"description":"Output directory for wiki files (default: <projectRoot>/.cleo/wiki)"},{"name":"communityFilter","type":"string","required":false,"description":"Filter generation to a single community ID (e.g. \\"community:3\\")"},{"name":"incremental","type":"boolean","required":false,"description":"Only regenerate communities whose symbols changed since last wiki run (uses .cleo/wiki-state.json)"}]},{"gateway":"query","domain":"nexus","operation":"contracts-show","description":"nexus.contracts-show (query) — show contract compatibility matrix between two registered projects; matches HTTP/gRPC/topic contracts and returns per-match compatibility scores","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["projectA","projectB"],"params":[{"name":"projectA","type":"string","required":true,"description":"First project name or ID"},{"name":"projectB","type":"string","required":true,"description":"Second project name or ID"}]},{"gateway":"query","domain":"nexus","operation":"task-symbols","description":"nexus.task-symbols (query) — show code symbols touched by a task via task_touches_symbol forward-lookup; returns symbol label, kind, filePath, weight, matchStrategy","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to look up (e.g. T001)"}]},{"gateway":"mutate","domain":"nexus","operation":"contracts-sync","description":"nexus.contracts-sync (mutate) — extract HTTP, gRPC, and topic contracts from a project and store them in nexus.db; idempotent upsert","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd / projectRoot)"},{"name":"projectId","type":"string","required":false,"description":"Override the project ID (default: auto-detected from repoPath)"}]},{"gateway":"mutate","domain":"nexus","operation":"contracts-link-tasks","description":"nexus.contracts-link-tasks (mutate) — link extracted contracts to tasks that touch their source symbols via task_touches_symbol edges; runs git-log task linker","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd / projectRoot)"},{"name":"projectId","type":"string","required":false,"description":"Override the project ID (default: auto-detected from repoPath)"}]},{"gateway":"mutate","domain":"nexus","operation":"conduit-scan","description":"nexus.conduit-scan (mutate) — scan conduit messages for symbol mentions and write conduit_mentions_symbol edges to brain_page_edges; gracefully no-ops when conduit.db or nexus.db is absent","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"profile.view","description":"nexus.profile.view (query) — list all user-profile traits, optionally filtered by minimum confidence","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"minConfidence","type":"number","required":false,"description":"Minimum confidence threshold in [0.0, 1.0]. Defaults to 0.0."},{"name":"includeSuperseded","type":"boolean","required":false,"description":"Include superseded (deprecated) traits. Defaults to false."}]},{"gateway":"query","domain":"nexus","operation":"profile.get","description":"nexus.profile.get (query) — fetch a single user-profile trait by key","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["traitKey"],"params":[{"name":"traitKey","type":"string","required":true,"description":"Trait key to retrieve (e.g. \\"prefers-zero-deps\\")","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"profile.import","description":"nexus.profile.import (mutate) — import user-profile traits from a portable JSON file (default: ~/.cleo/user_profile.json)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"path","type":"string","required":false,"description":"Absolute path to the JSON file. Defaults to ~/.cleo/user_profile.json."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.export","description":"nexus.profile.export (mutate) — export user-profile traits to a portable JSON file (default: ~/.cleo/user_profile.json)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"path","type":"string","required":false,"description":"Absolute output path. Defaults to ~/.cleo/user_profile.json."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.reinforce","description":"nexus.profile.reinforce (mutate) — increment reinforcement count and boost confidence for a user-profile trait","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["traitKey"],"params":[{"name":"traitKey","type":"string","required":true,"description":"Key of the trait to reinforce","cli":{"positional":true}},{"name":"source","type":"string","required":false,"description":"Source identifier for this reinforcement event. Defaults to \\"manual\\"."}]},{"gateway":"mutate","domain":"nexus","operation":"profile.upsert","description":"nexus.profile.upsert (mutate) — create or update a user-profile trait in nexus.db","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["trait"],"params":[{"name":"trait","type":"string","required":true,"description":"UserProfileTrait JSON object with traitKey, traitValue, confidence, source (accepted as JSON string at CLI boundary; parsed in dispatch handler)"}]},{"gateway":"mutate","domain":"nexus","operation":"profile.supersede","description":"nexus.profile.supersede (mutate) — mark a user-profile trait as superseded by another (T1139 supersession prep)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["oldKey","newKey"],"params":[{"name":"oldKey","type":"string","required":true,"description":"Trait key being deprecated"},{"name":"newKey","type":"string","required":true,"description":"Trait key that replaces the old one"}]},{"gateway":"query","domain":"nexus","operation":"sigil.list","description":"nexus.sigil.list (query) — list every sigil currently stored in nexus.db, optionally filtered by role","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"role","type":"string","required":false,"description":"Filter by role (e.g. \\"orchestrator\\", \\"lead\\", \\"worker\\", \\"specialist\\", \\"subagent\\")"}]},{"gateway":"mutate","domain":"nexus","operation":"sigil.sync","description":"nexus.sigil.sync (mutate) — populate the sigils table with one row per canonical CANT agent (cleo-subagent + 5 seed roles + 2 meta agents). Idempotent.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"nexus","operation":"clusters","description":"nexus.clusters (query) — list all detected Louvain community clusters for a project from nexus.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"}]},{"gateway":"query","domain":"nexus","operation":"flows","description":"nexus.flows (query) — list all detected execution flow nodes for a project from nexus.db","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"}]},{"gateway":"query","domain":"nexus","operation":"context","description":"nexus.context (query) — show callers, callees, community membership, and process participation for a code symbol","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["symbol"],"params":[{"name":"symbol","type":"string","required":true,"description":"Symbol name to look up","cli":{"positional":true}},{"name":"projectId","type":"string","required":false,"description":"Override project ID"},{"name":"limit","type":"number","required":false,"description":"Max callers/callees per side (default: 20)"},{"name":"content","type":"boolean","required":false,"description":"Append source code content"}]},{"gateway":"query","domain":"nexus","operation":"projects.list","description":"nexus.projects.list (query) — list all projects registered in the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"nexus","operation":"projects.register","description":"nexus.projects.register (mutate) — register a project in the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["path"],"params":[{"name":"path","type":"string","required":true,"description":"Path to the project directory","cli":{"positional":true}},{"name":"name","type":"string","required":false,"description":"Custom project name"}]},{"gateway":"mutate","domain":"nexus","operation":"projects.remove","description":"nexus.projects.remove (mutate) — remove a project from the global nexus registry","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["nameOrHash"],"params":[{"name":"nameOrHash","type":"string","required":true,"description":"Project name or hash to remove","cli":{"positional":true}}]},{"gateway":"mutate","domain":"nexus","operation":"projects.scan","description":"nexus.projects.scan (mutate) — walk filesystem roots to discover unregistered .cleo/ project directories","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"roots","type":"string","required":false,"description":"Comma-separated search roots"},{"name":"maxDepth","type":"number","required":false,"description":"Maximum traversal depth (default: 4)"},{"name":"autoRegister","type":"boolean","required":false,"description":"Auto-register discovered projects"},{"name":"includeExisting","type":"boolean","required":false,"description":"Also report already-registered projects"}]},{"gateway":"mutate","domain":"nexus","operation":"projects.clean","description":"nexus.projects.clean (mutate) — bulk-purge project registry rows matching configurable criteria","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[{"name":"dryRun","type":"boolean","required":false,"description":"Dry-run only (no deletions)"},{"name":"pattern","type":"string","required":false,"description":"JS regex matched against project_path"},{"name":"includeTemp","type":"boolean","required":false,"description":"Match .temp/ paths"},{"name":"includeTests","type":"boolean","required":false,"description":"Match test/tmp/fixture paths"},{"name":"matchUnhealthy","type":"boolean","required":false,"description":"Match unhealthy rows"},{"name":"matchNeverIndexed","type":"boolean","required":false,"description":"Match never-indexed rows"},{"name":"matchOrphaned","type":"boolean","required":false,"description":"Match rows whose project_path no longer exists on disk (T9117)"},{"name":"removeFs","type":"boolean","required":false,"description":"After DB delete, rm -rf each matched on-disk directory (T9117)"},{"name":"vacuum","type":"boolean","required":false,"description":"After delete, run sqlite VACUUM on nexus.db to reclaim space (T9117)"}]},{"gateway":"mutate","domain":"nexus","operation":"refresh-bridge","description":"nexus.refresh-bridge (mutate) — regenerate .cleo/nexus-bridge.md from the existing nexus.db index","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"repoPath","type":"string","required":false,"description":"Path to project directory (default: cwd)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID"}]},{"gateway":"query","domain":"nexus","operation":"diff","description":"nexus.diff (query) — compare NEXUS index state between two git commits; shows new/removed relations and broken call chains","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"beforeRef","type":"string","required":false,"description":"Git ref for \\"before\\" snapshot (default: HEAD~1)"},{"name":"afterRef","type":"string","required":false,"description":"Git ref for \\"after\\" snapshot (default: HEAD)"},{"name":"repoPath","type":"string","required":false,"description":"Repository path (default: cwd)"},{"name":"projectId","type":"string","required":false,"description":"Override project ID"}]},{"gateway":"query","domain":"nexus","operation":"query-cte","description":"nexus.query-cte (query) — execute a recursive CTE query against nexus.db; supports template aliases (callers-of, callees-of, co-changed, co-cited, path-between, community-members)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["cte"],"params":[{"name":"cte","type":"string","required":true,"description":"CTE SQL or template alias","cli":{"positional":true}},{"name":"params","type":"string","required":false,"description":"Comma-separated CTE parameters"}]},{"gateway":"query","domain":"nexus","operation":"hot-paths","description":"nexus.hot-paths (query) — list highest-weight relation edges by Hebbian plasticity weight","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum edges to return (default: 20)"}]},{"gateway":"query","domain":"nexus","operation":"hot-nodes","description":"nexus.hot-nodes (query) — list symbols with highest aggregate Hebbian weight","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum nodes to return (default: 20)"}]},{"gateway":"query","domain":"nexus","operation":"cold-symbols","description":"nexus.cold-symbols (query) — list cold symbols (stale access + low weight) as pruning candidates","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Age threshold in days (default: 30)"}]},{"gateway":"query","domain":"sticky","operation":"list","description":"sticky.list (query) — list sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"sticky","operation":"show","description":"sticky.show (query) — show a specific sticky note","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"add","description":"sticky.add (mutate) — create a new sticky note","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"content","type":"string","required":true,"description":"content parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"convert","description":"sticky.convert (mutate) — convert sticky to task, memory, task_note, or session_note","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["stickyId","targetType"],"params":[{"name":"stickyId","type":"string","required":true,"description":"ID of the sticky note"},{"name":"targetType","type":"string","required":true,"description":"Target type: task, memory, task_note, or session_note"},{"name":"title","type":"string","required":false,"description":"Optional task title (for task conversion)"},{"name":"memoryType","type":"string","required":false,"description":"Optional memory type (for memory conversion)"},{"name":"taskId","type":"string","required":false,"description":"Target task ID (required for task_note conversion)"},{"name":"sessionId","type":"string","required":false,"description":"Target session ID (optional for session_note conversion, defaults to active session)"}]},{"gateway":"mutate","domain":"sticky","operation":"archive","description":"sticky.archive (mutate) — archive sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sticky","operation":"purge","description":"sticky.purge (mutate) — permanently delete sticky notes","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["stickyId"],"params":[{"name":"stickyId","type":"string","required":true,"description":"stickyId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"orchestrate","operation":"tessera.list","description":"orchestrate.tessera.list (query) — list Tessera templates; absorbs tessera.show via optional id param","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"id","type":"string","required":false,"description":"Optional template ID for single-item lookup (replaces tessera.show)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"tessera.instantiate","description":"orchestrate.tessera.instantiate (mutate) — instantiate a Tessera template into a chain instance","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["templateId","epicId"],"params":[{"name":"templateId","type":"string","required":true,"description":"templateId parameter","cli":{"positional":true}},{"name":"epicId","type":"string","required":true,"description":"epicId parameter","cli":{"positional":true}}]},{"gateway":"query","domain":"orchestrate","operation":"classify","description":"orchestrate.classify (query) — classify a request against CANT team registry to route to correct team/lead/protocol","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["request"],"params":[{"name":"request","type":"string","required":true,"description":"The request or task description to classify against team consult-when hints"},{"name":"context","type":"string","required":false,"description":"Optional additional context to improve classification accuracy"}]},{"gateway":"query","domain":"orchestrate","operation":"fanout.status","description":"orchestrate.fanout.status (query) — get status of a running fanout by its manifest entry ID","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["manifestEntryId"],"params":[{"name":"manifestEntryId","type":"string","required":true,"description":"Manifest entry ID returned by orchestrate.fanout"}]},{"gateway":"mutate","domain":"orchestrate","operation":"fanout","description":"orchestrate.fanout (mutate) — fan out N spawn requests in parallel via Promise.allSettled","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["items"],"params":[{"name":"items","type":"array","required":true,"description":"Array of {team, taskId, skill?} objects to fan out"}]},{"gateway":"query","domain":"conduit","operation":"status","description":"conduit.status (query) — check agent connection status and unread count","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to check (defaults to active agent)"}]},{"gateway":"query","domain":"conduit","operation":"peek","description":"conduit.peek (query) — one-shot poll for new messages without acking","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to poll as (defaults to active agent)"},{"name":"limit","type":"number","required":false,"description":"Max messages to fetch (default: 20)"}]},{"gateway":"mutate","domain":"conduit","operation":"start","description":"conduit.start (mutate) — start continuous message polling for the active agent","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"agentId","type":"string","required":false,"description":"Agent ID to poll as (defaults to active agent)"},{"name":"pollIntervalMs","type":"number","required":false,"description":"Poll interval in milliseconds (default: 5000)"},{"name":"groupConversationIds","type":"array","required":false,"description":"Group conversation IDs to monitor for @mentions"}]},{"gateway":"mutate","domain":"conduit","operation":"stop","description":"conduit.stop (mutate) — stop the active polling loop","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"conduit","operation":"send","description":"conduit.send (mutate) — send a message to an agent or conversation","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"to","type":"string","required":false,"description":"Target agent ID (required if no conversationId)"},{"name":"conversationId","type":"string","required":false,"description":"Target conversation ID (required if no to)"},{"name":"content","type":"string","required":true,"description":"Message content to send"},{"name":"agentId","type":"string","required":false,"description":"Send as this agent (defaults to active agent)"}]},{"gateway":"mutate","domain":"conduit","operation":"publish","description":"conduit.publish (mutate) — publish message to a topic (A2A, T1252)","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["topicName","payload"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to publish to"},{"name":"payload","type":"string","required":true,"description":"Message payload (JSON-stringified object)"},{"name":"agentId","type":"string","required":false,"description":"Publish as this agent (defaults to active agent)"}]},{"gateway":"mutate","domain":"conduit","operation":"subscribe","description":"conduit.subscribe (mutate) — subscribe agent to a topic (A2A, T1252)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["topicName"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to subscribe to"},{"name":"agentId","type":"string","required":false,"description":"Agent to subscribe (defaults to active agent)"},{"name":"filter","type":"string","required":false,"description":"Optional filter expression (JSON-stringified) for subscription"}]},{"gateway":"query","domain":"conduit","operation":"listen","description":"conduit.listen (query) — one-shot poll for topic messages (A2A, T1252)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["topicName"],"params":[{"name":"topicName","type":"string","required":true,"description":"Topic to poll"},{"name":"agentId","type":"string","required":false,"description":"Agent to poll as (defaults to active agent)"},{"name":"max","type":"number","required":false,"description":"Max messages to return (default: 20)"}]},{"gateway":"query","domain":"intelligence","operation":"predict","description":"Calculate risk score for a task, or predict validation outcome for a stage","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to assess"},{"name":"stage","type":"string","required":false,"description":"Lifecycle stage for validation outcome prediction"}]},{"gateway":"query","domain":"intelligence","operation":"suggest","description":"Suggest verification gate focus for a task","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to analyze"}]},{"gateway":"query","domain":"intelligence","operation":"learn-errors","description":"Extract recurring failure patterns from task and brain history","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum number of patterns to return"}]},{"gateway":"query","domain":"intelligence","operation":"confidence","description":"Score verification confidence for a task based on current gate state","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to score"}]},{"gateway":"query","domain":"intelligence","operation":"match","description":"Match known brain patterns against a task","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to match patterns against"}]},{"gateway":"query","domain":"diagnostics","operation":"status","description":"diagnostics.status (query) — show telemetry opt-in state and DB path","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"query","domain":"diagnostics","operation":"analyze","description":"diagnostics.analyze (query) — aggregate telemetry patterns; surface failing/slow commands and generate BRAIN observations","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Analysis window in days (default: 30)","cli":{"flag":"days","short":"-d"}},{"name":"noBrain","type":"boolean","required":false,"description":"Skip pushing observations to BRAIN","cli":{"flag":"no-brain"}}]},{"gateway":"query","domain":"diagnostics","operation":"export","description":"diagnostics.export (query) — JSON dump of all telemetry events","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"days","type":"number","required":false,"description":"Limit export to last N days (default: all)","cli":{"flag":"days","short":"-d"}}]},{"gateway":"mutate","domain":"diagnostics","operation":"enable","description":"diagnostics.enable (mutate) — opt in to anonymous command telemetry; generates stable anonymousId","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"diagnostics","operation":"disable","description":"diagnostics.disable (mutate) — opt out of telemetry collection","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"docs","operation":"add","description":"docs.add (mutate) — attach a local file or URL to a CLEO owner entity (task, session, observation)","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["ownerId"],"params":[{"name":"ownerId","type":"string","required":true,"description":"Owner entity ID (e.g. T123, ses_*, O-abc)"},{"name":"file","type":"string","required":false,"description":"Path to local file to attach"},{"name":"url","type":"string","required":false,"description":"Remote URL to attach"},{"name":"desc","type":"string","required":false,"description":"Free-text description"},{"name":"labels","type":"string","required":false,"description":"Comma-separated labels"},{"name":"attachedBy","type":"string","required":false,"description":"Agent identity (defaults to \\"human\\")"}]},{"gateway":"query","domain":"docs","operation":"list","description":"docs.list (query) — list attachments associated with a CLEO owner entity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"task","type":"string","required":false,"description":"Filter by task ID (e.g. T123)"},{"name":"session","type":"string","required":false,"description":"Filter by session ID (e.g. ses_*)"},{"name":"observation","type":"string","required":false,"description":"Filter by observation ID (e.g. O-abc)"}]},{"gateway":"query","domain":"docs","operation":"fetch","description":"docs.fetch (query) — retrieve attachment bytes and metadata by attachment ID or SHA-256","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["attachmentRef"],"params":[{"name":"attachmentRef","type":"string","required":true,"description":"Attachment ID (att_*) or SHA-256 hex"}]},{"gateway":"mutate","domain":"docs","operation":"remove","description":"docs.remove (mutate) — remove an attachment ref from an owner; purges blob when refCount reaches zero","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["attachmentRef","from"],"params":[{"name":"attachmentRef","type":"string","required":true,"description":"Attachment ID (att_*) or SHA-256 hex"},{"name":"from","type":"string","required":true,"description":"Owner entity ID to remove the ref from"}]},{"gateway":"mutate","domain":"docs","operation":"supersede","description":"docs.supersede (mutate) — atomically flip an older doc to \`superseded\` and link both rows via the supersedes/superseded_by self-FK pointers (T10162 · Saga T9855)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["oldSlug","newSlug"],"params":[{"name":"oldSlug","type":"string","required":true,"description":"Slug of the doc being replaced","cli":{"positional":true}},{"name":"newSlug","type":"string","required":true,"description":"Slug of the doc that replaces oldSlug","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional human-readable reason carried back on the response"}]},{"gateway":"query","domain":"docs","operation":"generate","description":"docs.generate (query) — generate llms.txt-format doc summarising all attachments on a CLEO entity","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["for"],"params":[{"name":"for","type":"string","required":true,"description":"Target entity ID (e.g. T798, ses_*, O-abc)"},{"name":"attach","type":"boolean","required":false,"description":"Save the generated output as an llms-txt attachment on the target entity"}]},{"gateway":"query","domain":"docs","operation":"llm-output","description":"docs.llm-output (query) — unified LLM output: task export (rich Markdown) or attachment-bundle (llms.txt). Replaces \`docs export\` and \`docs generate\`.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["for"],"params":[{"name":"for","type":"string","required":true,"description":"Target entity ID"},{"name":"mode","type":"string","required":false,"description":"Output mode: task-export|attachment-bundle (auto-detected)"},{"name":"out","type":"string","required":false,"description":"Output file path"},{"name":"includeAttachments","type":"boolean","required":false,"description":"Include attachment manifest (task-export)"},{"name":"includeMemoryRefs","type":"boolean","required":false,"description":"Include memory refs (task-export)"},{"name":"attach","type":"boolean","required":false,"description":"Save as llms-txt attachment (attachment-bundle)"}]},{"gateway":"mutate","domain":"docs","operation":"update","description":"docs.update (mutate) — replace blob content for an existing slug while preserving the slug. New sha256 + new attachment row; the old row stays reachable by ID for history. NO supersession edge (use \`cleo docs supersede\` for that). Audit log entry appended to .cleo/audit/docs-versioning.jsonl (squashed within a 5-min window).","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["slug"],"params":[{"name":"slug","type":"string","required":true,"description":"Slug of the existing attachment to update","cli":{"positional":true}},{"name":"file","type":"string","required":false,"description":"Path to a local file containing the new content"},{"name":"allowExternal","type":"boolean","required":false,"description":"Permit --file to resolve outside the canonical project root; required for explicit external/worktree update ingestion.","cli":{"flag":"allow-external"}},{"name":"content","type":"string","required":false,"description":"Inline UTF-8 content (mutually exclusive with file)"},{"name":"message","type":"string","required":false,"description":"One-line summary describing the change (recorded in the audit log)"},{"name":"status","type":"string","required":false,"enum":["draft","proposed","accepted","superseded","archived","deprecated"],"description":"Override the new lifecycle status. Defaults to \\"draft\\" on every update. Valid: draft|proposed|accepted|superseded|archived|deprecated."},{"name":"dryRun","type":"boolean","required":false,"description":"Preview validation and resulting envelope without mutating attachment rows, blob storage, or audit logs.","cli":{"flag":"dry-run"}},{"name":"strict","type":"boolean","required":false,"description":"Fail body-schema diagnostics instead of surfacing advisory warnings before the write."},{"name":"attachedBy","type":"string","required":false,"description":"Agent identity that performed the update (defaults to \\"human\\")","cli":{"flag":"attached-by"}}]},{"gateway":"mutate","domain":"playbook","operation":"run","description":"playbook.run (mutate) — load a .cantbook by name and execute it via the playbook runtime state machine","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["name"],"params":[{"name":"name","type":"string","required":true,"description":"Playbook name (looks up <name>.cantbook in the configured search path)","cli":{"positional":true}},{"name":"context","type":"string","required":false,"description":"JSON object string seeding the initial run context (e.g. {\\"epicId\\":\\"T999\\"})"}]},{"gateway":"query","domain":"playbook","operation":"status","description":"playbook.status (query) — return the current state of a playbook run from playbook_runs","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Playbook run identifier (FK into playbook_runs.run_id)","cli":{"positional":true}}]},{"gateway":"mutate","domain":"playbook","operation":"resume","description":"playbook.resume (mutate) — resume a paused playbook run once its HITL gate is approved","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["runId"],"params":[{"name":"runId","type":"string","required":true,"description":"Playbook run identifier to resume","cli":{"positional":true}}]},{"gateway":"query","domain":"playbook","operation":"list","description":"playbook.list (query) — enumerate playbook runs with optional status filter (active|completed|pending)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"status","type":"string","required":false,"description":"Filter on status (active|running|pending|paused|completed|failed|cancelled)"},{"name":"epicId","type":"string","required":false,"description":"Filter runs by the epic they belong to"},{"name":"limit","type":"number","required":false,"description":"Maximum number of runs to return"},{"name":"offset","type":"number","required":false,"description":"Skip the first N runs (applied after limit)"}]},{"gateway":"query","domain":"playbook","operation":"validate","description":"playbook.validate (query) — parse and validate a .cantbook file without executing it; exit 0 on success, exit 70 on parse error","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"file","type":"string","required":false,"description":"Absolute or relative path to the .cantbook file","cli":{"positional":true}},{"name":"name","type":"string","required":false,"description":"Playbook name (resolved through the standard search path)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"approve","description":"orchestrate.approve (mutate) — approve a pending playbook approval gate to unblock the run","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["resumeToken"],"params":[{"name":"resumeToken","type":"string","required":true,"description":"HMAC-signed resume token returned when the gate was created","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Optional justification note recorded on the approval row"},{"name":"approver","type":"string","required":false,"description":"Identity of the approver (defaults to cli-user)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"reject","description":"orchestrate.reject (mutate) — reject a pending playbook approval gate with a mandatory reason","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["resumeToken","reason"],"params":[{"name":"resumeToken","type":"string","required":true,"description":"HMAC-signed resume token returned when the gate was created","cli":{"positional":true}},{"name":"reason","type":"string","required":true,"description":"Justification for the rejection (recorded on the audit row)"},{"name":"approver","type":"string","required":false,"description":"Identity of the rejector (defaults to cli-user)"}]},{"gateway":"query","domain":"orchestrate","operation":"pending","description":"orchestrate.pending (query) — list all approval gates awaiting a decision across every run","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.complete","description":"orchestrate.worktree.complete (mutate) — merge (--no-ff) a task worktree branch into the project default branch (preserves agent commit SHAs per ADR-062) and clean up the worktree. T9548: idempotent (re-run on completed worktree = no-op).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose worktree should be merged and cleaned up"},{"name":"resolve","type":"string","required":false,"description":"T9548 conflict-recovery mode: \\"auto\\" (default — attempt git merge --no-ff) or \\"manual\\" (skip merge, mark worktree as manually-handled in audit log)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.cleanup","description":"orchestrate.worktree.cleanup (mutate) — prune orphaned agent worktrees (e.g. after agent crash or session end)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"olderThanHours","type":"number","required":false,"description":"Remove worktrees idle for longer than this many hours (default: 24)"}]},{"gateway":"mutate","domain":"orchestrate","operation":"worktree.prune","description":"orchestrate.worktree.prune (mutate) — prune the worktree for a single completed task, or all orphaned worktrees when no taskId is supplied","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"taskId","type":"string","required":false,"description":"Task ID whose worktree should be pruned (omit for bulk prune)"}]},{"gateway":"query","domain":"sentient","operation":"status","description":"sentient.status (query) — daemon state, kill-switch status, Tier-2 enabled flag, and proposal statistics","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[],"mcpExposed":true},{"gateway":"query","domain":"sentient","operation":"propose.list","description":"sentient.propose.list (query) — list all pending Tier-2 proposals (status=proposed)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"limit","type":"number","required":false,"description":"Maximum number of proposals to return (default: 50)"}],"mcpExposed":true},{"gateway":"query","domain":"sentient","operation":"propose.diff","description":"sentient.propose.diff (query) — show what a proposal would change (Tier-3 stub)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID","cli":{"positional":true}}]},{"gateway":"query","domain":"sentient","operation":"allowlist.list","description":"sentient.allowlist.list (query) — list owner pubkeys in the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"propose.accept","description":"sentient.propose.accept (mutate) — accept a Tier-2 proposal, transitioning proposed → pending","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID to accept","cli":{"positional":true}}]},{"gateway":"mutate","domain":"sentient","operation":"propose.reject","description":"sentient.propose.reject (mutate) — reject a Tier-2 proposal, transitioning proposed → cancelled","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Proposal task ID to reject","cli":{"positional":true}},{"name":"reason","type":"string","required":false,"description":"Human-readable reason for rejection"}]},{"gateway":"mutate","domain":"sentient","operation":"propose.run","description":"sentient.propose.run (mutate) — manually trigger a single Tier-2 propose tick in-process","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"propose.enable","description":"sentient.propose.enable (mutate) — enable Tier-2 autonomous proposal generation (M7 gate)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[],"mcpExposed":true},{"gateway":"mutate","domain":"sentient","operation":"propose.disable","description":"sentient.propose.disable (mutate) — disable Tier-2 autonomous proposal generation","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[]},{"gateway":"mutate","domain":"sentient","operation":"allowlist.add","description":"sentient.allowlist.add (mutate) — add a base64-encoded owner pubkey to the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pubkey"],"params":[{"name":"pubkey","type":"string","required":true,"description":"Base64-encoded public key to add"}]},{"gateway":"mutate","domain":"sentient","operation":"allowlist.remove","description":"sentient.allowlist.remove (mutate) — remove a base64-encoded owner pubkey from the sentient allowlist","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["pubkey"],"params":[{"name":"pubkey","type":"string","required":true,"description":"Base64-encoded public key to remove"}]},{"gateway":"query","domain":"release","operation":"gate","description":"release.gate (query) — check all IVTR loops in a release epic have reached the released phase before allowing release.ship (T820 RELEASE-03)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID whose child tasks should be inspected"},{"name":"force","type":"boolean","required":false,"description":"Bypass the IVTR gate — requires explicit owner confirmation"}]},{"gateway":"mutate","domain":"release","operation":"gate","description":"release.gate (mutate) — same IVTR gate check as query.gate; safe in both gateways (no DB writes)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["epicId"],"params":[{"name":"epicId","type":"string","required":true,"description":"Epic ID whose child tasks should be inspected"},{"name":"force","type":"boolean","required":false,"description":"Bypass the IVTR gate — requires explicit owner confirmation"}]},{"gateway":"query","domain":"release","operation":"ivtr-suggest","description":"release.ivtr-suggest (query) — check if all epic tasks are released and suggest cleo release ship (T820 RELEASE-07)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID that just reached the released phase"}]},{"gateway":"mutate","domain":"release","operation":"ivtr-suggest","description":"release.ivtr-suggest (mutate) — same auto-suggest as query.ivtr-suggest; safe in both gateways (no DB writes)","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID that just reached the released phase"}]},{"gateway":"mutate","domain":"release","operation":"plan","description":"release.plan (mutate) — build canonical Release Plan envelope, write .cleo/release/<version>.plan.json, INSERT/UPDATE releases row status=planned (T9525 / SPEC-T9345 §4.2).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Candidate version (e.g. v2026.5.80)"},{"name":"epicId","type":"string","required":false,"description":"Epic task ID whose children scope the release (R-303); mutually exclusive with sagaId/taskIds"},{"name":"sagaId","type":"string","required":false,"description":"Saga task ID whose grouped member Epics scope the release; mutually exclusive with epicId/taskIds"},{"name":"taskIds","type":"array","required":false,"description":"Explicit task-list release scope; mutually exclusive with epicId/sagaId (T10088)"},{"name":"scheme","type":"string","required":false,"description":"Versioning scheme: calver | semver | calver-suffix"},{"name":"channel","type":"string","required":false,"description":"Release channel: latest | beta | alpha | rc"},{"name":"hotfix","type":"boolean","required":false,"description":"Mark plan as release_kind=hotfix"},{"name":"dryRun","type":"boolean","required":false,"description":"Compute the plan without writing file or DB row"}]},{"gateway":"mutate","domain":"release","operation":"open","description":"release.open (mutate) — dispatch release-prepare.yml via gh workflow run, UPDATE releases.status to pr-opened (T9530 / SPEC-T9345 §4.3).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version whose plan file lives at .cleo/release/<version>.plan.json"},{"name":"workflow","type":"string","required":false,"description":"Workflow file name (default: release-prepare.yml)"},{"name":"watch","type":"boolean","required":false,"description":"Poll gh run watch until terminal state"},{"name":"commitPlan","type":"boolean","required":false,"description":"Commit plan file before dispatching"}]},{"gateway":"mutate","domain":"release","operation":"reconcile","description":"release.reconcile (mutate) — v2 reconcile verb: backfill the 11 provenance tables from git log + gh api. Single SQLite TX, UPSERT-everywhere, idempotent (T9526 / SPEC-T9345 §4.4).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Version string whose tag has landed on main (e.g. v2026.6.0)"},{"name":"fromWorkflow","type":"boolean","required":false,"description":"Indicates invocation from release-publish.yml (affects logging only)"},{"name":"rollback","type":"boolean","required":false,"description":"Reconcile a rollback rather than a publish (deferred to T9528)"}]},{"gateway":"query","domain":"release","operation":"validate-changelog","description":"release.validate-changelog (query) — validate that CHANGELOG.md contains the canonical \`## [VERSION]\` header per ADR-028 §2.5. Replaces the brittle inline grep in .github/workflows/release.yml (T9937 / Saga T9862).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["version"],"params":[{"name":"version","type":"string","required":true,"description":"Release version (accepts v2026.5.94 or 2026.5.94)","cli":{"positional":true}},{"name":"changelogPath","type":"string","required":false,"description":"Override the CHANGELOG file path (default: <projectRoot>/CHANGELOG.md)"}]},{"gateway":"mutate","domain":"provenance","operation":"backfill","description":"provenance.backfill (mutate) — walk historical git tags from --since forward and populate the 11 provenance tables. UPSERT-everywhere, idempotent, restartable via .cleo/release/backfill-state.json (T9528 / SPEC-T9345 §8.3).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["since"],"params":[{"name":"since","type":"string","required":true,"allowEmpty":true,"description":"Lower-bound version (exclusive). Empty string = walk every reachable tag from the beginning of history."},{"name":"forceOverwrite","type":"boolean","required":false,"description":"UPDATE existing rows on conflict (audit-logged). Default: UPSERT only."},{"name":"dryRun","type":"boolean","required":false,"description":"Enumerate the tag set and return the plan without writing to the DB"},{"name":"resetCheckpoint","type":"boolean","required":false,"description":"Clear .cleo/release/backfill-state.json before starting (do NOT resume)"}]},{"gateway":"query","domain":"provenance","operation":"verify","description":"provenance.verify (query) — READ-ONLY audit of the 11 provenance tables for a release. Checks FK integrity (release_commits, task_commits, pr_commits, pr_tasks, release_changes, release_artifacts), orphan rows, and ADR-051 evidence-atom staleness. Exit code 0 on pass, non-zero on any fail (T9529 / SPEC-T9345 §4.6).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"version","type":"string","required":false,"description":"Release version to verify (e.g. v2026.6.0). Required unless --all is set."},{"name":"all","type":"boolean","required":false,"description":"Verify the most-recent N releases instead of a single version"},{"name":"limit","type":"number","required":false,"description":"How many releases to verify in --all mode (default 5)"}]},{"gateway":"query","domain":"llm","operation":"list","description":"llm.list (query) — list redacted credentials from the multi-credential pool, optionally filtered by provider","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"provider","type":"string","required":false,"description":"Filter to a single provider transport"}]},{"gateway":"query","domain":"llm","operation":"test","description":"llm.test (query) — round-trip ping against the resolved provider; returns latency + response id (tokens never surfaced)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport to probe","cli":{"positional":true}},{"name":"label","type":"string","required":false,"description":"Credential label to pin the test to a specific store entry"},{"name":"model","type":"string","required":false,"description":"Model override (defaults to the provider's implicit fallback)"}]},{"gateway":"query","domain":"llm","operation":"whoami","description":"llm.whoami (query) — resolve every role and report which provider / model / credential would be picked","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"role","type":"string","required":false,"description":"Optional role filter (extraction | consolidation | derivation | hygiene | judgement)"}]},{"gateway":"query","domain":"llm","operation":"auxiliary-status","description":"llm.auxiliary-status (query) — show the active multi-provider auxiliary fallback chain and how to configure it (T9319)","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"projectRoot","type":"string","required":false,"description":"Optional project root for config resolution"}]},{"gateway":"mutate","domain":"llm","operation":"add","description":"llm.add (mutate) — upsert a credential into the multi-credential pool; auto-detects authType from token prefix","tier":2,"idempotent":false,"sessionRequired":false,"requiredParams":["provider","apiKey"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport","cli":{"positional":true}},{"name":"apiKey","type":"string","required":true,"description":"API key or OAuth bearer token to persist"},{"name":"label","type":"string","required":false,"description":"Human-readable label, unique within provider (default: 'default')"},{"name":"baseUrl","type":"string","required":false,"description":"Optional override for the provider base URL"},{"name":"authType","type":"string","required":false,"description":"Explicit auth type override ('api_key' | 'oauth' | 'aws_sdk')"},{"name":"priority","type":"number","required":false,"description":"Optional priority override (lower wins)"}]},{"gateway":"mutate","domain":"llm","operation":"remove","description":"llm.remove (mutate) — delete a (provider, label) credential pair from the pool","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider","label"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport","cli":{"positional":true}},{"name":"label","type":"string","required":true,"description":"Label of the credential to remove"}]},{"gateway":"mutate","domain":"llm","operation":"use","description":"llm.use (mutate) — set llm.default.{provider,model} in the global config","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["provider"],"params":[{"name":"provider","type":"string","required":true,"description":"Provider transport to mark as default","cli":{"positional":true}},{"name":"model","type":"string","required":false,"description":"Optional default model identifier"}]},{"gateway":"mutate","domain":"llm","operation":"profile","description":"llm.profile (mutate) — pin a role to a specific provider / model / credential label","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":["role","provider"],"params":[{"name":"role","type":"string","required":true,"description":"Role name (extraction | consolidation | derivation | hygiene | judgement)","cli":{"positional":true}},{"name":"provider","type":"string","required":true,"description":"Provider transport for this role","cli":{"positional":true}},{"name":"model","type":"string","required":false,"description":"Optional model identifier for this role"},{"name":"credentialLabel","type":"string","required":false,"description":"Optional credential label to pin this role to a specific store entry"}]},{"gateway":"query","domain":"upgrade","operation":"workflows","description":"upgrade.workflows (query) — re-render the four release-pipeline workflow templates and report drift against .github/workflows/release-*.yml. Read-only (forces dryRun). Honours .workflow-overrides.yml for operator-declared customizations (T9536).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"includeRendered","type":"boolean","required":false,"description":"Include the freshly rendered YAML in the response (for diff display)"}]},{"gateway":"mutate","domain":"upgrade","operation":"workflows","description":"upgrade.workflows (mutate) — re-render the four release-pipeline workflow templates; with force=true, overwrite drifted files and audit-log to .cleo/audit/upgrade-workflows.jsonl. .workflow-overrides.yml entries are preserved (operator-declared customization). hasDrift flag in the response drives the --check exit-code contract (T9536).","tier":2,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"force","type":"boolean","required":false,"description":"Overwrite drifted files (excluding .workflow-overrides.yml keys)"},{"name":"dryRun","type":"boolean","required":false,"description":"Print the per-template diff without writing"},{"name":"includeRendered","type":"boolean","required":false,"description":"Include the freshly rendered YAML in the response (for diff display)"}]},{"gateway":"query","domain":"worktree","operation":"list","description":"worktree.list (query) — enumerate git worktrees with 5 status categories (active|stale|merged|orphan|locked). Reads tasks.db for owning-task status. 60s git timeout (T9546).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"statusFilter","type":"string","required":false,"description":"Filter to one or more status categories (comma-separated)"},{"name":"staleDays","type":"number","required":false,"description":"Days of inactivity before flagging stale (default 7)"}]},{"gateway":"mutate","domain":"worktree","operation":"prune","description":"worktree.prune (mutate) — remove orphaned worktrees with per-orphan confirmation. Audit-logs to .cleo/audit/worktree-lifecycle.jsonl (T9547).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"paths","type":"array","required":false,"description":"Pre-confirmed paths to remove"},{"name":"dryRun","type":"boolean","required":false,"description":"Enumerate orphans without acting"}]},{"gateway":"mutate","domain":"worktree","operation":"forceUnlock","description":"worktree.forceUnlock (mutate) — remove .git/index.lock and run git worktree unlock for a task. Warns on uncommitted changes (T9547).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose worktree (branch task/T<id>) to unlock"}]},{"gateway":"mutate","domain":"worktree","operation":"adopt","description":"worktree.adopt (mutate) — register an externally-created worktree (e.g. Claude Code Agent isolation:worktree) in the CLEO SSoT. Writes to .cleo/worktrees.json sentinel index and appends audit entry (T9804).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["worktreePath"],"params":[{"name":"worktreePath","type":"string","required":true,"description":"Absolute or relative path to the worktree directory to adopt"},{"name":"source","type":"string","required":false,"description":"Source classification (claude-agent | manual | adopted). Inferred from path when omitted."},{"name":"taskId","type":"string","required":false,"description":"Task ID to associate with this worktree. Extracted from branch name when omitted."},{"name":"actor","type":"string","required":false,"description":"Override actor name written to the audit log."}]},{"gateway":"mutate","domain":"worktree","operation":"destroy","description":"worktree.destroy (mutate) — explicitly destroy the XDG worktree for a task, remove its sentinel index entry, and append an audit-log row to .cleo/audit/worktree-lifecycle.jsonl (T9805 AC1).","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID whose XDG worktree should be destroyed (e.g. T9805).","cli":{"positional":true}},{"name":"force","type":"boolean","required":false,"description":"Force removal even when the worktree has uncommitted changes. Default: false."},{"name":"deleteBranch","type":"boolean","required":false,"description":"Delete the task branch (task/T<id>) after removing the worktree. Default: true."},{"name":"reason","type":"string","required":false,"description":"Free-form reason recorded in the audit log (e.g. pr-merged, manual, idle-timeout). Default: manual."}]},{"gateway":"query","domain":"focus","operation":"show","description":"focus.show (query) — single-envelope orientation for a task, epic, or saga. Aggregates identity + scope + members + blockers + readyWave + attachedDocs + recentActivity + brainContext into ≤ 1 500 tokens.","tier":0,"idempotent":true,"sessionRequired":false,"requiredParams":["id"],"params":[{"name":"id","type":"string","required":true,"description":"Task, Epic, or Saga ID to orient on (e.g. T9973, T9831)"}]},{"gateway":"mutate","domain":"attention","operation":"add","description":"attention.add (mutate · alias jot) — record a scope-keyed working-memory jot. Session/agent identity + current task are auto-resolved from the environment (E0); the item keys to the narrowest scope (agent>task>epic>saga>session>global). No session/agent/task flags by default.","tier":1,"idempotent":false,"sessionRequired":false,"requiredParams":["content"],"params":[{"name":"content","type":"string","required":true,"description":"The jot content","cli":{"positional":true}},{"name":"tags","type":"array","required":false,"description":"Tags to attach (comma-separated on the CLI)"},{"name":"scope","type":"string","required":false,"description":"Explicit scope escalation: agent|task|epic|saga|session|global (default: narrowest)"},{"name":"ttlSeconds","type":"number","required":false,"description":"Optional time-to-live in seconds (sets expires_at)"}]},{"gateway":"query","domain":"attention","operation":"list","description":"attention.list (query) — list open working-memory jots visible to the calling agent across its resolved scope chain. Optional --scope / --tag filters.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"scope","type":"string","required":false,"description":"Restrict to one scope kind: agent|task|epic|saga|session|global"},{"name":"tags","type":"array","required":false,"description":"Filter by tags (contains-ALL; comma-separated on the CLI)"},{"name":"includeAll","type":"boolean","required":false,"description":"Include non-open (consolidated/discarded) items too. Default: false"},{"name":"limit","type":"number","required":false,"description":"Maximum rows. Default: 50"}]},{"gateway":"query","domain":"attention","operation":"show","description":"attention.show (query) — synonym for attention.list; emits the open working-memory jots for the calling agent within token budget.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":[],"params":[{"name":"scope","type":"string","required":false,"description":"Restrict to one scope kind: agent|task|epic|saga|session|global"},{"name":"tags","type":"array","required":false,"description":"Filter by tags (contains-ALL; comma-separated on the CLI)"},{"name":"includeAll","type":"boolean","required":false,"description":"Include non-open items too. Default: false"},{"name":"limit","type":"number","required":false,"description":"Maximum rows. Default: 50"}]},{"gateway":"query","domain":"tasks","operation":"context","description":"tasks.context (query) — bounded context pack for a single task. Combines identity + acceptance criteria + blockers + attached docs + graph edges (from tasks.slice) + recent activity within a configurable token budget, with explicit omission tracking and expansion hints.","tier":1,"idempotent":true,"sessionRequired":false,"requiredParams":["taskId"],"params":[{"name":"taskId","type":"string","required":true,"description":"Task ID to build context for (e.g. T10629)","cli":{"positional":true}},{"name":"budgetTokens","type":"number","required":false,"description":"Maximum token budget for the returned pack. Default: 1500"},{"name":"includeAcceptance","type":"boolean","required":false,"description":"Include acceptance criteria in the pack. Default: true"},{"name":"includeBlockers","type":"boolean","required":false,"description":"Include blocker summary in the pack. Default: true"},{"name":"includeDocs","type":"boolean","required":false,"description":"Include attached docs in the pack. Default: true"},{"name":"includeEdges","type":"boolean","required":false,"description":"Include graph edges (upstream/downstream/siblings/related) in the pack. Default: true"},{"name":"includeActivity","type":"boolean","required":false,"description":"Include recent activity (audit log) in the pack. Default: true"},{"name":"activityLimit","type":"number","required":false,"description":"Maximum number of recent activity events. Default: 10"},{"name":"edgeDepth","type":"number","required":false,"description":"Maximum depth for graph edges when includeEdges is true. Default: 1"}]}]"`;